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:

PerintahFungsiContoh
systemctl statusMenampilkan status runtime satu unitsystemctl status nginx
systemctl startMenjalankan unit sekarangsudo systemctl start nginx
systemctl stopMenghentikan unit sekarangsudo systemctl stop nginx
systemctl restartMenghentikan lalu menjalankan ulangsudo systemctl restart nginx
systemctl reloadMemuat ulang konfigurasi tanpa memutus proses (bila didukung)sudo systemctl reload nginx
systemctl enableMembuat unit berjalan otomatis saat bootsudo systemctl enable nginx
systemctl disableMembatalkan autostart saat bootsudo systemctl disable nginx
systemctl enable --nowAutostart sekaligus langsung dijalankansudo systemctl enable --now nginx
systemctl is-activeMemeriksa apakah unit sedang berjalan (untuk skrip)systemctl is-active nginx
systemctl is-enabledMemeriksa apakah unit diaktifkan saat bootsystemctl is-enabled nginx
systemctl maskMengunci unit total agar tidak bisa distart oleh apa punsudo systemctl mask nginx
systemctl unmaskMembuka kunci dari masksudo systemctl unmask nginx
systemctl list-unitsMendaftar unit yang dimuat di memorisystemctl list-units --type=service
systemctl list-unit-filesMendaftar seluruh unit file di disk beserta statusnyasystemctl list-unit-files --type=timer
systemctl daemon-reloadMemuat ulang unit file yang baru diubahsudo systemctl daemon-reload
systemctl catMenampilkan isi unit file yang aktif dipakaisystemctl cat ssh

Versi systemd yang terpasang menentukan fitur dan sintaks yang tersedia; kita periksa versi di mesin ini dengan satu perintah:

bash
systemctl --version | head -1

Output yang Dihasilkan:

text
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 perintahFungsi
journalctl -u nginxSeluruh log milik satu unit saja
journalctl -u nginx -fMengikuti log unit secara langsung (seperti tail -f)
journalctl -eMembuka log lalu melompat ke baris terakhir
journalctl -n 50Hanya 50 baris terakhir
journalctl --since "09:00" --until "10:00"Membatasi rentang waktu
journalctl -p errHanya prioritas error dan lebih parah
journalctl -bSejak boot terakhir; -b -1 untuk boot sebelumnya
journalctl -kHanya pesan kernel (ringkasan dmesg)
journalctl --disk-usageUkuran jurnal yang tersimpan di disk
journalctl --vacuum-size=200MMemangkas 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:

JenisEkstensiPeran
service.serviceSebuah daemon atau proses — jenis yang paling sering kita olah
socket.socketMendengarkan port/socket lalu memicu service saat koneksi datang
timer.timerMenjadwalkan service berjalan pada waktu tertentu — pengganti modern cron (lihat systemd Timers )
target.targetGrup sinkronisasi unit, misalnya multi-user.target sebagai pengganti runlevel
mount.mountTitik mount yang dibuat dari entri /etc/fstab
path.pathBereaksi saat sebuah path berubah, misalnya berkas spool muncul
slice.slicePengelompokan 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:

ini
[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.target

Field-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 :

FieldSeksiArti
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:

bash
grep -E '^(Description|Type|ExecStart)=' /lib/systemd/system/dpkg-db-backup.service
grep -c '^\[' /lib/systemd/system/dpkg-db-backup.service

Output yang Dihasilkan:

text
Description=Daily dpkg database backup service
Type=oneshot
ExecStart=/usr/libexec/dpkg/dpkg-db-backup
2

Baris 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 .