How To Use Ubuntu

How To Use Ubuntu

Reading time1 min
#Linux#Ubuntu#OpenSource#CommandLine#Bash#Sysadmin

Mastering Ubuntu Command Line for Efficient System Management

Efficiency and visibility: Those are the real benefits the Ubuntu CLI brings to operations. Consider: a sudden surge in load, a filesystem filling rapidly, or the need to deploy an application at 2am without GUI access. The terminal doesn’t panic; it delivers precise, auditable results. This guide assumes Ubuntu 22.04 LTS or later. Commands, flags, and error behaviors may vary in older releases.


CLI: The Default Interface for Real Work

Why rely on the terminal?

  • Automation chains break easily in GUI workflows.
  • Remote management via SSH is not optional at scale.
  • Data is often more digestible in plaintext logs and structured output (JSON, YAML, etc).
  • Repeatability: Every operation can be recorded, replayed, and versioned.

Practically, any headless server or CI pipeline demands fluency with the shell.


Core Navigation and File Management

Terminal navigation is more than ls and cd; it's context switching, filtering, and batching.
A practical sequence:

cd /var/log
ls -lh | grep syslog
tail -f syslog

By combining commands, avoid the latency and ambiguity of GUI file browsers.

File management:

OperationCommand ExampleSide Note
Create filetouch notes.txt
Create directorymkdir -p ~/projects/demo-app-p avoids errors
Copy directorycp -a demo-app demo-app.bak-a preserves permissions/timestamps
Rename/movemv demo-app.bak old/
Remove directoryrm -rf old/Danger: irreversible

Gotcha: rm -rf / is intentionally blocked on most systems—but don’t test this on production.


Package Management with apt (Debian-based)

Package managers are the backbone for consistency and patching.

Day-to-day workflow:

sudo apt update           # Refresh indexes
sudo apt upgrade          # Apply all available package upgrades
sudo apt install git=1:2.34.1-1ubuntu1.10  # Install specific version
sudo apt remove git
apt-cache policy nginx    # Show available versions
sudo apt autoremove       # Clean up unused dependencies

Why specify versions?
A sudden upgrade is a common cause of “worked yesterday” incidents.

Note: The newer apt command is a syntactic improvement over apt-get (still supported), with colored output and progress bars.


Real-Time Diagnostics

Spot disk pressure before systemd decides to remount / as read-only:

df -hT /               # Show type-aware usage for root

Monitor memory and swap:

free -m

For multi-host/process views, use htop for an ncurses interface:

sudo apt install -y htop
htop

Process status:

ps aux --sort=-%mem | head -12

Example output:

USER    PID   %CPU %MEM    VSZ   RSS TTY  STAT START   TIME COMMAND
mysql  1423   12.4  24.1 706032 493456 ?    Sl   09:02   0:21 mysqld

Note: High RSS does not always indicate a memory leak; verify over time.


Permissions and Ownership

Change file access accurately—or risk privilege escalations.

ls -l /etc/shadow
# Should show root:shadow with 640 or stricter.

sudo chown ubuntu:www-data report.txt         # Change owner and group
sudo chmod 0640 report.txt                    # Explicit octal notation, not just +x

Non-obvious tip:
For recursive permission adjustments, prefer chmod --reference=templatefile targetfile to avoid mismatches.


Remote System Management via SSH

Headless servers? GUI isn’t even available.
SSH is also foundational for infrastructure as code (Ansible, Terraform remote exec, etc).

ssh -i ~/.ssh/prod_ed25519 opsengineer@192.0.2.41 -p 2222

Secure file transfer:

scp -P 2222 ./site.conf opsengineer@192.0.2.41:/etc/nginx/sites-available/

Known issue: Some MTUs or NATs can cause session hangs. Test with ssh -o IPQoS=throughput ... if this recurs.


Automate: Bash Scripting (Beyond Cron)

Robust backups are rarely just tarballs tossed into /tmp.
A working script for /etc backup, with rotation and error checking:

#!/bin/bash
set -euo pipefail
dst=~/backups
date=$(date +%F)
file="${dst}/etc_backup_${date}.tar.gz"

mkdir -p "$dst"

tar -czf "$file" /etc || { echo "Failed at $(date)" >&2 ; exit 1; }
find "$dst" -type f -mtime +7 -delete   # Clean backups older than 7 days

echo "Backup complete: $file"

Make executable:

chmod 0700 backup.sh

Schedule via crontab -e:

0 3 * * * /home/ubuntu/backup.sh

Critical: Always test scripts under a user with limited privileges before rolling into production.


Inline Troubleshooting

Fast root cause analysis avoids escalations. Some essentials:

journalctl -u nginx.service --since "10 min ago"
systemctl status nginx
sudo systemctl restart nginx
tail -n 50 /var/log/syslog | grep -i error

Example error:

nginx.service: Failed with result 'exit-code'.

Network checks:

ping -c3 8.8.8.8           # Simple latency probe
traceroute github.com       # Will require: sudo apt install traceroute
ss -tuln | grep LISTEN      # Faster than netstat; shows listening sockets

If you’re on a cloud VM and these fail, check security group settings, not just ufw or iptables.


When Not to Use the CLI

Some tasks—like complex git rebase conflict resolutions or visual diff merges—may be faster with GUI tools. Also, CLI misuse without understanding (rm -rf $BADLY_SET_VAR/*) can destroy entire data sets. CLI is not inherently safe, only as safe as its user.


Summary Table: Key CLI Resources

TaskPrimary CommandReference
File navigationls, cd, findman find
Package managementapt, dpkgman apt
Service managementsystemctlman systemctl
Networkingss, ping, tracerouteman ss
Automationbash, cronman bash
Monitoringtop, htop, df, freeman htop

There are layers to CLI mastery. For day-to-day sysadmin tasks, what matters most is fast recall of common idioms, awareness of system state, and the ability to automate workflows repeatably. GUIs have a place, but the terminal remains the essential control surface. Experiment with these patterns in a non-production environment to build muscle memory before moving to critical infrastructure.

For deeper automation, look into tmux, jq for JSON processing, or infrastructure provisioning via cloud-init; but that’s another topic.


Not perfect, but reliable: A decade on, CLI tools outlast desktop environments—sometimes even the OS itself.