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:

bash
systemctl --help | sed -n '5,11p'

Output yang Dihasilkan:

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

SubcommandTugas
status UNITringkasan lengkap: berkas, keadaan, proses, log terakhir
start / stop / restartmengendalikan service saat ini
reload / reload-or-restartmemuat ulang konfigurasi tanpa henti total
enable / disable / maskmengatur keberadaan saat boot
is-active / is-enabledjawaban satu kata untuk script
list-unitsunit yang sedang dimuat di memori
list-unit-filesunit yang tersedia di disk
cat UNITmenampilkan definisi unit yang sedang dipakai
edit UNITmembuka drop-in kustomisasi di /etc
show UNITmembaca properti runtime satu per satu
isolate TARGETpindah target, mematikan unit di luarnya
daemon-reloadmemuat 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:

bash
systemctl list-unit-files --type=service | head -8

Output yang Dihasilkan:

text
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   enabled

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

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

bash
ls -1 /etc/systemd/system/getty.target.wants/ /etc/systemd/system/sysinit.target.wants/

Output yang Dihasilkan:

text
/etc/systemd/system/getty.target.wants/:
[email protected]

/etc/systemd/system/sysinit.target.wants/:
systemd-pstore.service

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