Linux Level 4: Network, Services & Health

Check your network, manage services, and build a system health dashboard.

Introduction

30 Second Summary

Ever had your internet stop working and had no idea how to figure out why? Most people restart their router and hope for the best. Linux gives you the tools to actually find out what is going on.

In this project, you will turn your Linux Mint terminal into a system administration dashboard. You will check your network, manage background services, and monitor disk space and memory from the command line.

What You'll Build

Imagine running one script in your terminal and getting back a clean report showing whether your network is up, how much memory and disk space you have left, and which processes are using the most resources.

By the end of this project, you'll have:

  • The skills to find your IP address, test network connectivity, and fetch web pages directly from the terminal without ever opening a browser.
  • The power to manage background services on your machine, from starting and stopping them to reading their logs when something goes wrong.
  • A working healthcheck.sh bash script that checks disk space, memory, system load, and network status, then prints a formatted report you can save and share.
  • Secret Mission: Write an automated health check dashboard script, install an SSH server, and connect to your own machine remotely.

Are there any prerequisites?

This project builds on three beginner Linux projects. You should be comfortable with terminal navigation, file operations, permissions, pipes, package management, and process management before starting.

Before We Start

You have spent three projects getting comfortable inside the Linux terminal. Before diving into new commands, let's lock in what you are about to build and why it matters for your Linux journey.

Your Machine on the Network

Every computer on a network has an IP address, but most people have no idea what theirs is. Before you can troubleshoot a network problem or understand how the internet reaches your machine, you need to find out how your computer identifies itself.

In this step, you will discover your machine's IP address and use ping to test whether your network connection is actually working. Think of it as finding your home address and then checking that the postal service can deliver mail to your door.

In this step, get ready to:
  • Find your machine's IP address using ip addr and hostname -I.
  • Test network connectivity by pinging remote servers and your own machine.
  • Practice DNS name resolution by pinging a website by name.
Discover your IP address

An IP address is like your computer's home address on the network. Every device connected to a network gets one, and other devices use it to send data your way.

  • See every network interface on your machine and its assigned IP address by running this command:
ip addr

What should I look for?

The output is detailed. Look for a line starting with inet followed by a number like 192.168.x.x. That is your local IP address.

You can ignore the 127.0.0.1 entry for now. That one is special and you will learn about it in the next substep.

  • Get a cleaner view of just your IP addresses by running:
hostname -I

This prints only your IP addresses on a single clean line. Much easier to read than the full ip addr output.

  • Take note of the IP address you see: your local IP address (e.g. 192.168.1.5)

Not seeing an IP address?

  • If hostname -I prints nothing, your machine may not have a network connection. Click the network icon in the XFCE panel (top right corner) and check that Wi-Fi or Ethernet is connected.
  • If you see "command not found," run sudo apt install iproute2 to install the networking utilities. This is very uncommon on Linux Mint.
  • Why isn't hostname -I showing my IP address on Linux Mint?
Test connectivity with ping

Now you know your address, but is the connection actually working? The ping command sends a small packet of data to another machine and waits for a reply. Think of it as knocking on someone's door to see if they are home.

Before you run the next command, take a guess. Will your machine be able to reach Google's servers right now?

  • Test your internet connection by sending 4 packets to Google's DNS server:
ping -c 4 8.8.8.8

What should I see?

Look at the last line of the output. You should see "4 packets transmitted, 4 received, 0% packet loss." That means every packet made the round trip successfully.

The -c 4 flag tells ping to stop after 4 packets. Without it, ping runs forever until you press Ctrl+C.

  • Now ping your own machine using the loopback address:
ping -c 4 127.0.0.1

What is 127.0.0.1?

The loopback address 127.0.0.1 always points back to your own machine. Pinging it proves that your network stack is working, even if you have no internet connection. You will sometimes see it called localhost.

Both pings should show 0% packet loss. You have confirmed that your machine can reach the internet and that your local network stack is healthy.

