Practice Linux Programming Projects

June 30, 2026 · View on GitHub

Languages

🇨🇳 简体中文 🇯🇵 日本語 🇪🇸 Español 🇫🇷 Français 🇩🇪 Deutsch 🇷🇺 Русский 🇰🇷 한국어 🇧🇷 Português 🇺🇸 English

Practical Linux courses on a structured path for beginners. Follow a clear roadmap from the command line through system administration and shell scripting. Build real skills with hands-on, non-video exercises in an interactive shell playground focused on managing Linux systems and automating tasks.

Projects

Explore 24 beginner-friendly Linux projects that turn core language concepts into small, complete programs. Each project opens in LabEx with a ready-to-use environment, so you can focus on building instead of setup.

Build a Linux System Monitor Using Bash

01. Build a Linux System Monitor Using Bash

In this project, you will learn how to create a Linux system monitor using a shell script. The system monitor will continuously monitor the CPU, memory, and disk usage of your Linux system and display the usage percentages. If any of the thresholds for CPU, memory, or disk usage are exceeded, an alert will be sent. You can customize the threshold values as per your requirements and add your own logic to send alerts.

Level: Beginner · Start project

Build a Task Scheduler Using Bash

02. Build a Task Scheduler Using Bash

This project will guide you through creating a task scheduler using a Bash script. The task scheduler allows you to schedule and manage tasks to be executed at specified intervals, such as hourly, daily, or weekly. The script provides options to list scheduled tasks, add new tasks, and remove existing tasks.

Level: Beginner · Start project

Installing and Configuring a Mail Server

03. Installing and Configuring a Mail Server

In this lab, participants will set up and configure a Postfix mail server on Linux, learning the essentials of email server management and operations.

Level: Beginner · Start project

Configuring SSH Certificates for Secure Login

04. Configuring SSH Certificates for Secure Login

In this project, you will learn how to configure an SSH certificate for the labex user, so that the labex user does not need to enter a password when SSH logging into the local experimental environment.

Level: Beginner · Start project

Creating a Typing Game Using Bash

05. Creating a Typing Game Using Bash

In this project, you will create a simple typing game using a shell script that displays random characters on the screen and challenges you to type them before they disappear, with options to practice typing numbers, letters, a mixture of both, or custom words.

Level: Beginner · Start project

Linux Server Information Retrieval

06. Linux Server Information Retrieval

In this project, you will learn how to retrieve and display system information on a Linux server. The getinfo.sh script you will create can be used to quickly gather important details about the server's hardware, software, and network configuration.

Level: Beginner · Start project

Restore Access to Website

07. Restore Access to Website

In this project, you will learn how to restore access to a website that has been accidentally broken. The website uses Nginx services, which are currently unable to start. Your task is to get the Nginx service running again so that the website can be accessed.

Level: Beginner · Start project

Searching for Specific Files

08. Searching for Specific Files

In this project, you will learn how to search for files in the /etc directory that contain the string 'labex' in their content, and organize the output in a specific format.

Level: Beginner · Start project

Automated Daily System Log Backup

09. Automated Daily System Log Backup

In this project, you will learn how to set up a cron job to automatically back up the system's daily log files. As a system administrator, you may frequently need to perform log backups to ensure the availability and recoverability of important system data.

Level: Beginner · Start project

Chess Board in Terminal

10. Chess Board in Terminal

In this project, you will learn how to create a chess board using Bash scripting. By completing this project, you will gain experience in using nested loops, color printing, and shell scripting.

Level: Intermediate · Start project

Copy Large Files with Preserved Structure

11. Copy Large Files with Preserved Structure

In this project, you will learn how to copy files larger than 10K from the /etc directory to the /tmp/etc directory, preserving the directory structure. This is a useful skill for managing and organizing files on a Linux system.

Level: Beginner · Start project

Customizing Linux File Listing

12. Customizing Linux File Listing

In this project, you will learn how to create a custom ls command that displays the sizes of directories in a user-friendly format. This project will help you understand how to retrieve and format file information in a Linux environment using Zsh scripting.

Level: Beginner · Start project

New Colleague System Account Setup

13. New Colleague System Account Setup

In this project, you will learn how to set up a new user account for a new colleague named Jane on the LabEx testing server. You will create the user account, set the home directory, change the default shell to zsh, and grant sudo privileges to the new user.

Level: Beginner · Start project

Nginx Log Analysis and Optimization

14. Nginx Log Analysis and Optimization

In this project, you will learn how to perform log analysis on an Nginx server's access logs. You will retrieve valuable information from the logs, such as the top IP addresses by access count, the IP addresses that accessed the server a minimum of 10 times, the most accessed requests, and the request addresses with a 404 status.

Level: Beginner · Start project

Users and Groups Creation and Deletion Batch

15. Users and Groups Creation and Deletion Batch

In this project, you will learn how to create and manage user accounts for teachers and students in a classroom server environment. You will use a bash script called userctr.sh to automate the process of adding and deleting user accounts, which can be a tedious task when done manually.

Level: Beginner · Start project

Collect Files From Specified Time

16. Collect Files From Specified Time

In this project, you will learn how to copy files from the /etc directory with a last modified year in 2022 to the /tmp/etc directory while preserving the directory structure.

Level: Beginner · Start project

Extracting Information From Text

17. Extracting Information From Text

