🇨🇳 简体中文 🇯🇵 日本語 🇪🇸 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.
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.
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
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.
