Seeing 'Network is unreachable'?

  • This means your machine has no network connection. Check your Wi-Fi or Ethernet cable. Click the network icon in the XFCE panel to reconnect.
  • If ping -c 4 8.8.8.8 fails but ping -c 4 127.0.0.1 works, the problem is between your machine and the internet, not your local network stack.
  • Why is my ping showing 'Network is unreachable' on Linux Mint?
Practice with DNS name resolution

When you type a website name like google.com, your machine needs to translate that human-readable name into an IP address. This translation is called DNS resolution. Let's see it happen live.

  • Ping a website by name to watch DNS resolution in action:
ping -c 4 google.com

What did DNS do here?

Look at the very first line of the output. After the word PING, you will see google.com followed by an IP address in parentheses. That IP address is what DNS resolved the name to.

Your machine looked up the name, got an address, and started pinging it automatically. You did not need to know Google's IP address yourself.

Now try pinging your own machine using the local IP address you recorded earlier. Before you run this, do you think the result will look different from pinging 127.0.0.1?

  • Ping your machine using your local IP address:
ping -c 4 [[LOCAL_IP="your local IP address (e.g. 192.168.1.5)"]]

You should see 4 successful replies again, just like when you pinged 127.0.0.1. Both addresses point to your own machine, but the path they take is different.

Here is a mini-challenge. What is the difference between pinging 127.0.0.1 and pinging your actual local IP address?

✔️ I'll give it a go!

Run both pings side by side and compare the output. Look at the response times and the interface addresses shown. Can you spot any differences?

ⓧ Maybe a little help...

Both pings reach your own machine, so both show 0% packet loss. The difference is in the path the packets travel.

Pinging 127.0.0.1 uses the internal loopback interface, which never touches your network hardware. Pinging your actual local IP address goes through your real network interface card. You might notice slightly different response times because of this extra hop through the hardware.

Seeing 'Temporary failure in name resolution'?

  • You have internet access but DNS is not working. Confirm this by running ping -c 4 8.8.8.8. If that succeeds, the problem is specifically with name resolution.
  • Check your DNS settings in the network manager. Click the network icon in the XFCE panel, select your connection, and verify the DNS servers listed under the IPv4 settings.
  • Why can I ping IP addresses but not domain names on Linux Mint?

Can you answer these?

  • What command shows your IP address in a single clean line?
  • What does the -c 4 flag do when added to the ping command?
  • What IP address always points back to your own machine (the loopback address)?
  • If ping shows "0% packet loss," what does that tell you?
  • How do you stop a ping that is running continuously?

You know your machine's address and you have proved the network is working. Next up, you will use curl to reach out and talk to web servers directly from your terminal.

Talking to the Web from the Terminal

In the last step, you proved your network connection works with ping. You can reach other machines and confirm they respond.

But ping only tells you whether a host is reachable. It cannot fetch a web page, download a file, or read what a server sends back. curl lets you talk to web servers directly from the terminal, which is how developers and sysadmins test websites and debug connections without ever opening a browser.

In this step, get ready to:
  • Fetch a web page and read HTTP response headers with curl.
  • Download files to your machine with curl -o and wget.
  • Compare downloads and inspect headers from different websites.
Fetch a web page and read headers with curl

The curl command sends a request to a web server and prints the response right in your terminal. You can see the raw HTML of any web page without opening a browser.

  • Fetch the raw HTML of a web page by running:
curl https://example.com

You should see a wall of HTML code printed in your terminal. This is the same code your browser receives when you visit that page.

That raw HTML is useful, but sometimes you just want to know about the server itself. HTTP response headers are metadata the server sends back before the actual page content.

  • Fetch only the HTTP response headers by running:
curl -I https://example.com

Instead of HTML, you should see a short list of header lines. Look for content-type and server in the output.

What are HTTP response headers?

Headers are metadata the server sends before the actual page content. They describe things like the format of the response, when it was last modified, and what software powers the website.

The -I flag tells curl to send a HEAD request, which asks the server for headers only. This is a quick way to learn about a server without downloading the whole page.

