Perkhidmatan di Linux diuruskan melalui fail konfigurasi mereka. Jika pengubahsuaian dibuat pada fail konfigurasi perkhidmatan, adalah perlu untuk memulakan semula perkhidmatan untuk menggunakan pengubahsuaian. Setelah memulakan semula perkhidmatan, systemd menilai semula fail konfigurasi dan menggunakan pengubahsuaian.
Dalam panduan ini, saya akan membincangkan cara menggunakan systemctl untuk memulakan semula perkhidmatan dalam Linux.
Catatan: Panduan ini termasuk arahan dan arahan yang dilaksanakan pada Ubuntu 22.04. Arahan akan berfungsi tanpa sebarang masalah pada pengedaran yang disertakan dengan pengurus perkhidmatan systemd.
Systemctl memulakan semula Perintah
The mula semula perintah pada dasarnya menghentikan perkhidmatan dan memulakannya semula. Jika perkhidmatan atau unit tidak beroperasi, arahan mulakan semula akan memulakan operasinya.
Perintah mulakan semula tidak mengalih keluar proses yang dikaitkan dengan perkhidmatan. Ambil contoh deskriptor fail, yang merupakan pengecam bukan negatif yang diberikan oleh sistem pengendalian kepada fail yang dibuka oleh perkhidmatan. Jika anda memulakan semula perkhidmatan, deskriptor fail yang dipautkan kepada perkhidmatan itu akan kekal di sana semasa proses mulakan semula.
Jika anda ingin membuang semua proses yang dipautkan kepada perkhidmatan, maka anda perlu secara eksplisit berhenti perkhidmatan dan mulakan ia sekali lagi.
Cara Memulakan Semula Perkhidmatan
Di Linux, anda boleh memulakan semula perkhidmatan dengan menggunakan sudo systemctl alat baris arahan dengan mula semula pilihan dan menyatakan namanya. Sintaks umum diberikan di bawah:
sudo systemctl mulakan semula [ nama perkhidmatan ]
Anda perlu sudo keistimewaan untuk memulakan semula perkhidmatan.
Sebagai contoh, mari mulakan semula ssh perkhidmatan.
sudo systemctl mulakan semula ssh.serviceUntuk memulakan semula berbilang perkhidmatan, tambahkan setiap nama perkhidmatan selepas mula semula perintah dengan ruang.
sudo systemctl mulakan semula ssh.service smbd.servicePerintah restart lain diberikan dalam jadual di bawah:
cuba-mulakan semula | Ia menghentikan atau memulakan perkhidmatan atau perkhidmatan yang ditentukan dan jika perkhidmatan tidak berjalan ia tidak memulakannya |
muat semula-atau-mulakan semula | Muat semula perkhidmatan atau perkhidmatan yang disokong dan jika perkhidmatan itu tidak disokong, mulakan semula dan aktifkannya |
cuba-muat semula-atau-cuba-mulakan semula | Muat semula perkhidmatan atau perkhidmatan yang disokong dan jika perkhidmatan itu tidak disokong maka mulakan semula tanpa mengaktifkannya |
Dalam arahan di atas, yang .perkhidmatan sambungan adalah pilihan.
Cara Memulakan Semula Perkhidmatan Secara Automatik
Di Linux, jika perkhidmatan gagal, maka sistemd memulakan semula secara lalai. Walau bagaimanapun, dalam banyak kes, mungkin perlu mengubah suai cara perkhidmatan dimulakan semula. Sebagai contoh, seseorang mungkin memerlukan tindakan manual semasa proses penyahpepijatan perkhidmatan yang dibuat tersuai.
Fail unit systemd atau fail perkhidmatan terletak pada /etc/systemd/system atau /lib/systemd/system terutamanya bergantung pada cara perkhidmatan dicipta. Untuk menyenaraikan fail unit pada Linux, gunakan arahan berikut:
ls / lib / sistemd / sistemAnda boleh melihat fail konfigurasi perkhidmatan yang berbeza. Mari buka ssh.service fail menggunakan nano editor.
sudo nano / lib / sistemd / sistem / ssh.serviceDi sini anda boleh mengubah suai Mula semula tetapan. Secara lalai, ia ditetapkan kepada pada-kegagalan . Pilihan lain untuk memulakan semula perkhidmatan disenaraikan di bawah:
- Tidak
- sentiasa
- pada-kejayaan
- pada-kegagalan
- pada-abnormal
- pada-menggugurkan kandungan
- badan pemerhati
Pilihan lain dalam fail perkhidmatan unit ialah Mulakan semulaSec yang digunakan untuk menentukan bilangan saat selepas itu perkhidmatan akan dimulakan semula.
[ Perkhidmatan ]Mula semula =selalu
Mulakan semulaSec = 5
Arahan ini bermakna perkhidmatan akan dimulakan semula semasa but dan, jika terganggu, akan dimulakan semula selepas 5 saat.
Selepas mengubah suai tetapan, laksanakan arahan berikut untuk menggunakan perubahan.
sudo systemctl muat semula-daemonTetapan penting lain yang perlu diambil kira ialah StartLimitIntervalSec dan StartLimitBurst . Pilihan ini berguna untuk menetapkan masa maksimum dan percubaan semula maksimum untuk memulakan semula perkhidmatan.
[ Unit ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Arahan di atas menunjukkan bahawa systemd secara automatik akan berhenti mencuba untuk memulakan semula perkhidmatan jika ia tidak bermula selepas 300 saat dan 4 percubaan semula.
Untuk mengesahkan sama ada perkhidmatan dimulakan semula selepas 5 saat atau tidak, matikan perkhidmatan menggunakan PID perkhidmatan dan bunuh perintah.
sudo bunuh -9 [ PID ]Selepas 5 saat, perkhidmatan akan dimulakan semula; menggunakan journalctl arahan untuk menyemak status ssh.service .
journalctl -dalam ssh.service
Cara Memulakan Semula Perkhidmatan apabila Perkhidmatan Tanggungan Dimulakan Semula
Di Linux, banyak perkhidmatan saling bergantung, dan begitu juga, mereka perlu dimulakan semula apabila perkhidmatan bergantung dimulakan semula.
Terdapat tiga pilihan berbeza dalam fail perkhidmatan unit untuk memulakan semula perkhidmatan, dengan perkhidmatan bergantung dimulakan semula.
- Sebahagian daripada
- BindsTo
- Memerlukan
Semua pilihan ini melaksanakan tugas yang sama.
Mari kita ambil contoh ssh.service yang bergantung pada apparmor.service; Modul Keselamatan Linux untuk menyediakan akses yang diperlukan. Untuk menyenaraikan kebergantungan perkhidmatan dalam penggunaan Linux systemctl dengan kebergantungan senarai arahan dan nama perkhidmatan.
systemctl list-dependencies ssh.service
Jadi, jika anda ingin memulakan semula ssh.service apabila anda memulakan semula apparmor.service, maka anda perlu memasukkan pilihan PartOf, BindsTo, atau Requires bersama-sama dengan nama perkhidmatan dalam bahagian [Unit] pada fail apparmor.service.
Buka fail apparmor.service.
sudo nano / lib / sistemd / sistem / apparmor.serviceTambahkan baris berikut dalam bahagian [Unit].
Sebahagian daripada =ssh.service
Simpan fail dan laksanakan arahan daemon-reload.
sudo systemctl daemon-reloadSekarang, mulakan semula ssh.service dan kemudian semak apparmor.service log.
Anda akan perasan apparmor.service dimulakan semula pada masa yang sama ssh.service dimulakan semula.
Kesimpulan
Untuk memulakan semula perkhidmatan atau perkhidmatan pada Linux, systemctl arahan digunakan dengan mula semula pilihan. The systemctl ialah utiliti baris arahan yang digunakan untuk mengurus perkhidmatan systemd. The mula semula pilihan memulakan perkhidmatan dan kemudian menghentikannya, mengaktifkan perkhidmatan tidak aktif. Walau bagaimanapun, anda boleh memulakan semula perkhidmatan tanpa mengaktifkannya dengan menggunakan cuba-mulakan semula pilihan.