Paket 1 · Fondasi DevOpsModul C — Linux Fundamentals

Process, Job, Service, dan System Management

Melihat dan mengelola proses, job shell, service systemd, log, serta tugas terjadwal di Linux server.

Server selalu menjalankan banyak proses. Sebagian berjalan singkat, sebagian sebagai service latar belakang. Modul ini membahas cara memantau, menghentikan, dan mengelola proses serta service dengan benar.

Process

Setiap program yang berjalan adalah process dengan PID (Process ID), parent, user, dan status.

ps aux
ps -ef
top
htop
PerintahFungsi
ps auxSnapshot semua proses
topMonitor real-time bawaan
htopMonitor interaktif (perlu install)
pgrep nginxCari PID berdasarkan nama
pidof nginxPID program tertentu
pstree -pPohon proses

Contoh instalasi htop:

apt install -y htop

Status proses di ps

KodeArti
RRunning
SSleeping (menunggu)
DUninterruptible sleep (biasanya I/O)
ZZombie
TStopped

Menghentikan proses

kill PID
kill -15 PID
kill -9 PID
pkill -f "node server.js"
SignalArti
SIGTERM (15)Minta proses berhenti dengan rapi
SIGINT (2)Interupsi, biasanya Ctrl+C
SIGKILL (9)Paksa berhenti, tidak bisa ditangani
SIGHUP (1)Reload konfigurasi pada banyak daemon

Utamakan SIGTERM

Gunakan SIGTERM lebih dulu agar aplikasi sempat menutup koneksi dan menyimpan data. kill -9 hanya jika proses benar-benar tidak merespons.

Job shell

Job adalah proses yang dijalankan dari shell interaktif.

sleep 300 &
jobs
fg %1
bg %1
Ctrl+Z
  • & menjalankan di background.
  • Ctrl+Z menangguhkan proses ke background.
  • jobs melihat daftar job.
  • fg mengembalikan ke foreground.
  • bg melanjutkan di background.

Agar proses tetap hidup setelah logout:

nohup node server.js > app.log 2>&1 &

Untuk produksi, gunakan systemd atau PM2, bukan nohup sebagai solusi permanen.

Service dengan systemd

systemd adalah init system yang mengelola service, mount, timer, dan banyak lagi.

systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx
systemctl enable nginx
systemctl disable nginx
systemctl is-enabled nginx
PerintahFungsi
startMenjalankan service
stopMenghentikan service
restartStop lalu start
reloadMemuat ulang konfigurasi tanpa stop
enableAktif saat boot
disableTidak aktif saat boot

Membuat service sendiri

Buat file /etc/systemd/system/myapp.service:

[Unit]
Description=Aplikasi Node.js Latihan
After=network.target

[Service]
Type=simple
User=deploy
WorkingDirectory=/srv/app
Environment=NODE_ENV=production
EnvironmentFile=/srv/app/.env
ExecStart=/usr/bin/node /srv/app/server.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Aktifkan:

systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp --no-pager

Log dengan journalctl

journalctl -u nginx
journalctl -u myapp -f
journalctl -u myapp --since "1 hour ago"
journalctl -p err -b
journalctl --disk-usage
OpsiArti
-uFilter unit/service
-fIkuti log real-time
--sinceSejak waktu tertentu
-p errHanya level error
-bLog boot saat ini

Tugas terjadwal: cron

crontab -e
crontab -l

Format cron:

* * * * * perintah
│ │ │ │ │
│ │ │ │ └─ hari (0-7, Minggu=0 atau 7)
│ │ │ └─── bulan (1-12)
│ │ └───── tanggal (1-31)
│ └─────── jam (0-23)
└───────── menit (0-59)

Contoh backup setiap hari pukul 02.00:

0 2 * * * /usr/bin/tar -czf /backup/app-$(date +\%F).tar.gz /srv/app

Cron vs systemd timer

Untuk service modern, systemd timer lebih mudah dipantau lewat systemctl list-timers dan terintegrasi dengan journal. Cron tetap sederhana dan banyak dipakai.

Praktik: memantau aplikasi

# 1. Lihat proses Node
pgrep -af node

# 2. Cek service
systemctl status myapp --no-pager

# 3. Ikuti log
journalctl -u myapp -f

# 4. Cek penggunaan resource
top -o %CPU
free -h
df -h

Ringkasan

  • Process dikelola dengan ps, top, pgrep, dan kill.
  • Job shell memakai &, jobs, fg, dan bg.
  • Service permanen sebaiknya dijalankan lewat systemd.
  • journalctl membaca log, sedangkan cron atau timer menjalankan tugas terjadwal.

Selanjutnya

On this page