GNU/Linux >> Belajar Linux >  >> Linux

Memulai dengan systemctl

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.


Linux
  1. Kelola beberapa instance layanan dengan systemctl

  2. Memulai Samba untuk interoperabilitas

  3. Memulai dengan akun pengecer Plesk

  1. Memulai dengan Zsh

  2. Memulai dengan ls

  3. Memulai PostgreSQL di Linux

  1. Memulai dengan GnuCash

  2. Memulai dengan Etcher.io

  3. Memulai SSH di Linux