Tutorial

Panduan Command Linux Server dari Dasar sampai Advanced

IT Musafir · 18 Jul 2026 · 72 views
Panduan Command Linux Server dari Dasar sampai Advanced

Kenapa Command Linux Harus Dipahami Bertahap?

Linux server itu bukan cuma soal hafal command. Yang lebih penting adalah tahu kapan sebuah command dipakai, apa risikonya, dan bagaimana membaca hasilnya. Di server production, satu perintah kecil bisa membantu troubleshooting cepat, tapi bisa juga merusak data kalau dijalankan tanpa konteks.

Artikel ini dikembangkan dari catatan pustaka internal: linux-commands-guide.md. Isinya saya susun ulang menjadi tutorial operasional yang lebih enak diikuti: mulai dari dasar, naik ke monitoring, service, log, backup, security, sampai command advanced yang sering dipakai admin server.

Target akhirnya sederhana: setelah membaca ini, Anda bisa login ke Linux server, mencari file, membaca log, cek resource, mengelola service, cek jaringan, backup data penting, dan melakukan troubleshooting awal tanpa panik.

Prinsip Aman Sebelum Menjalankan Command

  • Baca dulu output command sebelum mengambil tindakan.
  • Hindari rm -rf, chmod -R, dan chown -R kalau path belum benar-benar pasti.
  • Untuk file konfigurasi, backup dulu sebelum edit.
  • Di production, gunakan nginx -t, apachectl configtest, atau validasi serupa sebelum reload service.
  • Kalau command butuh sudo, pahami dulu efeknya. Jangan asal copy paste.
# Contoh pola aman sebelum edit config
sudo cp /etc/nginx/sites-available/app.conf /etc/nginx/sites-available/app.conf.bak.$(date +%Y%m%d-%H%M)
sudo nano /etc/nginx/sites-available/app.conf
sudo nginx -t
sudo systemctl reload nginx

1. Navigasi Dasar di Server

Command paling dasar dipakai untuk tahu sedang berada di mana, pindah folder, dan melihat isi direktori.

pwd                 # Melihat direktori saat ini
cd /var/log         # Pindah ke direktori tertentu
cd ..               # Naik satu level
cd ~                # Kembali ke home user
cd -                # Kembali ke direktori sebelumnya

ls                  # List file sederhana
ls -la              # Detail lengkap termasuk hidden file
ls -lh              # Ukuran file human-readable
ls -lt              # Urut berdasarkan waktu modifikasi

Contoh pemakaian nyata: saat login ke server dan ingin cek log Nginx, biasanya alurnya seperti ini:

cd /var/log/nginx
ls -lh
tail -n 80 error.log

2. Membaca Informasi Sistem

Bagian ini dipakai untuk mengenali server: kernel, hostname, user aktif, uptime, RAM, disk, dan block device.

uname -a             # Detail kernel dan sistem
hostname             # Nama hostname server
whoami               # User saat ini
id                   # UID, GID, dan group user
date                 # Tanggal dan jam server
uptime               # Lama server hidup dan load average

lscpu                # Informasi CPU
free -h              # Pemakaian memory
df -h                # Pemakaian filesystem
lsblk                # Daftar disk dan partisi
lspci                # Perangkat PCI
lsusb                # Perangkat USB

Kalau aplikasi terasa lambat, tiga command awal yang sering saya jalankan adalah:

uptime
free -h
df -h

Dari situ biasanya terlihat apakah masalahnya CPU load, RAM habis, atau disk penuh.

3. Membuat, Membaca, Copy, Move, dan Hapus File

File operation adalah pekerjaan harian admin server. Gunakan command ini dengan hati-hati, terutama saat menghapus file.

touch file.txt
echo "Hello World" > file.txt

cat file.txt
less file.txt
head -n 20 file.txt
tail -n 20 file.txt
tail -f /var/log/nginx/error.log

cp source.txt dest.txt
cp -r /src/dir /backup/dir
mv old.txt new.txt
rm file.txt
rm -rf directory

Untuk production, biasakan cek target sebelum hapus:

pwd
ls -lah directory
du -sh directory

Kalau masih ragu, rename dulu daripada langsung hapus:

mv cache cache.old.$(date +%Y%m%d-%H%M)

4. Search File dan Isi File

Saat troubleshooting, Anda sering mencari file konfigurasi, log error, atau string tertentu di dalam source code.

