Mengelola layanan adalah tanggung jawab utama sysadmin. Tidak ada keraguan bahwa transisi antara metode SysV yang lebih lama (menggunakan service
dan chkconfig
perintah) dan yang lebih baru systemd
-perintah berbasis (seperti systemctl
) kontroversial. Faktanya, banyak sysadmin masih memiliki perasaan yang sangat kuat.
Kenyataannya adalah banyak distribusi, termasuk Red Hat Enterprise Linux (RHEL), telah mulai mengelola layanan dengan systemd
. Oleh karena itu, Anda dan saya perlu mengetahui cara bekerja dengan systemctl
perintah manajemen.
Saya bukan tipe penulis/pelatih/admin yang menganggap semua orang sudah mahir. Dengan mengingat hal itu, saya akan mengarahkan artikel ini kepada orang-orang yang membutuhkan penjelasan mendasar dan langsung tentang bagaimana dan kapan menggunakan systemctl
yang lebih umum. sub-perintah. Pada akhirnya, saya juga memberikan trik hebat untuk menampilkan semua systemctl
. dengan cepat sub-perintah.
Catatan:Halaman manual systemctl mengacu pada kata kedua dalam string sebagai "perintah", yang tampaknya agak membingungkan. Saya akan merujuk ke systemctl
dirinya sebagai perintah , lalu string yang mengikutinya sebagai subcommand . Argumen adalah nama layanan dan menempati posisi ketiga dalam sintaks.
Berikut adalah contoh sintaks:
systemctl subcommand argument
# systemctl status sshd
Saya akan menunjukkan bagaimana dan kapan menggunakan systemctl
. Sebagian besar contoh saya menggunakan sshd
umum layanan.
[ Pembaca juga menikmati: Bagaimana saya belajar berhenti khawatir dan mencintai sistem ]
Status layanan
Tempat terbaik untuk memulai adalah memahami fungsionalitas layanan saat ini. Saya akan mulai dengan pendekatan yang paling sederhana, penggunaan status
sub-perintah:
# systemctl status sshd
Tentu saja, idenya adalah Anda baru saja duduk di server Linux yang tidak dikenal, dan Anda perlu mengetahui status sshd
saat ini. melayani. Perhatikan bahwa banyak informasi lain yang disediakan, termasuk sinopsis layanan, dari mana asalnya, status, ID proses (PID), dan perubahan terbaru.
systemctl status
perintah juga berguna selama pemecahan masalah. Ketika saya memecahkan masalah konfigurasi, saya segera memeriksa statusnya dengan menggunakan systemctl
. Mengapa repot-repot dengan firewall, SELinux, dan file konfigurasi jika layanan tidak berjalan?
Jadi, sekarang Anda tahu cara memeriksa status layanan seperti SSH. Bagaimana Anda memanipulasi status itu?
Memulai dan menghentikan layanan
Saat Anda mengubah file konfigurasi untuk layanan yang sedang berjalan, Anda harus memulai ulang atau muat ulang layanan. Melakukannya menyebabkan layanan membaca ulang file, dan karenanya mengimplementasikan perubahan. Di masa lalu, Anda menggunakan service
perintah, seperti pada contoh di bawah ini:
# service sshd restart
Layanan di bawah systemd
dikelola melalui systemctl
memerintah. Untuk memulai ulang layanan SSH dengan systemctl
, masukkan:
# systemctl restart sshd
Secara pribadi, saya menemukan sintaks ini sedikit lebih mudah. Bunyinya hampir seperti kalimat:"Systemctl, please restart sshd."
Sintaksnya mirip jika Anda ingin menghentikan atau memulai layanan:
# systemctl stop sshd
# systemctl start sshd
Layanan yang menolak untuk berhenti dengan anggun dapat dimatikan dengan menggunakan systemctl
, juga. Misalnya, untuk mematikan sshd
layanan, masukkan:
# systemctl kill sshd
Layanan reload sedikit berbeda. reload
subcommand hanya menyebabkan layanan membaca ulang file konfigurasi, sedangkan restart
subcommand mengakhiri semua koneksi saat ini dan membaca ulang file konfigurasi.
Misalnya, jika Anda mengetik systemctl restart sshd
, koneksi SSH apa pun saat ini terputus. Namun, jika Anda memuat ulang, koneksi yang ada tetap dipertahankan. Dalam kedua kasus tersebut, file konfigurasi dibaca ulang dan setiap perubahan diterapkan.
Muat ulang menyebabkan lebih sedikit waktu henti, tetapi tidak semua layanan mendukungnya.
start
, stop
, restart,
dan reload
subperintah hanya memengaruhi runtime saat ini.
Mengaktifkan dan menonaktifkan layanan
Banyak admin yang baru mengenal Linux bingung tentang perbedaan antara start
/stop
dan enable
/disable
. Saya sudah membahas start
, stop
, dan restart
di bagian sebelumnya. Start
dan stop
digunakan untuk mengubah status layanan saat ini. Namun, jika server di-boot ulang, status layanan akan kembali ke pengaturan startup default apa pun. Dengan kata lain, jika saya menghentikan sshd
service dan kemudian reboot server saya, proses boot akan memeriksa file konfigurasi dan memulai atau tidak memulai sshd
, tergantung pada apa yang ditentukan. Jika saya menghentikan layanan dan melakukan boot ulang, dan file konfigurasi mengatakan untuk memulai layanan saat boot, layanan akan berjalan kembali.
Sebelumnya, Anda menggunakan chkconfig
perintah untuk menentukan pengaturan startup layanan untuk setiap runlevel. Ini contohnya:
# chkconfig --level 35 sshd on
Perintah ini mengaktifkan sshd
untuk memulai di runlevel 3 dan 5.
Dengan systemctl
, mengonfigurasi pengaturan startup default adalah pekerjaan enable
dan disable
sub-perintah. Sintaksnya sama dengan start
, stop
, dan restart
sub-perintah. Misalnya, untuk mengatur SSH agar mulai saat server melakukan boot, masukkan:
# systemctl enable sshd
Demikian juga, untuk mengkonfigurasi SSH bukan untuk memulai saat boot, ketik:
# systemctl disable sshd
Mengonfigurasi konfigurasi startup default untuk layanan sangatlah mudah, seperti memulai dan menghentikan layanan. Namun, tampaknya ada beberapa kebingungan tentang penggunaan keduanya secara bersamaan.
Gunakan mulai dan aktifkan bersama
Beberapa merasa aneh bahwa mengaktifkan layanan tidak memulainya. Misalnya, jika Anda baru saja mengunduh program baru, dan Anda ingin meluncurkannya sehingga Anda dapat menguji fungsinya dan Anda ingin mengonfigurasinya untuk memulai saat server melakukan booting, Anda perlu memasukkan dua perintah:
# systemctl start sshd
# systemctl enable sshd
Menonaktifkan layanan terjadi dengan cara yang sama. Ketik systemctl disable sshd
untuk mencegah SSH diluncurkan saat server melakukan booting. Namun, jika SSH berjalan di runtime saat ini, SSH tetap aktif, meskipun dinonaktifkan. Anda harus stop
SSH untuk mematikannya di runtime saat ini.
Misalnya, untuk menghentikan SSH dan mencegahnya dimulai saat sistem melakukan boot, masukkan:
# systemctl stop sshd
# systemctl disable sshd
Ingatlah untuk memeriksa status
layanan kapan saja Anda tidak yakin dengan memasukkan:
# systemctl status sshd
Anda dapat memeriksa apakah suatu layanan dikonfigurasi untuk memulai secara otomatis dengan menggunakan systemctl
lain subperintah:is-enabled
. Misalnya, untuk menampilkan apakah SSH diaktifkan, masukkan:
# systemctl is-enabled sshd
Banyak sub-perintah - triknya
Saya telah membahas beberapa systemctl
subperintah, termasuk start
, stop
, restart
, enable
, disable
, status
, dan lain-lain. Itu banyak untuk diingat! Di sinilah penyelesaian tab teman lama Anda berperan. Coba teknik berikut di sistem Anda:Ketik systemctl
dan kemudian tambahkan satu spasi. Tekan Tab kunci dua kali, dan bash menampilkan semua systemctl
. yang tersedia sub-perintah! Trik penyelesaian tab ini adalah salah satu yang menurut saya cukup dimanfaatkan oleh beberapa sysadmin.
[ Ingin menguji kemampuan sysadmin Anda? Ikuti penilaian keterampilan hari ini. ]
Menutup
Seperti yang Anda lihat, mengelola layanan melalui systemctl
perintah sebenarnya tidak terlalu sulit. Saya merasa lebih sederhana dan lebih logis daripada service
yang lebih lama dan chkconfig
perintah, secara pribadi. Juga berguna untuk hanya memiliki satu perintah untuk mengelola layanan, bukan dua.
Berikut adalah poin-poin penting yang perlu diingat:
- Gunakan start/stop/restart untuk mengelola runtime saat ini.
- Gunakan start/stop/restart/reload setelah mengedit file konfigurasi.
- Gunakan aktifkan/nonaktifkan untuk mengelola tindakan startup default.
- Gunakan status di awal proses pemecahan masalah.
Terakhir, Anda tidak perlu mengingat semua systemctl
yang tersedia sub-perintah. Cukup masukkan systemctl
perintah dan ikuti dengan satu spasi, lalu tekan Tab dua kali. Fitur pelengkapan tab bawaan Bash melakukan sisanya!
Sysadmin secara teratur menemukan diri mereka memanipulasi layanan, dan mudah-mudahan, Anda sedikit lebih nyaman saat menggunakan systemctl
yang lebih umum. sub-perintah.