Seeing an error from curl?

  • curl: (6) Could not resolve host means your DNS is not working. Try ping -c 4 8.8.8.8 to check if you have internet. If the ping works, the issue is DNS, not your connection.
  • curl: (7) Failed to connect means the server is down or your firewall is blocking the connection. Try a different URL like curl https://example.org.
  • command not found: curl is unlikely on Linux Mint, but you can fix it by running sudo apt install curl.

Help me troubleshoot my curl command

Download a file with curl -o and compare with wget

So far, curl has been printing everything to your terminal. The -o flag tells curl where to save the response instead of printing it to the screen.

  • Save a web page to a file called page.html by running:
curl -o page.html https://example.com
  • Confirm the file was saved by running:
ls page.html

You should see page.html listed in the output. The file now contains the HTML you saw printed earlier.

There is another tool called wget that does the same download job but with different defaults.

  • Try downloading the same page with wget by running:
wget https://example.com

Notice that wget shows a progress bar during the download and saves to a file called index.html automatically. You did not need a -o flag.

What is the difference between curl and wget?

curl prints to the terminal by default, so you need -o to save to a file. wget saves to a file by default and shows a progress bar during the download.

Both tools can do the same job. curl is more versatile for inspecting headers and debugging web requests. wget is more convenient for simple file downloads.

  • View the first 10 lines of the file you saved with curl by running:
cat page.html | head -10

You should see the opening HTML tags of the example.com page.

Command not found for wget?

If you see command not found: wget, install it by running sudo apt install wget. This is unlikely on Linux Mint but easy to fix.

Help me troubleshoot wget on Linux Mint

Practice with headers and downloads

Time to combine what you have learned. You will download the same page with both tools, save them to separate files, and compare them side by side.

  • Download a page with curl and save it as test1.html by running:
curl -o test1.html https://example.com
  • Download the same page with wget and save it as test2.html by running:
wget -O test2.html https://example.com
  • Compare the two files by running:
diff test1.html test2.html

If diff produces no output, the files are identical. Both tools downloaded the exact same content.

Mini-challenge: compare two different servers

Run curl -I on two different websites you visit often. Can you spot differences in their content-type or server values? Different websites run on different server software, so these headers will often be different.

Before you run the next command, what do you think you will see when you print the first 5 lines of page.html?

  • Verify your downloads worked by running:
cat page.html | head -5

You should see the first 5 lines of HTML from the page you saved earlier. If you see HTML tags like <!doctype html> and <html>, everything is working.

Review questions

  • What command fetches a web page and prints it in the terminal?
  • What does the -I flag do when used with curl?
  • How do you save a curl download to a specific filename?
  • What is one difference between how curl and wget behave by default?
  • What kind of information do HTTP response headers contain?

You can now fetch web pages and download files straight from the terminal. Next up, you will discover what ports are and see which doors are open on your machine.

Ports, the Numbered Doors

You can reach the internet and fetch web pages from other machines. But what about your own machine?

Ports are like numbered doors on your machine. Each background service listens behind a specific door, waiting for someone to knock. In this step, you will find out which doors are open and what happens when you try to knock.

In this step, get ready to:
  • List all open ports on your machine with ss -tuln.
  • Try connecting to different ports and discover what answers.
  • See the connection between ports and the services behind them.
Understand ports and list what is listening

Every network service on your machine uses a specific port number. Think of your computer as a building with thousands of numbered doors.

What are common port numbers?

Port 80 is the standard door for HTTP web traffic. Port 443 is for HTTPS secure web traffic.

Port 22 is for SSH remote access. Port 631 is for the CUPS printing service.

  • See every port your machine is currently listening on by running this command:
ss -tuln

What do the ss flags mean?

-t shows TCP sockets. -u shows UDP sockets.

-l shows only listening sockets (open doors, not active conversations). -n shows port numbers instead of names.

Look at the "Local Address:Port" column in the output. You should see at least one entry, including port 631 for the CUPS printing service.

Not seeing any output?

  • If the output is completely empty, the CUPS service may not be running. Run sudo systemctl start cups and then run ss -tuln again.
  • If you see ss: command not found (very unlikely on Linux Mint), run sudo apt install iproute2 to install it.
  • help me figure out why ss -tuln shows no listening ports