find /home -name "*.log"
find /var -type f -size +100M
find /etc -name "*.conf" -mtime -7

grep "error" /var/log/syslog
grep -i "failed" /var/log/auth.log
grep -n "listen" /etc/nginx/nginx.conf
grep -r "DB_HOST" /var/www/app

Untuk mencari error di semua log Nginx:

sudo find /var/log/nginx -name "*.log" -exec grep -i "error" {} \;

Kalau server punya rg atau ripgrep, pencarian di source code biasanya lebih cepat:

rg "APP_ENV|DB_HOST|REDIS_HOST" /var/www/app

5. Archive dan Kompresi

Command tar dan zip sering dipakai untuk backup, pindah folder aplikasi, atau mengirim log ke tim lain.

tar -czf backup.tar.gz /home/admin
tar -xzf backup.tar.gz
tar -tzf backup.tar.gz

zip -r archive.zip /path/to/directory
unzip archive.zip

gzip file.txt
gunzip file.txt.gz

Contoh backup folder aplikasi sebelum deploy manual:

sudo tar -czf /backup/app_$(date +%Y%m%d-%H%M).tar.gz /var/www/app
Ilustrasi terminal Linux server untuk monitoring dan troubleshooting
Command Linux lebih mudah dipahami jika dipelajari lewat skenario server nyata.
Ilustrasi dashboard operasional Linux server dengan log dan network tools
Monitoring, log, service, dan network check adalah kombinasi utama saat troubleshooting server.

6. Melihat dan Mengontrol Proses

Kalau server lambat, cari proses yang memakan CPU/RAM. Kalau port dipakai service lama, cari PID-nya dulu sebelum kill.

ps aux
ps -ef
ps aux | grep nginx
top
htop
pstree -p

Urutkan proses berdasarkan CPU atau memory:

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

Menghentikan proses:

kill 1234
kill -9 1234
killall nginx
pkill -f "node app.js"

Gunakan kill -9 sebagai jalan terakhir. Coba kill PID dulu supaya proses punya kesempatan menutup file dan koneksi dengan rapi.

7. Background Job dan Session Panjang

Untuk command yang lama, jangan biarkan proses mati hanya karena koneksi SSH putus. Pakai nohup, tmux, atau screen.

command &
jobs
fg %1
bg %1
nohup long-command > output.log 2>&1 &

Untuk pekerjaan server yang serius, tmux lebih nyaman:

tmux new -s maintenance
# jalankan command panjang
# tekan Ctrl+B lalu D untuk detach
tmux attach -t maintenance

8. User, Group, dan Permission

Bagian ini penting untuk keamanan. Banyak masalah aplikasi muncul bukan karena source code rusak, tetapi karena owner file salah atau permission terlalu ketat/terlalu longgar.

sudo adduser username
sudo useradd -m -s /bin/bash username
sudo usermod -aG sudo username
sudo userdel username
sudo userdel -r username

passwd
sudo passwd username
sudo chage -l username

Group:

sudo groupadd developers
sudo usermod -aG developers username
groups username
getent group developers

Permission dan ownership:

ls -la file.txt
chmod 755 script.sh
chmod u+x script.sh
chmod g+w file.txt
chmod o-r file.txt

sudo chown user:group file.txt
sudo chown -R www-data:www-data /var/www/app/storage
sudo chgrp group file.txt

Contoh kasus Laravel:

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R ug+rw storage bootstrap/cache

Hindari chmod -R 777. Itu memang terlihat cepat menyelesaikan error permission, tapi membuka risiko keamanan yang tidak perlu.

9. Networking Dasar Sampai Cek Port

Networking command dipakai untuk cek IP, route, DNS, koneksi keluar, port listening, dan proses yang memakai port.

ip addr show
ip a
ip route show

cat /etc/resolv.conf
nslookup google.com
dig google.com
host google.com

Test koneksi:

ping -c 4 8.8.8.8
ping -c 4 google.com
traceroute google.com
mtr google.com

Test port dan listening service:

nc -zv example.com 443
ss -tulpn
lsof -i :80
lsof -i :443

Contoh troubleshooting website tidak bisa dibuka:

dig example.com
curl -I https://example.com
nc -zv example.com 443
sudo ss -tulpn | grep ':443'
sudo journalctl -u nginx -n 80 --no-pager

10. Monitoring Resource dan Performance

Command monitoring membantu menjawab pertanyaan: server lambat karena apa?