In this project, you will learn how to extract image URLs from Markdown files using a Bash script. This is a common task when working with technical documentation, as it allows you to quickly identify and retrieve the images used in a document.

Level: Beginner · Start project

Extracting Link Information From Text

18. Extracting Link Information From Text

In this project, you will learn how to extract link information from Markdown documents using a Bash script. This is a common task in software development, where developers need to process and extract specific information from text-based documents.

Level: Beginner · Start project

Get Program That Satisfies the Condition

19. Get Program That Satisfies the Condition

In this project, you will learn how to create a script that can check if a program is running on a specified port and print the full path of the program or 'OK' if no program is running.

Level: Beginner · Start project

Implement Custom Trash-Enabled Command

20. Implement Custom Trash-Enabled Command

In this project, you will learn how to create a custom rm command that moves deleted files to a trash directory instead of permanently deleting them. This is a useful feature to have on your Linux server to prevent accidental deletion of crucial files.

Level: Beginner · Start project

Network Data Packet Statistics

21. Network Data Packet Statistics

In this project, you will learn how to create a Zsh script that monitors the network communication status of a specific port. The script will count the number of data packets transmitted and received on the specified port within a 3-second timeframe.

Level: Beginner · Start project

Random Password Generator Development

22. Random Password Generator Development

In this project, you will learn how to create a random password generator script that meets specific requirements. The password generator will create a 12-character password that includes at least one digit, one uppercase letter, one lowercase letter, and one special character from the set ><+-{}:.&;.

Level: Beginner · Start project

Nmap Scanning and Telnet Access

23. Nmap Scanning and Telnet Access

In this project, you will learn the fundamentals of network enumeration and basic penetration testing. You'll use nmap to scan for open ports on a target system, identify vulnerable services like Telnet, and gain access to retrieve a flag. This hands-on project covers essential cybersecurity skills including port scanning, service detection, and remote access techniques.

Level: Beginner · Start project

FTP Enumeration and Anonymous Access

24. FTP Enumeration and Anonymous Access

In this project, you will learn the fundamentals of network enumeration and file transfer protocol exploitation. You'll use nmap to scan for open ports on a target system, identify misconfigured FTP services, gain anonymous access, and retrieve a flag. This hands-on project covers essential cybersecurity skills including port scanning, service detection, and FTP exploitation techniques.

Level: Beginner · Start project

Challenges

Use these bite-sized Linux challenges to practice specific skills after you finish a project or when you want a shorter coding session.

IndexNameDifficultyPractice
01Display User and Group InformationBeginnerStart Challenge
02Files and DirectoriesBeginnerStart Challenge
03The Manuscript MysteryBeginnerStart Challenge
04Change File OwnershipBeginnerStart Challenge
05Create Personalized Terminal GreetingBeginnerStart Challenge
06The Joker's TrickBeginnerStart Challenge
07The Lay of the LandBeginnerStart Challenge
08The Digital ArchitectBeginnerStart Challenge
09The Log InvestigatorBeginnerStart Challenge
10Delete and Move FilesBeginnerStart Challenge
11The Fortress GuardianBeginnerStart Challenge
12Add New User and GroupBeginnerStart Challenge
13The Keeper of the KeysBeginnerStart Challenge
14Linux Directory NavigationBeginnerStart Challenge
15Operation Quantum LeapBeginnerStart Challenge
16Finding the Pirate's TreasureBeginnerStart Challenge
17Setting Up a New Project StructureBeginnerStart Challenge
18Find a FileBeginnerStart Challenge
19Organizing Files and DirectoriesBeginnerStart Challenge
20Viewing Log and Configuration Files in LinuxBeginnerStart Challenge
21Time Machine Identity ConfigurationBeginnerStart Challenge
22Explore MySQL System TablesBeginnerStart Challenge
23Verify Kali Linux VersionIntermediateStart Challenge
24The Time Traveler's SuitcaseBeginnerStart Challenge
25Rapid Threat DetectionBeginnerStart Challenge
26Backup System LogBeginnerStart Challenge
27Decrypting Top Secret DocumentBeginnerStart Challenge
28Configure Linux Environment VariablesBeginnerStart Challenge
29Needle in the HaystackBeginnerStart Challenge
30Analyzing Disk UsageBeginnerStart Challenge
31The Process OverseerBeginnerStart Challenge
32Space Battle Data PipelineBeginnerStart Challenge
33The Network NavigatorBeginnerStart Challenge
34Analyzing PATH DirectoriesBeginnerStart Challenge
35Analyze Historical CommandsBeginnerStart Challenge
36The Software StewardAdvancedStart Challenge
37Implement Hard Links in LinuxBeginnerStart Challenge
38The Backup SentinelBeginnerStart Challenge
39Word Count and SortingIntermediateStart Challenge
40Extracting Mails and NumbersIntermediateStart Challenge
41The Script ArtisanAdvancedStart Challenge
42Log in and Switch UsersIntermediateStart Challenge
43Installing and Removing PackagesIntermediateStart Challenge
44Processing Employees DataIntermediateStart Challenge
45Disk Usage DetectiveIntermediateStart Challenge
46The Time Traveler's DilemmaIntermediateStart Challenge
47Manage File PermissionsBeginnerStart Challenge
48Manage Logs and ArchivesBeginnerStart Challenge
49Locate Setuid FilesBeginnerStart Challenge
50Create and Extract Tar ArchivesIntermediateStart Challenge

More challenges are available on LabEx: View all challenges.

More