Perintah systemctl Linux: status, start, dan enable layanan

Perintah systemctl memeriksa dan mengelola unit systemd, termasuk layanan: memulai, menghentikan, memulai ulang, dan mengatur aktivasinya. Mulailah dengan status saat menyelidiki gangguan, lalu bedakan keadaan unit sekarang dari pengaturan enable.

Unit adalah objek yang dikelola systemd, misalnya layanan .service. Start meminta aktivasi sekarang, sedangkan enable menghubungkan unit ke mekanisme aktivasi yang ditentukan berkas unit, sering kali saat boot. Keduanya tidak saling menggantikan. Uraian lebih luas tersedia dalam panduan layanan, boot, dan log systemd dalam bahasa Inggris.

Sintaks dan lingkungan tujuan

systemctl [OPSI] PERINTAH [UNIT]

OPSI, PERINTAH, dan UNIT adalah penanda yang diganti nilai sebenarnya. Periksa systemctl --version, systemctl --help, dan man systemctl. Panduan ini mengelola manager sistem; penggunaan --user mengarah ke manager pengguna yang berbeda.

Operasi layanan memerlukan systemd dan akses ke manager yang sesuai. Kontainer minimal atau sistem dengan init lain dapat tidak mendukungnya. Memiliki program systemctl saja tidak membuktikan bahwa manager sistem tersedia; menambahkan sudo tidak otomatis memperbaiki masalah bus atau lingkungan.

Periksa status layanan terlebih dahulu

systemctl status sshd.service

Sshd.service adalah contoh nama. Sebagian distribusi memakai nama lain, seperti ssh.service; pastikan nama unit dari instalasi Anda sebelum melakukan perubahan. Status menampilkan keadaan dan ringkasan log terbaru. Baca Load, Active, hasil proses, dan pesan terkait; tekan q untuk keluar bila pager terbuka.

Status yang tidak berhasil tidak selalu berarti perintah rusak: unit tidak aktif atau tidak ditemukan juga dapat menghasilkan status keluar bukan nol. Untuk log lebih lengkap, gunakan journalctl -u sshd.service dengan nama yang benar. Tersedia panduan journalctl dalam bahasa Inggris.

Pisahkan keadaan active dan enabled

systemctl is-active sshd.service

Is-active menampilkan keadaan saat ini. Untuk satu unit, status keluar nol menunjukkan active; hasil lain perlu ditafsirkan bersama keadaan yang tercetak dan pesan kesalahan. Jangan menganggap setiap keluaran bukan nol hanya berarti inactive.

systemctl is-enabled sshd.service

Is-enabled memeriksa pengaturan berkas unit, bukan apakah prosesnya sedang berjalan. Baca teks keadaannya juga: selain enabled atau disabled, unit dapat memiliki keadaan seperti static atau masked. Status keluar nol dari is-enabled tidak selalu berarti teks hasilnya tepat enabled.

Untuk contoh unit yang aktif, kueri berikut dapat menghasilkan active:

systemctl is-active sshd.service
active

Active adalah keadaan aktivasi unit, bukan jaminan aplikasi melayani permintaan dengan benar. Layanan oneshot dengan RemainAfterExit=yes bahkan dapat tetap active setelah prosesnya selesai. Periksa subkeadaan dan perilaku aplikasi bila diagnosis memerlukannya.

Enabled tidak menjamin unit selalu berhasil dimulai, dan disabled tidak melarang unit dimulai manual atau dipicu dependensi lain. Makna keadaan serta perintah dijelaskan dalam manual resmi systemctl.

Pilih operasi yang sesuai

Operasi Arti
status UNIT Keadaan saat ini dan ringkasan log terbaru.
start UNIT
stop UNIT
Memulai atau menghentikan aktivasi sekarang.
restart UNIT Menghentikan lalu memulai; unit yang belum berjalan juga dapat dimulai.
reload UNIT Meminta layanan membaca ulang konfigurasi aplikasinya jika didukung.
enable UNIT
disable UNIT
Mengubah hubungan aktivasi yang ditentukan berkas unit; tidak otomatis memulai atau menghentikan layanan.

Jika memang ingin aktivasi sekarang sekaligus enable, periksa penggunaan sudo systemctl enable --now UNIT, setelah mengganti UNIT dengan nama yang benar. Ini melakukan perubahan nyata; bukan perintah pemeriksaan. Disable --now juga dapat menghentikan layanan, sehingga pilih sesuai tujuan.

