Semua percakapan dengan systemd berjalan melalui satu perintah: systemctl. Perintah start dan stop dari Chapter sebelumnya hanyalah sebagian kecil dari kosakatanya — perintah ini juga yang mendaftar seluruh unit, membaca definisi, mengubah konfigurasi runtime, dan memindah target boot. Pola kalimatnya konsisten sehingga mudah dihafal: systemctl <subcommand> <unit>. Chapter ini membedah subcommand yang paling sering dipakai, dari inventaris berkas di disk sampai properti hidup di memori.
Pola Dasar: Satu Perintah, Banyak Subcommand #
Bila kita lupa subcommand apa saja yang tersedia, bantuan bawaannya siap menolong:
systemctl --help | sed -n '5,11p'Output yang Dihasilkan:
Unit Commands:
list-units [PATTERN...] List units currently in memory
list-automounts [PATTERN...] List automount units currently in memory,
ordered by path
list-paths [PATTERN...] List path units currently in memory,
ordered by path
list-sockets [PATTERN...] List socket units currently in memory,Cuplikan di atas menegaskan bahwa systemctl disusun sebagai daftar subcommand yang masing-masing punya tugas sempit — dan satu perintah bisa menerima lebih dari satu pola unit sekaligus. Yang paling sering kita perlukan dirangkum di sini:
| Subcommand | Tugas |
|---|---|
status UNIT | ringkasan lengkap: berkas, keadaan, proses, log terakhir |
start / stop / restart | mengendalikan service saat ini |
reload / reload-or-restart | memuat ulang konfigurasi tanpa henti total |
enable / disable / mask | mengatur keberadaan saat boot |
is-active / is-enabled | jawaban satu kata untuk script |
list-units | unit yang sedang dimuat di memori |
list-unit-files | unit yang tersedia di disk |
cat UNIT | menampilkan definisi unit yang sedang dipakai |
edit UNIT | membuka drop-in kustomisasi di /etc |
show UNIT | membaca properti runtime satu per satu |
isolate TARGET | pindah target, mematikan unit di luarnya |
daemon-reload | memuat ulang semua definisi yang berubah |
Mendaftar Unit di Disk: list-unit-files #
list-unit-files membaca seluruh berkas unit di tiga lokasi yang kita kenal dari Chapter systemd Units
— tanpa perlu systemd berjalan, karena sumbernya murni filesystem:
systemctl list-unit-files --type=service | head -8Output yang Dihasilkan:
UNIT FILE STATE PRESET
apt-daily-upgrade.service static -
apt-daily.service static -
[email protected] alias -
[email protected] static -
console-getty.service disabled disabled
[email protected] static -
cryptdisks-early.service masked enabledKolom STATE merangkum keadaan enable tiap unit — kosakata yang sudah kita kenal: static untuk unit tanpa section [Install], masked untuk yang dilarang, disabled untuk yang tidak diaktifkan. Dua keadaan baru juga muncul: alias berarti berkas itu hanyalah nama lain (symlink) ke unit lain, dan kolom PRESET menunjukkan kebijakan bawaan distribusi — Debian misalnya memutuskan cryptdisks-early.service seharusnya aktif, walau administrator sistem ini memutuskan men-mask-nya. Filter --type menerima semua jenis unit, jadi --type=timer atau --type=socket sama mudahnya.
Melihat yang Sedang Berjalan: list-units #
Kalau list-unit-files bertanya ke disk, list-units bertanya ke systemd yang sedang berjalan: unit mana yang sudah dimuat, aktif, dan dalam keadaan apa. Berikut contoh tampilan systemctl list-units --type=service pada sistem yang sedang hidup:
UNIT LOAD ACTIVE SUB DESCRIPTION
dbus.service loaded active running D-Bus System Message Bus
[email protected] loaded active running Getty on tty1
systemd-journald.service loaded active running Journal Service
[email protected] loaded active running User Manager for UID 1000
4 loaded units listed. Pass --all to see loaded but inactive units, too.Kolom LOAD menegaskan berkasnya berhasil dimuat, ACTIVE status umumnya, dan SUB status rincinya — running untuk daemon yang hidup, exited untuk tugas sekali jalan yang sukses lalu selesai. Tambahkan --all agar unit yang dimuat tapi tidak aktif ikut tampil, atau --state=failed untuk menangkap unit yang gagal saja — pintu masuk diagnosis favorit administrator.
Membaca Definisi dan Properti: cat, show, dan edit #
systemctl cat aplikasi.service mencetak definisi yang sedang dipakai systemd — berkas pemenang dari tiga lokasi, lengkap dengan drop-in <unit>.d/*.conf bila ada, sudah digabungkan. Inilah cara tercepat memastikan systemd membaca versi mana dari sebuah unit. Sementara systemctl edit aplikasi.service membuka editor untuk drop-in di /etc/systemd/system/aplikasi.service.d/override.conf; kita cukup menulis directive yang berubah, sisanya diwarisi dari berkas asli. Setiap selesai mengedit, daemon-reload wajib menyusul.
Untuk pertanyaan terarah, show membaca properti runtime satu per satu. systemctl show ssh.service -p ActiveState menjawab ActiveState=active; pola serupa untuk SubState, MainPID, ExecStart, dan ratusan properti lain — indeks lengkapnya dirangkum di systemd.directives(7)
. Perbedaan is-active dan show -p ActiveState: yang pertama menjawab untuk manusia dan script ringkas, yang kedua mengembalikan pasangan key=value yang presisi.
Pindah Target dengan isolate #
sudo systemctl isolate multi-user.target memerintahkan systemd menyalakan target tersebut beserta seluruh rantai dependensinya, lalu mematikan semua unit yang bukan bagian darinya. Inilah cara berpindah “mode operasi” tanpa reboot — misalnya turun dari mode grafis ke mode teks. Sejarahnya menggantikan perintah telinit era runlevel, dan detailnya kita bedah tuntas di Chapter systemd Targets
. Sebelum memindahkan target, anggota yang ditariknya bisa diperiksa langsung dari disk — folder .wants di bawah /etc/systemd/system/ adalah daftarnya:
ls -1 /etc/systemd/system/getty.target.wants/ /etc/systemd/system/sysinit.target.wants/Output yang Dihasilkan:
/etc/systemd/system/getty.target.wants/:
[email protected]
/etc/systemd/system/sysinit.target.wants/:
systemd-pstore.serviceKedua target ini masing-masing hanya punya satu anggota yang diaktifkan lewat /etc: satu layar login di tty1, dan satu service penyimpan log crash. Anggota target memang jarang diaktifkan satu per satu — kebanyakan menyatakan dirinya sendiri lewat WantedBy di section [Install], mekanisme yang sudah kita praktikkan di Chapter Managing Services
.
Daftar dan definisi kini lengkap di tangan kita. Satu pertanyaan tinggal mengganjal: dari ratusan unit itu, apa yang menentukan siapa menyala lebih dulu dan siapa menarik siapa? Jawabannya ada di directive Wants, Requires, After, dan Before — topik Chapter Service Dependencies
.