Sebagian besar waktu administrasi Linux modern berakhir di dua perintah: systemctl untuk mengelola service, dan journalctl untuk membaca jejaknya. Halaman ini merangkum keduanya dalam tabel rujukan — subcommand penting systemctl, pola journalctl yang paling sering diketik, jenis unit yang perlu dikenali, serta anatomi unit file service. Gunakan halaman ini sebagai contekan saat operasional; penjelasan konsep systemd secara utuh ada di chapter Pengenalan systemd
dan systemctl
.
Perintah systemctl Esensial #
Semua subcommand di bawah berlaku untuk nama unit lengkap (nginx.service) maupun singkat (nginx). Perintah yang mengubah keadaan sistem (start, stop, enable, mask) umumnya membutuhkan sudo; perintah pembacaan (status, list-units, cat, is-active) tidak:
| Perintah | Fungsi | Contoh |
|---|---|---|
systemctl status | Menampilkan status runtime satu unit | systemctl status nginx |
systemctl start | Menjalankan unit sekarang | sudo systemctl start nginx |
systemctl stop | Menghentikan unit sekarang | sudo systemctl stop nginx |
systemctl restart | Menghentikan lalu menjalankan ulang | sudo systemctl restart nginx |
systemctl reload | Memuat ulang konfigurasi tanpa memutus proses (bila didukung) | sudo systemctl reload nginx |
systemctl enable | Membuat unit berjalan otomatis saat boot | sudo systemctl enable nginx |
systemctl disable | Membatalkan autostart saat boot | sudo systemctl disable nginx |
systemctl enable --now | Autostart sekaligus langsung dijalankan | sudo systemctl enable --now nginx |
systemctl is-active | Memeriksa apakah unit sedang berjalan (untuk skrip) | systemctl is-active nginx |
systemctl is-enabled | Memeriksa apakah unit diaktifkan saat boot | systemctl is-enabled nginx |
systemctl mask | Mengunci unit total agar tidak bisa distart oleh apa pun | sudo systemctl mask nginx |
systemctl unmask | Membuka kunci dari mask | sudo systemctl unmask nginx |
systemctl list-units | Mendaftar unit yang dimuat di memori | systemctl list-units --type=service |
systemctl list-unit-files | Mendaftar seluruh unit file di disk beserta statusnya | systemctl list-unit-files --type=timer |
systemctl daemon-reload | Memuat ulang unit file yang baru diubah | sudo systemctl daemon-reload |
systemctl cat | Menampilkan isi unit file yang aktif dipakai | systemctl cat ssh |
Versi systemd yang terpasang menentukan fitur dan sintaks yang tersedia; kita periksa versi di mesin ini dengan satu perintah:
systemctl --version | head -1Output yang Dihasilkan:
systemd 257 (257.13-1~deb13u1)Baris systemd 257 menandakan versi mayor, sedangkan teks dalam kurung adalah versi paket lengkap dari distro — angka ini yang perlu dicocokkan saat membaca dokumentasi fitur baru di systemd.io
.
Membaca Log dengan journalctl #
Service yang dikelola systemd menulis lognya ke journald, dan journalctl adalah satu-satunya pintu masuknya — lengkap dengan filter per unit, waktu, prioritas, dan boot. Materi lengkapnya ada di chapter journalctl
:
| Pola perintah | Fungsi |
|---|---|
journalctl -u nginx | Seluruh log milik satu unit saja |
journalctl -u nginx -f | Mengikuti log unit secara langsung (seperti tail -f) |
journalctl -e | Membuka log lalu melompat ke baris terakhir |
journalctl -n 50 | Hanya 50 baris terakhir |
journalctl --since "09:00" --until "10:00" | Membatasi rentang waktu |
journalctl -p err | Hanya prioritas error dan lebih parah |
journalctl -b | Sejak boot terakhir; -b -1 untuk boot sebelumnya |
journalctl -k | Hanya pesan kernel (ringkasan dmesg) |
journalctl --disk-usage | Ukuran jurnal yang tersimpan di disk |
journalctl --vacuum-size=200M | Memangkas jurnal sampai di bawah 200 MB |
Kombinasi yang paling sering diketik saat memburu masalah: journalctl -u <unit> -e untuk melihat kejadian terakhir sebuah service, lalu journalctl -b -p err untuk melihat semua kejadian buruk sejak boot terakhir tanpa peduli unit mana yang menulisnya.
Jenis Unit yang Perlu Dikenal #
Semua yang dikelola systemd adalah unit, dan nama belakangnya (nginx.service, logrotate.timer) menentukan jenisnya:
| Jenis | Ekstensi | Peran |
|---|---|---|
| service | .service | Sebuah daemon atau proses — jenis yang paling sering kita olah |
| socket | .socket | Mendengarkan port/socket lalu memicu service saat koneksi datang |
| timer | .timer | Menjadwalkan service berjalan pada waktu tertentu — pengganti modern cron (lihat systemd Timers ) |
| target | .target | Grup sinkronisasi unit, misalnya multi-user.target sebagai pengganti runlevel |
| mount | .mount | Titik mount yang dibuat dari entri /etc/fstab |
| path | .path | Bereaksi saat sebuah path berubah, misalnya berkas spool muncul |
| slice | .slice | Pengelompokan cgroup untuk membatasi sumber daya sekelompok proses |
Hubungan antar jenis unit inilah yang membuat systemd bisa menjalankan service tepat setelah jaringan siap (After=network-online.target) atau tepat saat port dituju (socket activation) — dibahas di chapter Service Dependencies
.
Anatomi Unit File Service #
Unit file service berformat INI dengan tiga seksi utama. Contoh minimal berikut menangkap seluruh pola yang perlu dikenali:
[Unit]
Description=Backup harian dokumen
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-harian.sh
[Install]
WantedBy=multi-user.targetField-field pentingnya dirangkum di tabel berikut; senarai lengkapnya ada di manual systemd.unit(5) di man Arch Linux dan praktik menulisnya di chapter Writing systemd Service Units :
| Field | Seksi | Arti |
|---|---|---|
Description | [Unit] | Nama deskriptif yang tampil di systemctl status |
After | [Unit] | Unit ini dimulai setelah unit yang disebut (urutan, bukan dependensi kuat) |
Wants | [Unit] | Ikut menarik unit lain berjalan, tapi gagalnya tidak menular |
Requires | [Unit] | Dependensi kuat: bila yang disebut gagal, unit ini juga gagal |
Type | [Service] | Model proses: simple (bawaan), forking, oneshot, notify |
ExecStart | [Service] | Perintah yang dijalankan saat service start — path absolut |
Restart | [Service] | Kapan service dihidupkan ulang otomatis, misalnya on-failure |
WantedBy | [Install] | Target yang “memasang” unit ini saat enable dijalankan |
Teori di atas bisa langsung diuji pada unit asli di disk. Unit dpkg-db-backup.service milik paket dpkg berukuran kecil, jadi cocok untuk diselidiki dengan grep — kita ambil field pentingnya dan hitung jumlah seksinya:
grep -E '^(Description|Type|ExecStart)=' /lib/systemd/system/dpkg-db-backup.service
grep -c '^\[' /lib/systemd/system/dpkg-db-backup.serviceOutput yang Dihasilkan:
Description=Daily dpkg database backup service
Type=oneshot
ExecStart=/usr/libexec/dpkg/dpkg-db-backup
2Baris pertama membuktikan unit tersebut berisi field Description, Type, dan ExecStart persis seperti contoh anatomi di atas, sedangkan angka 2 dari grep -c '^\[' menghitung jumlah header seksi [Unit] dan [Service]. Unit nyata di mesin kita bisa dibedah dengan cara yang sama: systemctl cat <unit> menampilkan file aslinya, grep '^Description=' meringkas satu baris per unit, dan pola ini bekerja untuk ratusan unit sekaligus lewat shell loop di Shell Scripting
.
Perintah untuk mengelola sistem dan membaca lognya kini lengkap di satu halaman. Halaman rujukan berikutnya melanjutkan ke lapisan yang di atasnya: alamat IP, port, dan perintah diagnosis jaringan di Referensi Networking .