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.
|
01. Build a Linux System Monitor Using BashIn 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 |
|
02. Build a Task Scheduler Using BashThis 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 |
|
03. Installing and Configuring a Mail ServerIn 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 |
|
04. Configuring SSH Certificates for Secure LoginIn 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 |
|
05. Creating a Typing Game Using BashIn 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 |
|
06. Linux Server Information RetrievalIn 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 |
|
07. Restore Access to WebsiteIn 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 |
|
08. Searching for Specific FilesIn 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 |
|
09. Automated Daily System Log BackupIn 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 |
|
10. Chess Board in TerminalIn 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 |
|
11. Copy Large Files with Preserved StructureIn 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 |
|
12. Customizing Linux File ListingIn 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 |
|
13. New Colleague System Account SetupIn 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 |
|
14. Nginx Log Analysis and OptimizationIn 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 |
|
15. Users and Groups Creation and Deletion BatchIn 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 |
|
16. Collect Files From Specified TimeIn 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 |
|
17. Extracting Information From TextIn 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 |
|
18. Extracting Link Information From TextIn 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 |
|
19. Get Program That Satisfies the ConditionIn 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 |
|
20. Implement Custom Trash-Enabled CommandIn 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 |
|
21. Network Data Packet StatisticsIn 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 |
|
22. Random Password Generator DevelopmentIn 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 |
|
23. Nmap Scanning and Telnet AccessIn 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 |
|
24. FTP Enumeration and Anonymous AccessIn 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.
More challenges are available on LabEx: View all challenges.























