Menguasai systemd sebagai service manager AlmaLinux: siklus hidup unit, target boot, membuat unit service dengan override, kontrol resource memakai cgroups v2, serta membaca dan memfilter log sistem lewat journalctl secara efektif.

Di episode 6 sebelumnya kita mengatur user, permission, dan sudo — identitas siapa yang boleh mengakses sistem. Sekarang kita beralih ke apa yang dijalankan sistem: service dan proses. Hampir semua layanan di AlmaLinux — SSH, firewall, Cockpit, database — dikelola oleh systemd, init system sekaligus service manager yang menjadi standar ekosistem RHEL.
Episode ini membedah systemd dari siklus hidup unit hingga target boot, mengajarkan membuat unit service sendiri, mengelola resource dengan cgroups v2, dan menutup dengan journald — sistem log yang menyatukan jejak semua service.
Systemd adalah PID 1 — proses pertama yang dijalankan kernel saat boot, dan induk dari semua proses lain. Perannya: memulai, mengawasi, dan menghentikan service; mengelola mount, timer, dan target; serta mencatat log lewat journald.
ps -p 1 -o comm=Setiap service bisa berada di salah satu dari beberapa status berikut:
| Perintah | Status / Aksi |
|---|---|
systemctl start <unit> | Menjalankan unit |
systemctl stop <unit> | Menghentikan unit |
systemctl restart <unit> | Restart (berhenti lalu mulai lagi) |
systemctl reload <unit> | Baca ulang konfigurasi tanpa berhenti |
systemctl enable --now <unit> | Aktif dan auto-start saat boot |
systemctl status <unit> | Status, PID, dan log terbaru |
systemctl is-active <unit> | Cek aktif/tidak |
sudo systemctl enable --now sshd
systemctl status sshd
systemctl is-active sshdSystemd tidak memakai "runlevel" lama — ia memakai target, yang analog dengan keadaan sistem. Target menentukan set unit yang aktif.
| Target | Fungsi |
|---|---|
multi-user.target | Sistem text mode multi-user (default server) |
graphical.target | Sistem dengan GUI |
rescue.target | Mode pemulihan single-user |
emergency.target | Shell darurat minimal |
systemctl get-default
sudo systemctl set-default multi-user.targetSaat kalian menjalankan aplikasi custom sebagai daemon, buat unit service untuknya. Unit disimpan di /etc/systemd/system/. Berikut contoh untuk aplikasi web sederhana:
[Unit]
Description=My Custom Application
After=network-online.target
Wants=network-online.target
[Service]
User=devops
Group=devops
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/myapp
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now myappJangan pernah mengedit unit file bawaan package langsung — update package akan menimpa perubahan kalian. Gunakan override:
sudo systemctl edit myapp[Service]
Environment="PORT=8080"
Restart=alwaysSystemd mengelola resource proses lewat cgroups (control groups). Ini memungkinkan kalian membatasi CPU, memori, dan I/O sebuah service — seperti batas anggaran per departemen.
[Service]
MemoryMax=512M
CPUQuota=50%
MemoryHigh=384MMemoryMax — batas keras memori; proses yang melewatinya bisa di-kill.MemoryHigh — batas lunak; throttling terjadi sebelum batas keras.CPUQuota=50% — membatasi penggunaan maksimal setengah dari satu core.sudo systemctl daemon-reload
sudo systemctl restart myapp
systemctl status myappjournald adalah daemon logging systemd. Ia mengumpulkan log dari kernel dan semua service ke satu database terstruktur di /var/log/journal/.
journalctl -bjournalctl -u sshd --since "1 hour ago"journalctl -f -u myapp-b membatasi ke boot saat ini, -u memfilter per unit, --since mengambil rentang waktu, dan -f mengikuti log seperti tail -f. Kombinasi paling sering dipakai: journalctl -u <service> --since "30 min ago" untuk debugging.
journalctl -p err -bInfo
journald menyimpan log dalam format binary yang dirotasi otomatis. Log lama bisa dipertahankan dengan mengatur SystemMaxUse di /etc/systemd/journald.conf. Interaksi journald dengan rsyslog dan logrotate akan kita bahas di episode 12.
systemctl edit untuk override agar tidak tertimpa saat update.daemon-reload setelah mengubah unit file. Systemd tidak membaca perubahan sampai reload.Restart=always tanpa batas. Loop restart cepat bisa memakan resource — pasang RestartSec dan pertimbangkan on-failure.journalctl -u lebih cepat daripada memilah /var/log/messages.Pada episode 7 ini kalian telah menguasai systemd dan journald: siklus hidup unit dengan systemctl, target boot, pembuatan unit service dengan override, kontrol resource memakai cgroups v2, dan pencarian log yang efektif dengan journalctl.
Inti yang harus dibawa pulang:
systemctl start/stop/restart/status dan enable --now.multi-user.target untuk server, graphical.target untuk desktop./etc/systemd/system/ dan pakai systemctl edit untuk override.MemoryMax dan CPUQuota di cgroups v2.journalctl -u <service> --since dan journalctl -p err -b.Service yang sehat adalah kunci sistem yang stabil. Di episode 8 selanjutnya, kita akan membahas Storage, LVM & Filesystems — dari lsblk, parted, mkfs, dan /etc/fstab, hingga manajemen LVM dengan lvextend dan snapshot, plus Btrfs dan Stratis sebagai opsi storage modern. Sampai jumpa!