top
htop
free -h
df -h
du -sh /path
vmstat 1
iostat 1
sar

Contoh mencari folder besar saat disk hampir penuh:

sudo du -xh / | sort -h | tail -n 30

Contoh cek proses paling boros RAM:

ps aux --sort=-%mem | head -n 15

Untuk disk test, hati-hati memakai dd. Jalankan di path yang aman dan hapus file test setelah selesai:

dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
rm /tmp/testfile

11. Package Management: Ubuntu/Debian dan RHEL

Di Ubuntu/Debian gunakan APT:

sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt install package
sudo apt remove package
sudo apt purge package
sudo apt autoremove

apt search package
apt show package
apt list --installed
apt-cache policy package

Di CentOS/RHEL/Rocky gunakan DNF/YUM:

sudo dnf update
sudo dnf install package
sudo dnf remove package
sudo dnf autoremove

dnf search package
dnf info package
dnf list installed
sudo dnf repolist

Catatan operasional: sebelum upgrade besar, baca changelog paket penting seperti Nginx, PostgreSQL, PHP, Docker, atau kernel. Untuk server production, upgrade sebaiknya punya jadwal maintenance dan rollback plan.

12. Systemd dan Service Management

Hampir semua service modern di Linux dikelola oleh systemd. Ini command yang paling sering dipakai:

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl status nginx

sudo systemctl enable nginx
sudo systemctl disable nginx
sudo systemctl is-enabled nginx

systemctl list-units --type=service
systemctl --failed

Bedakan restart dan reload. Restart mematikan lalu menyalakan ulang service. Reload biasanya hanya membaca ulang konfigurasi tanpa memutus proses utama. Untuk Nginx, reload lebih aman setelah nginx -t sukses.

13. Log Management dan Analisis Error

Log adalah tempat pertama saat aplikasi bermasalah. Gunakan journalctl untuk service systemd dan tail/grep untuk file log tradisional.

journalctl
journalctl -f
journalctl -p err
journalctl --since "1 hour ago"
journalctl -u nginx -f
journalctl -u nginx --since "1 hour ago"

tail -f /var/log/syslog
tail -f /var/log/auth.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

Analisis cepat:

grep -i "failed" /var/log/auth.log
grep "404" /var/log/nginx/access.log
grep -c "error" /var/log/syslog
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

Untuk melihat log hari ini:

grep "$(date '+%b %e')" /var/log/syslog
journalctl --since today

14. Backup dan Recovery

Backup yang belum pernah dites restore belum bisa dianggap aman. Minimal pahami tiga pola: copy biasa, tar archive, dan rsync incremental.

cp -r /home/user /backup/user_backup_$(date +%Y%m%d)
tar -czf backup_$(date +%Y%m%d).tar.gz /important/files

rsync -av /source/ /destination/
rsync -av --delete /source/ /destination/
rsync -av -e ssh /source/ user@server:/destination/

Contoh backup aplikasi web:

sudo mkdir -p /backup/app
sudo tar -czf /backup/app/app_files_$(date +%Y%m%d-%H%M).tar.gz /var/www/app
sudo rsync -av /var/www/app/storage/ /backup/app/storage/

Restore:

tar -xzf backup_20260718.tar.gz -C /restore/location/
rsync -av /backup/storage/ /var/www/app/storage/

15. Security: Firewall, SSH, dan Hardening Dasar

Untuk Ubuntu, UFW cukup untuk banyak server kecil sampai menengah:

sudo ufw enable
sudo ufw status
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 23
sudo ufw delete allow 80/tcp

Untuk firewalld:

sudo systemctl start firewalld
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

SSH hardening dasar:

ssh-keygen -t rsa -b 4096 -C "user@server"
ssh-copy-id user@server
sudo nano /etc/ssh/sshd_config

Setting yang umum dipakai:

PermitRootLogin no
PasswordAuthentication no

Setelah edit SSH, test konfigurasi dan jangan tutup sesi lama sebelum login baru berhasil:

sudo sshd -t
sudo systemctl reload sshd

Tambahkan tool keamanan dasar bila perlu:

sudo apt install fail2ban rkhunter chkrootkit
sudo systemctl enable --now fail2ban

16. Advanced: Sysctl, Limit, CPU Affinity, dan Network Namespace

Command advanced dipakai saat tuning performa atau isolasi network. Jalankan hanya kalau sudah tahu efeknya.

