Manajemen Layanan
Perintah Layanan Dasar
systemctl start nginx systemctl stop nginx systemctl restart nginx systemctl reload nginx # reload config systemctl status nginx
Enable / Disable
systemctl enable nginx # start at boot systemctl disable nginx # remove from boot systemctl enable --now nginx # enable + start systemctl is-enabled nginx
Status Layanan
active (running)Layanan berjalan normal
active (exited)Berjalan sekali dan selesai dengan sukses
inactive (dead)Layanan dihentikan
failedLayanan crash atau keluar dengan error
activatingLayanan sedang dijalankan
File Unit
Lokasi File Unit
/etc/systemd/system/Unit buatan admin (prioritas tertinggi)
/run/systemd/system/Unit yang dibuat saat runtime
/usr/lib/systemd/system/Unit yang diinstal paket
~/.config/systemd/user/Unit tingkat pengguna
Unit Layanan Dasar
[Unit] Description=My Application After=network.target [Service] ExecStart=/usr/bin/myapp --config /etc/myapp.conf Restart=on-failure User=appuser [Install] WantedBy=multi-user.target
Terapkan Perubahan
systemctl daemon-reload # reload unit files systemctl restart myapp # apply changes
Timer
Unit Timer
[Unit] Description=Run backup daily [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target
Sintaks OnCalendar
*-*-* 02:00:00Setiap hari pukul 02:00
Mon *-*-* 09:00:00Setiap Senin pukul 09:00
*-*-01 00:00:00Hari pertama setiap bulan
hourly / daily / weeklyJadwal singkat
Manajemen Timer
systemctl list-timers --all systemctl start backup.timer systemctl enable backup.timer systemd-analyze calendar "daily"
Target
Target Umum
multi-user.targetBoot normal, multi-pengguna, tanpa GUI
graphical.targetDesktop GUI lengkap
rescue.targetMode rescue single-user
emergency.targetShell minimal, hanya root
network-online.targetJaringan sudah terkonfigurasi penuh
timers.targetSemua unit timer siap
Perintah Target
systemctl get-default systemctl set-default multi-user.target systemctl isolate rescue.target systemctl list-dependencies graphical.target
Journalctl
Melihat Log
journalctl -u nginx # logs for unit journalctl -u nginx -f # follow (tail) journalctl -u nginx --no-pager journalctl -b # current boot only
Filter Log
journalctl --since "2026-03-01" journalctl --since "1 hour ago" journalctl -p err # errors and above journalctl _PID=1234
Level Prioritas
emerg (0)Sistem tidak dapat digunakan
alert (1)Tindakan segera diperlukan
crit (2)Kondisi kritis
err (3)Kondisi error
warning (4)Kondisi peringatan
info (6)Informasional
debug (7)Pesan level debug
Pemeliharaan Log
journalctl --disk-usage journalctl --vacuum-size=500M journalctl --vacuum-time=30d
Jaringan
networkctl
networkctl list networkctl status eth0 networkctl up eth0 networkctl down eth0
systemd-resolve
resolvectl status resolvectl query example.com resolvectl flush-caches resolvectl statistics
Tunggu Jaringan
# In unit file [Unit] section: After=network-online.target Wants=network-online.target
Mount
Unit Mount
[Unit] Description=Mount data volume [Mount] What=/dev/sdb1 Where=/mnt/data Type=ext4 Options=defaults,noatime [Install] WantedBy=multi-user.target
Unit Automount
[Unit] Description=Automount data on access [Automount] Where=/mnt/data TimeoutIdleSec=300 [Install] WantedBy=multi-user.target
Konvensi Penamaan
/mnt/dataFile unit: mnt-data.mount
/var/lib/appFile unit: var-lib-app.mount

Path mount dengan `/` diganti `-`, tanda hubung awal dihilangkan

Environment
Mengatur Variabel Environment
[Service] Environment=APP_ENV=production Environment=PORT=8080 EnvironmentFile=/etc/myapp/env
Format File Environment
# /etc/myapp/env APP_ENV=production DATABASE_URL=postgres://localhost/db SECRET_KEY=changeme
Hardening Layanan
ProtectSystem=strictFilesystem hanya-baca kecuali path yang diizinkan
ProtectHome=trueSembunyikan /home, /root, /run/user
NoNewPrivileges=trueCegah eskalasi hak istimewa
PrivateTmp=true/tmp terisolasi untuk layanan
ReadWritePaths=/var/lib/myappIzinkan penulisan ke path tertentu
Dependensi
Direktif Urutan dan Ketergantungan
After=b.serviceMulai setelah b (hanya urutan)
Before=b.serviceMulai sebelum b (hanya urutan)
Requires=b.serviceDependensi keras; gagal jika b gagal
Wants=b.serviceDependensi lunak; tidak gagal jika b gagal
BindsTo=b.serviceBerhenti ketika b berhenti
Conflicts=b.serviceTidak bisa berjalan bersamaan dengan b
Inspeksi Dependensi
systemctl list-dependencies nginx systemctl list-dependencies --reverse nginx systemd-analyze dot nginx.service | dot -Tsvg > deps.svg
Pola Umum
Kebijakan Restart
Restart=noTidak pernah restart (default)
Restart=on-failureRestart jika keluar dengan kode non-nol
Restart=alwaysSelalu restart (untuk daemon)
RestartSec=5Tunggu 5 detik sebelum restart
StartLimitBurst=3Maksimum restart dalam interval
StartLimitIntervalSec=60Interval untuk penghitungan burst
Override Tanpa Mengedit
systemctl edit nginx # creates drop-in # /etc/systemd/system/nginx.service.d/override.conf systemctl cat nginx # show effective config systemctl revert nginx # remove overrides
Analisis Sistem
systemd-analyze # boot time systemd-analyze blame # per-unit time systemd-analyze critical-chain systemctl list-units --failed