Skip to content

labex-labs/linux-practice-projects

Repository files navigation

Practice Linux Programming Projects

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

Index Name Difficulty Practice
01 Display User and Group Information Beginner Start Challenge
02 Files and Directories Beginner Start Challenge
03 The Manuscript Mystery Beginner Start Challenge
04 Change File Ownership Beginner Start Challenge
05 Create Personalized Terminal Greeting Beginner Start Challenge
06 The Joker's Trick Beginner Start Challenge
07 The Lay of the Land Beginner Start Challenge
08 The Digital Architect Beginner Start Challenge
09 The Log Investigator Beginner Start Challenge
10 Delete and Move Files Beginner Start Challenge
11 The Fortress Guardian Beginner Start Challenge
12 Add New User and Group Beginner Start Challenge
13 The Keeper of the Keys Beginner Start Challenge
14 Linux Directory Navigation Beginner Start Challenge
15 Operation Quantum Leap Beginner Start Challenge
16 Finding the Pirate's Treasure Beginner Start Challenge
17 Setting Up a New Project Structure Beginner Start Challenge
18 Find a File Beginner Start Challenge
19 Organizing Files and Directories Beginner Start Challenge
20 Viewing Log and Configuration Files in Linux Beginner Start Challenge
21 Time Machine Identity Configuration Beginner Start Challenge
22 Explore MySQL System Tables Beginner Start Challenge
23 Verify Kali Linux Version Intermediate Start Challenge
24 The Time Traveler's Suitcase Beginner Start Challenge
25 Rapid Threat Detection Beginner Start Challenge
26 Backup System Log Beginner Start Challenge
27 Decrypting Top Secret Document Beginner Start Challenge
28 Configure Linux Environment Variables Beginner Start Challenge
29 Needle in the Haystack Beginner Start Challenge
30 Analyzing Disk Usage Beginner Start Challenge
31 The Process Overseer Beginner Start Challenge
32 Space Battle Data Pipeline Beginner Start Challenge
33 The Network Navigator Beginner Start Challenge
34 Analyzing PATH Directories Beginner Start Challenge
35 Analyze Historical Commands Beginner Start Challenge
36 The Software Steward Advanced Start Challenge
37 Implement Hard Links in Linux Beginner Start Challenge
38 The Backup Sentinel Beginner Start Challenge
39 Word Count and Sorting Intermediate Start Challenge
40 Extracting Mails and Numbers Intermediate Start Challenge
41 The Script Artisan Advanced Start Challenge
42 Log in and Switch Users Intermediate Start Challenge
43 Installing and Removing Packages Intermediate Start Challenge
44 Processing Employees Data Intermediate Start Challenge
45 Disk Usage Detective Intermediate Start Challenge
46 The Time Traveler's Dilemma Intermediate Start Challenge
47 Manage File Permissions Beginner Start Challenge
48 Manage Logs and Archives Beginner Start Challenge
49 Locate Setuid Files Beginner Start Challenge
50 Create and Extract Tar Archives Intermediate Start Challenge

More challenges are available on LabEx: View all challenges.

More