Connect to a port and see what happens

You can see which ports are open. Now try connecting to one. Your machine has thousands of port numbers, but most of them have nothing behind them.

Before you run the next command, make a prediction. Do you think your machine has a web server running on port 80 right now?

  • Try connecting to port 80 on your own machine by running:
curl http://localhost

You should see Connection refused. The door exists, but nobody is home. Nothing is listening behind port 80 on your machine.

Now try a port that does have something behind it. You saw port 631 in your ss -tuln output. That is the CUPS printing service.

  • Connect to port 631 on your own machine by running:
curl http://localhost:631

This time you should get a response back. The CUPS service answered your knock because it is actively listening behind that port.

Why did one port refuse and the other respond?

Port 80 returned Connection refused because no web server is installed on your machine. The port number exists, but no program is listening behind it.

Port 631 responded because the CUPS printing service is running and waiting for connections there. A port only answers when a service is actively listening behind it.

Getting Connection refused on port 631 too?

  • CUPS may not be running. Run sudo systemctl start cups and try curl http://localhost:631 again.
  • help me troubleshoot why curl to localhost port 631 is being refused
Practice what you have learned

Time to put your port knowledge to work. Try a few more commands to build your confidence.

  • Run ss -tuln again and count how many ports are listening on your machine.
ss -tuln
  • Find port 631 in the list and look at the address it is bound to.

Before you run the next command, predict what will happen. Port 9999 was not in your ss -tuln output. What do you expect?

  • Try connecting to port 9999 by running:
curl http://localhost:9999

You should see Connection refused again. No service is listening behind port 9999 either.

Mini-challenge: what is the difference?

Can you find any other open ports in your ss -tuln output besides 631? If so, try curling them and see what responds.

The pattern is always the same. If a service is listening, you get a response. If not, you get Connection refused. This is how sysadmins diagnose whether a service is actually running.

Test your knowledge

  • What is a port, using the "numbered doors" analogy?
  • What do the four flags in ss -tuln each stand for?
  • What port number does HTTP web traffic use by default?
  • What does Connection refused mean when you try to curl a port?
  • What service is listening on port 631 by default on Linux Mint?

You found an open door with a service behind it. But who controls that service? How do you start it, stop it, or make sure it survives a reboot? In the next step, you will take control of services with systemctl.

Services with systemctl

In the last step, port 80 refused your connection because nothing was listening there. Port 631 answered because the CUPS printing service was running behind it.

The program behind port 631 is a service, also called a daemon. systemctl is the command that lets you manage these background programs, and it is one of the most important tools in Linux administration.

In this step, get ready to:
  • Check, stop, start, and restart the CUPS service using systemctl.
  • Control which services start on boot with enable and disable.
  • Read service logs with journalctl to see what a service has been doing.
Check, stop, and start the CUPS service

You already know CUPS is running because you connected to it on port 631 in the last step. Now you will use systemctl to see its status, stop it, and start it again.

What is a daemon?

A daemon (pronounced "dee-mon") is a background program that starts automatically when your machine boots and keeps running without any visible window. The CUPS printing service is a daemon. It sits behind port 631 waiting for print jobs, even though you never launched it yourself.

  • Check the current status of the CUPS service by running this command:
sudo systemctl status cups

You should see "active (running)" highlighted in green text. This confirms CUPS is up and running right now.

  • Stop the CUPS service by running:
sudo systemctl stop cups
  • Check the status again to confirm it stopped:
sudo systemctl status cups

This time you should see "inactive (dead)." The service is no longer running.

  • Start CUPS back up by running:
sudo systemctl start cups
  • Verify CUPS is running again:
sudo systemctl status cups

You should see "active (running)" in green once more. This stop-check-start cycle is the core workflow you will use for every service you manage.

Seeing 'Access denied'?

If you see "Failed to stop cups.service: Access denied," you forgot sudo. The start, stop, restart, enable, and disable commands all require root privileges. Add sudo before the command and try again.