sysctl -a
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

ulimit -a
ulimit -n 65536

taskset -c 0,1 command
taskset -p 0,1 PID

Network namespace dan bridge:

sudo ip netns add test_ns
sudo ip netns exec test_ns ip addr show

sudo ip link add br0 type bridge
sudo ip link set eth0 master br0

Traffic control contoh:

sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit

17. Docker dan Container Command

Banyak server modern menjalankan aplikasi lewat Docker. Command dasar yang wajib dikuasai:

docker ps
docker ps -a
docker images
docker run -d nginx
docker exec -it container_id bash
docker logs container_id
docker logs -f container_id
docker inspect container_id

Contoh mencari container yang restart terus:

docker ps -a
docker logs --tail 100 container_id
docker inspect container_id | grep -i restart

18. One-Liner yang Berguna di Server

One-liner mempercepat pekerjaan, tapi tetap baca dulu sebelum menjalankan.

find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

ss -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

watch -d 'ls -la /path/to/directory'

openssl rand -base64 32

for f in *.txt; do mv "$f" "${f%.txt}.bak"; done

19. Skenario Troubleshooting Praktis

Website 502 Bad Gateway

curl -I https://example.com
sudo systemctl status nginx
sudo nginx -t
sudo journalctl -u nginx -n 100 --no-pager
sudo ss -tulpn | grep -E ':80|:443|:9000|:8000'

Kalau backend memakai PHP-FPM, cek juga:

sudo systemctl status php8.3-fpm
sudo journalctl -u php8.3-fpm -n 100 --no-pager

Disk Penuh

df -h
sudo du -xh / | sort -h | tail -n 30
sudo journalctl --disk-usage
sudo journalctl --vacuum-time=7d

Jangan langsung hapus folder besar tanpa tahu fungsinya. Untuk log, lebih aman gunakan logrotate atau vacuum journalctl.

SSH Ditolak

ping -c 4 server_ip
nc -zv server_ip 22
ssh -vvv user@server_ip
sudo tail -n 80 /var/log/auth.log

Kalau baru mengubah port SSH, pastikan firewall sudah mengizinkan port baru sebelum sesi lama ditutup.

Aplikasi Lambat

uptime
top
free -h
df -h
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
sudo iostat 1 5

Load tinggi tidak selalu berarti CPU habis. Bisa juga karena disk I/O lambat, swap aktif, query database berat, atau proses backup berjalan di jam sibuk.

20. Quick Reference Cheat Sheet

# File
ls -la
cd /path
cp src dest
mv old new
rm file
mkdir dir

# System
uname -a
uptime
df -h
free -h
lsblk

# Process
ps aux
top
kill PID
systemctl status service

# Network
ip addr show
ip route show
ping -c 4 host
ss -tulpn
curl -I https://domain.com

# Logs
journalctl -u service -f
tail -f /var/log/nginx/error.log
grep -i error /var/log/syslog

# Backup
tar -czf backup.tar.gz /path
rsync -av /source/ /dest/

Checklist Belajar dan Operasional

  • Bisa navigasi folder dan baca file log.
  • Bisa mencari file besar dan string error.
  • Bisa membaca penggunaan CPU, RAM, disk, dan proses.
  • Bisa cek port listening dan DNS.
  • Bisa start, stop, reload, dan cek status service systemd.
  • Bisa backup folder penting dan test restore sederhana.
  • Bisa mengelola user, group, permission, dan ownership tanpa memakai 777.
  • Bisa membaca log SSH, Nginx, dan aplikasi saat troubleshooting.
  • Bisa menjalankan command advanced hanya saat memang dibutuhkan.

Kalau command dasar sudah lancar, kemampuan berikutnya bukan menghafal lebih banyak perintah, tetapi membangun kebiasaan observasi: cek status, baca log, pahami konteks, backup dulu, lalu baru ubah sistem. Itu yang membedakan operator server yang rapi dengan sekadar pengguna command line.

Format gambar: JPG, PNG, GIF, WebP. Maksimal 5MB.

Artikel Terbaru

DENRAMA Support

Online via WhatsApp

Halo, butuh konsultasi IT, produk, billing, service, atau integrasi? Kirim pesan ke tim DenRama dan kami bantu arahkan dari sana.
Konsultasi layanan dan produk
Support teknis dan penjadwalan
Estimasi kebutuhan proyek
Chat via WhatsApp