Setelah mengubah berkas unit, sudo systemctl daemon-reload meminta manager membaca ulang definisinya. Ini berbeda dari reload konfigurasi aplikasi dan tidak dengan sendirinya me-restart layanan. Lakukan restart hanya bila diperlukan dan setelah menyiapkan pemulihan. Jangan menjalankannya secara membabi buta pada layanan SSH atau web yang sedang digunakan.

Bandingkan keadaan melalui unit latihan khusus

Jalankan latihan hanya pada mesin virtual khusus dengan systemd sebagai PID 1 dan hak administrasi. PID 1 adalah proses init utama. Pastikan /usr/bin/true tersedia. Latihan membuat satu layanan oneshot, tidak memakai layanan SSH atau web. Simpan akses konsol dan lakukan pembersihan sesudahnya.

Sebelum blok berikut, pastikan nama lf-systemctl-lab.service belum digunakan dalam manager maupun jalur pencarian unit lain. Periksa systemctl status lf-systemctl-lab.service, systemctl cat lf-systemctl-lab.service, dan daftar berkas unit. Hentikan jika nama sudah ada, alias/drop-in ditemukan, atau akses manager gagal. Pemeriksaan dalam blok hanya melindungi lokasi berkas lokal yang disebutkan; jangan menganggapnya audit seluruh jalur unit.

(
set -eu
unit=lf-systemctl-lab.service
file=/etc/systemd/system/$unit
if sudo test -e "$file" || sudo test -L "$file" ||
   sudo test -e "$file.d"; then
    printf 'Lab name already exists; stop and choose another name.\n' >&2
    exit 1
fi
sudo sh -c 'set -C; cat > "$1"' sh "$file" <<'EOF'
[Unit]
Description=Linux Factory systemctl state lab
[Service]
Type=oneshot
ExecStart=/usr/bin/true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemd-analyze verify "$file"
sudo systemctl daemon-reload
sudo systemctl start "$unit"
systemctl is-active "$unit"
sudo systemctl enable "$unit"
systemctl is-enabled "$unit"
sudo systemctl stop "$unit"
systemctl is-active "$unit" || true
systemctl is-enabled "$unit"
sudo systemctl disable "$unit"
systemctl is-enabled "$unit" || true
)

Jika semua tahap berhasil: setelah start hasil is-active adalah active; setelah enable hasil is-enabled adalah enabled. Setelah stop, unit menjadi inactive tetapi tetap enabled. Setelah disable, pengaturannya disabled. Baca hasil setiap tahap; || true membiarkan blok berlanjut ketika pemeriksaan keadaan mengembalikan bukan nol, tetapi juga dapat menyamarkan kegagalan kueri yang perlu diperiksa.

RemainAfterExit=yes mempertahankan keadaan active pada layanan oneshot ini tanpa proses jangka panjang. Perilaku tersebut dijelaskan dalam manual konfigurasi layanan systemd.

Untuk membersihkan, pastikan definisi berkas masih persis milik latihan ini dan tidak diedit pihak lain. Jalankan sudo systemctl disable --now lf-systemctl-lab.service, hapus hanya /etc/systemd/system/lf-systemctl-lab.service yang dibuat latihan, lalu sudo systemctl daemon-reload. Periksa kembali keadaan serta berkasnya. Jika blok berhenti karena kesalahan, selidiki tahap terakhir dan bersihkan hanya objek latihan yang sama; jangan menimpa unit yang sebelumnya sudah ada.

Perubahan pada sistem yang sedang digunakan

Sebelum stop atau restart, pastikan nama dan manager sasaran, waktu perubahan, akses pemulihan, serta dampak terhadap koneksi dan permintaan. Catat keadaan active dan enable awal agar dapat mengembalikan pengaturan yang tepat. Jangan menganggap start selalu diperlukan untuk membatalkan stop bila layanan sebelumnya memang tidak aktif.

Sesudah perubahan, periksa status dan log, lalu uji fungsi aplikasi yang relevan. Mengembalikan definisi unit atau pengaturan enable tidak otomatis memulihkan konfigurasi aplikasi yang telah diubah terpisah.

FAQ

Apakah enable langsung menjalankan layanan?

Enable saja tidak memulai layanan. Gunakan start secara terpisah atau --now bila memang ingin kedua tindakan dan sudah memeriksa dampaknya.

Apakah daemon-reload sama dengan restart?

Tidak. Daemon-reload membaca ulang konfigurasi manager dan definisi unit. Restart menghentikan lalu memulai unit; reload meminta layanan membaca ulang konfigurasi aplikasinya jika didukung.