help me fix a systemctl access denied error

Restart, enable, disable, and read logs

Now that you can stop and start a service, two more capabilities complete the toolkit: controlling what happens on reboot and reading logs.

  • Restart CUPS (stop and start in one command) by running:
sudo systemctl restart cups

What is the difference between start and enable?

systemctl start turns a service on right now. systemctl enable makes it start automatically every time the machine boots.

If you only use start, the service comes back online now but will be gone after the next reboot. A reboot should not break your setup, so knowing enable is a key sysadmin skill.

  • Check whether CUPS is set to start on boot by running:
systemctl is-enabled cups

You should see "enabled." This means CUPS will start automatically after a reboot.

  • Disable CUPS from starting on boot by running:
sudo systemctl disable cups
  • Check the boot setting again:
systemctl is-enabled cups

It now says "disabled." CUPS is still running right now, but it will not start automatically after a reboot.

  • Re-enable CUPS so it starts on boot again by running:
sudo systemctl enable cups
  • Confirm it is re-enabled:
systemctl is-enabled cups

You should see "enabled" again. CUPS is fully restored to its original state.

The last piece of the service toolkit is reading logs. When a service misbehaves, logs are where you look to find out what went wrong.

  • Read the last 20 log entries from the CUPS service by running:
journalctl -u cups -n 20

What do these flags mean?

  • -u cups filters the log to show entries only from the CUPS service. The -u stands for "unit," which is what systemd calls a service.
  • -n 20 limits the output to the last 20 entries. Without it, you could see thousands of log lines.

CUPS not found or not responding?

If you see "Unit cups.service could not be found," CUPS may not be installed. Run sudo apt install cups and then try again.

If you disabled CUPS and printing stopped working, run sudo systemctl enable --now cups to re-enable and start it in one command.

help me troubleshoot systemctl and CUPS on Linux Mint

Practice and mini-challenge

Time to practice the commands you just learned and see how services connect back to ports.

  • Stop CUPS by running:
sudo systemctl stop cups
  • Confirm it is stopped by running:
systemctl status cups

You should see "inactive (dead)."

  • Start CUPS back up by running:
sudo systemctl start cups
  • Confirm CUPS is still set to start on boot:
systemctl is-enabled cups
  • Read the last 10 log entries by running:
journalctl -u cups -n 10

You should see recent log entries, including lines from the stop and start cycle you just performed.

Now for the mini-challenge. You will connect services and ports together to see why both concepts matter.

  • Stop CUPS by running:
sudo systemctl stop cups

Before you run the next command, think about this: in the last step, curl http://localhost:631 returned a response from CUPS. What do you think will happen now that CUPS is stopped?

  • Test your prediction by running:
curl http://localhost:631

You should see "Connection refused." The service behind port 631 is no longer running, so there is nothing to answer the request.

  • Start CUPS back up by running:
sudo systemctl start cups

What do you think will happen if you curl port 631 again now?

  • Test your prediction by running:
curl http://localhost:631

This time you get a response. CUPS is back behind port 631, ready to answer. This is the direct link between services and ports: when you stop the service, the port goes silent.

Before you wrap up, predict what the final status check will show. Do you think CUPS is "active (running)" or "inactive (dead)" right now?

  • Verify CUPS is fully restored by running:
systemctl status cups

You should see "active (running)" in green text, confirming the service is back up.

Review: test your knowledge

  • What is a daemon (background service)?
  • What is the difference between systemctl start and systemctl enable?
  • What command restarts a service (stops and starts it in one step)?
  • How do you check whether a service is set to start automatically on boot?
  • What command shows the last 20 log entries for the CUPS service?

You can now manage any service on your machine. Next up, you will learn to check your system's health: disk space, memory, and CPU load.

System Health Check

You just took control of background services. You can stop, start, restart, and inspect anything running behind the scenes on your machine. That covers the "what is running" question.

The last piece of the sysadmin toolkit is knowing how your machine is doing right now. Is the disk filling up? Is memory running low? How long has the machine been running without a reboot? These are the questions every sysadmin answers daily. The commands in this step give you the answers in seconds.

