Linux systemctl: Periksa dan Kelola Layanan
systemctl adalah perintah untuk memeriksa status layanan dan unit lain yang dikelola oleh systemd, memulai atau menghentikannya, dan mengatur apakah layanan tersebut diaktifkan saat boot. Status berjalan saat ini dan status aktif saat boot berbeda, jadi masing-masing harus diperiksa secara terpisah.
Sebelum Memulai
systemd adalah manajer sistem dan layanan untuk Linux, dan unit yang dikelolanya tidak hanya mencakup layanan (.service) tetapi juga timer dan soket. Artikel ini menjelaskan cara mengelola layanan sistem di Linux menggunakan systemd. Ini tidak dapat digunakan begitu saja di lingkungan dengan sistem inisialisasi lain atau di mana systemd tidak berjalan. Untuk perintah yang lebih rinci, lihat manual systemctl resmi.
Berikut apache2.service adalah contoh ketika Apache diinstal di Ubuntu. Jika tidak diinstal, unit tidak dapat ditemukan, dan nama dapat bervariasi tergantung distribusi. Sebelum berlatih, periksa nama layanan yang sebenarnya, dan karena menghentikan server web atau layanan akses jarak jauh yang sedang berjalan dapat memutus koneksi Anda, gunakan lingkungan uji yang aman. Memeriksa status seringkali dapat dilakukan sebagai pengguna biasa, tetapi mengubah layanan sistem biasanya memerlukan hak administrator.
Memeriksa status layanan dan nama
Periksa layanan yang sedang dimuat saat ini dan berkas unit layanan yang diinstal secara terpisah. Dua daftar ini memiliki kriteria yang berbeda, jadi hasilnya mungkin tidak sama.
systemctl list-units --type=service --all
systemctl list-unit-files --type=service
Yang pertama menunjukkan layanan yang dimuat dalam systemd, termasuk unit yang tidak aktif. Yang kedua menunjukkan file unit layanan yang terpasang dan status pengaktifannya saat boot, yang juga berguna untuk menemukan layanan yang belum dimuat. Jika daftar panjang dan pager terbuka, tekan q untuk keluar.
Sebagai contoh, untuk memeriksa status dan log terbaru layanan Apache, masukkan yang berikut ini.
systemctl status apache2.service
systemctl is-active apache2.service
systemctl is-enabled apache2.service
Dalam keluaran status, Active: active (running) berarti layanan sedang berjalan, inactive berarti tidak aktif, dan failed berarti gagal. Status rinci bervariasi tergantung jenis layanan. is-active memeriksa status saat ini, dan is-enabled memeriksa status pengaktifan. Unit static tidak dapat diaktifkan dengan cara biasa tetapi dapat dijalankan oleh unit lain.
Memulai, menghentikan, dan me-restart layanan
Perintah berikut benar-benar mengubah status layanan. Gantilah nama layanan contoh dengan yang sesuai untuk sistem Anda, dan pastikan bahwa menghentikan layanan dapat diterima sebelum mengeksekusi.
sudo systemctl start apache2.service
sudo systemctl stop apache2.service
sudo systemctl restart apache2.service
start memulai layanan, dan stop menghentikannya. restart menghentikan layanan dan kemudian me-restart-nya, serta dapat memulai layanan yang sudah dihentikan. Jalankan hanya perintah yang diperlukan. Setelah setiap operasi, periksa hasilnya dengan systemctl status apache2.service. Bahkan untuk layanan yang sudah berjalan, koneksi mungkin akan terputus sementara selama restart.
Jika layanan mendukung memuat ulang pengaturannya sendiri, Anda dapat menerapkan kembali pengaturan dengan sudo systemctl reload apache2.service. Dukungan dan metode penerapan bervariasi untuk setiap layanan. Memuat ulang dan memulai ulang bukanlah tindakan yang sama, dan cara memeriksa pengaturan harus mengikuti dokumentasi layanan.
Aktivasi saat Boot dan Status Saat Ini
Perintah berikut mengonfigurasi atau menghapus koneksi agar unit memulai selama proses boot, dll. Menjalankan enable saja tidak langsung memulai apa pun, dan menjalankan disable saja tidak langsung menghentikan layanan yang sudah berjalan.
sudo systemctl enable apache2.service
sudo systemctl disable apache2.service
systemctl is-enabled apache2.service
Pilih dan jalankan hanya perintah yang diperlukan, dan periksa hasilnya dengan perintah terakhir. enabled menunjukkan diaktifkan dan disabled menunjukkan dinonaktifkan. Namun, layanan mungkin tetap berjalan karena ketergantungan dari unit lain atau socket/timer, jadi jangan mengartikan disable sebagai pemblokiran semua jalur startup.
Untuk mengaktifkan dan memulai segera, gunakan sudo systemctl enable --now apache2.service; untuk menonaktifkan dan menghentikan segera, gunakan sudo systemctl disable --now apache2.service. Periksa efek dari setiap perintah dan latihan hanya dilakukan di lingkungan uji.
Yang Harus Diperiksa Ketika Terjadi Masalah
Periksa daftar unit yang gagal dan log terbaru dari layanan tertentu. Log mungkin berisi informasi sensitif, jadi tinjau isinya sebelum dibagikan.
systemctl --failed
sudo journalctl -u apache2.service -n 50 --no-pager
Jika layanan tidak dapat ditemukan, periksa namanya dan apakah layanan tersebut sudah terinstal. Jika memulai gagal, periksa status dan log untuk kesalahan konfigurasi, layanan yang bergantung, konflik port, atau masalah izin. Status masked menunjukkan bahwa memulai diblokir, jadi jangan melepaskannya secara sembarangan sebelum mengetahui penyebabnya. Pesan dan solusi dapat berbeda tergantung pada distribusi dan pengaturan layanan.
Jika Anda telah mengubah file unit
Jika Anda telah memodifikasi file unit systemd atau konfigurasi drop-in, gunakan perintah berikut untuk membuat systemd membaca ulang definisi unit.
sudo systemctl daemon-reload
Perintah ini tidak memulai ulang layanan itu sendiri atau membuat layanan memuat ulang berkas konfigurasinya. Jika Anda perlu menerapkan perubahan pada layanan yang sedang berjalan, mungkin diperlukan restart atau reload terpisah yang sesuai dengan layanan dan perubahan tersebut. Cadangkan konfigurasi sebelum melakukan perubahan dan pastikan Anda tahu cara mengembalikan ke keadaan semula.