In this step, get ready to:
  • Check disk space and folder sizes with df, du, and lsblk.
  • Monitor memory usage and system load with free and uptime.
  • Combine your new commands into a quick on-call health check drill.
Check disk space and folder sizes

Your machine has a finite amount of disk space. When it fills up, applications crash and updates fail. Three commands give you the full picture: the big overview, a single-folder zoom, and the physical disk layout.

  • See how much space is used on every mounted filesystem by running:
df -h
  • Look for the row where the Mounted on column says /. That is your main disk.
  • Note the Use% column for that row. It tells you how full your disk is.

What does the -h flag mean?

The -h flag stands for human-readable. Without it, sizes are shown in raw block counts that are hard to interpret. With -h, you get sizes in KB, MB, and GB instead.

  • Zoom in on a single folder to see its total size by running:
du -sh ~/Documents

You should see a single line showing the total size of your Documents folder. The -s flag means summary (one total, not every subfolder) and -h means human-readable.

  • See all physical disks and partitions on your machine by running:
lsblk

You should see a tree-like list of your block devices (disks, partitions, and any USB drives). Each row shows the device name, size, type, and mount point.

When do I use df versus du versus lsblk?

Think of these three as different zoom levels on the same question.

  • df -h shows the big picture: how full is each filesystem overall.
  • du -sh FOLDER zooms in: how much space does this specific folder take.
  • lsblk shows the hardware layer: what physical disks exist and how they are partitioned.

Seeing 'Permission denied' errors with du?

Some system folders block read access for normal users. These errors are harmless. You already learned 2> redirection in a previous project. Adding 2>/dev/null to the end of a du command silences those messages.

Need more help? Ask: why am I seeing Permission denied errors when running du?

Check memory and system load

Disk space tells you about storage. Memory and load tell you what is happening right now. Is the machine struggling or cruising?

  • Check how much memory your machine is using by running:
free -h

You should see a table with rows for Mem (RAM) and Swap (overflow to disk). Focus on the Mem row.

Why does 'free' memory look so low?

Linux deliberately uses spare RAM as a disk cache to speed things up. That is why the free column looks tiny and the buff/cache column is large. This is normal and healthy.

The column that actually matters is available. It shows how much memory can be reclaimed for new applications if they need it. When available gets close to zero, your machine is in trouble.

  • Check how long your machine has been running and how busy the CPU is by running:
uptime

You should see the current time, the system uptime, the number of logged-in users, and three numbers at the end. Those three numbers are load averages for the last 1, 5, and 15 minutes. They show how busy your CPU has been. Lower numbers mean less work. On a single-core machine, a load of 1.0 means the CPU is fully occupied.

Run a quick health check drill

Time to combine your new commands. You will hunt for the biggest space hogs in your home directory, then run a single combined health snapshot.

  • Find the 5 biggest items in your home directory by running:
du -sh ~/* 2>/dev/null | sort -h | tail -5

You should see five lines, each showing a folder name and its size, with the biggest at the bottom.

What does this pipeline do?

  • du -sh ~/* measures the size of every item in your home directory.
  • 2>/dev/null silences any "Permission denied" errors on folders you cannot read.
  • sort -h sorts the results by human-readable size (so 1G comes after 500M).
  • tail -5 keeps only the last 5 lines, which are the 5 biggest items.

Imagine you just got a call: "The disk is filling up. Find out what is eating all the space." This is your on-call drill.

  • Find the 3 biggest folders in your home directory by running:
du -sh ~/* 2>/dev/null | sort -h | tail -3
  • Write down the three folder names and their sizes. If this were a real call, you would report these back to your team.

Now for the final check. Before you run the next command, predict: what three pieces of information do you think you will see?

  • Run a combined health snapshot by running:
uptime && free -h && df -h /

Your terminal prints all three results back to back: system uptime with load averages, a memory usage table, and disk usage for the root filesystem.

What does && do?

The && operator runs the next command only if the previous one succeeded. It chains commands in sequence. You already know the pipe | which sends output from one command into another. && is different: each command runs independently, and the next one starts only after the previous one finishes successfully.

Disk showing 100% used?

If df -h / shows 100% in the Use% column, your disk is genuinely full. Run du -sh ~/* 2>/dev/null | sort -h | tail -10 to find the largest folders. Common culprits are ~/Downloads and the Trash. Empty the Trash and delete files you no longer need.

Still stuck? Ask: my disk is showing 100% full on Linux Mint. How do I find and clean up what is using the most space?

Test your knowledge

Try answering these five questions from memory before moving on.

  • What command shows disk space usage for all mounted filesystems? Check my answer.
  • What does the -h flag mean in df -h and free -h? Check my answer.
  • In the output of free -h, which column should you check to see how much memory is actually available? Check my answer.
  • What does the uptime command show besides how long the machine has been running? Check my answer.
  • How would you find the 3 biggest folders in your home directory using du and pipes? Check my answer.

Secret mission

My Health Check Dashboard

Instead of running commands one at a time, combine everything you learned into a bash script that generates a formatted health report automatically. This is your first step toward automation. As a bonus, install an SSH server and connect to your own machine remotely.

Clean Up Your Resources

Clean Up Your Resources

This project runs entirely on your local Linux Mint machine, so there are no ongoing cloud costs or subscriptions to worry about. Decide whether to keep your resources as they are, pause services to free up resources, or delete everything entirely.

Resources you used:

  • The ~/sysdash/ folder containing healthcheck.sh and health-report.txt.
  • Downloaded HTML files (page.html and index.html) in your home directory.
  • The openssh-server package and the running ssh service listening on port 22.

Keep everything running

No action needed. Choose this if you plan to keep practising Linux administration or want to reuse your health check script.

  • Your ~/sysdash/ folder is ready to use any time you run bash ~/sysdash/healthcheck.sh.
  • The SSH service is still running and listening on port 22. This means your machine accepts SSH connections on localhost.
  • The downloaded HTML files (page.html and index.html) remain in your home directory.

Pause - I'll come back to this later

Stop the SSH service so it is no longer listening on port 22, but keep your script and files intact for later.

  • Stop the SSH service and prevent it from starting on boot by running:
sudo systemctl stop ssh
sudo systemctl disable ssh
  • Confirm SSH is no longer listening by running:
ss -tuln | grep :22

You should see no output, which means port 22 is no longer open.

  • Your ~/sysdash/ folder and downloaded HTML files stay on disk. When you are ready to come back, re-enable SSH with sudo systemctl enable --now ssh.

Delete - I don't want to use this again

Remove all project files, the SSH server package, and the downloaded HTML files from your machine.

  • Stop and disable the SSH service, then remove the openssh-server package by running:
sudo systemctl stop ssh
sudo systemctl disable ssh
sudo apt remove openssh-server -y
  • Remove the sysdash folder and everything inside it by running:
rm -rf ~/sysdash
  • Remove the downloaded HTML files by running:
rm -f ~/page.html ~/index.html
  • Confirm everything is cleaned up by running:
ls ~/sysdash 2>/dev/null || echo "sysdash folder removed"
ss -tuln | grep :22 || echo "Port 22 closed"

You should see "sysdash folder removed" and "Port 22 closed" confirming both are gone.

Nice Work!

Nice Work!

Nice work! You have turned your Linux Mint terminal into a system administration dashboard.

You can now open a terminal and instantly answer the questions sysadmins get asked every day: what is my IP address, is the network up, what services are running, and how much disk space is left.

You've learned how to:

  • Find your machine on the network with ip addr, hostname -I, and ping, and fetch web pages and HTTP headers directly from the terminal using curl and wget.
  • Explore open ports with ss -tuln, manage background services with systemctl, and read service logs with journalctl.
  • Check disk space, memory, and system load at a glance using df -h, free -h, uptime, and lsblk.
  • Secret Mission: Completed an optional challenge to automate your sysadmin skills with a reusable bash script and remote access.

Ready to quiz yourself?