Cara Membuat Perkhidmatan Systemd di Linux

Cara Membuat Perkhidmatan Systemd di Linux

Sistemd adalah suite perisian moden yang menyediakan banyak komponen pada sistem Linux termasuk sistem dan pengurus perkhidmatan. Ia serasi dengan SYSV dan LSB skrip init dan berfungsi sebagai pengganti untuk sysvinit.

Perkhidmatan SystemD ditakrifkan dalam fail unit (unit adalah perwakilan sumber perkhidmatan dan sistem seperti peranti, soket, titik gunung, dll.). Fail unit perkhidmatan tersuai harus disimpan di /etc/Systemd/System/ direktori dan mesti mempunyai .perkhidmatan sambungan. Contohnya, adat ujian-app penggunaan perkhidmatan /etc/SystemD/System/Test-App.perkhidmatan fail unit.

[Anda mungkin juga suka: Mengapa 'init' perlu diganti dengan 'Systemd' di Linux]

Fail unit adalah fail teks biasa ini yang biasanya merangkumi tiga bahagian biasa. Bahagian pertama biasanya adalah Unit bahagian yang membawa maklumat generik mengenai unit yang tidak bergantung pada jenis unit.

Bahagian seterusnya adalah bahagian jenis unit, untuk perkhidmatan, ia adalah Perkhidmatan seksyen. Dan bahagian akhir adalah Pasang bahagian yang membawa maklumat pemasangan untuk unit tersebut.

Dalam panduan ini, kami akan menunjukkan cara mencipta yang baru sistemd perkhidmatan dan menguruskan perkhidmatan menggunakan arahan SystemCTL, di Linux.

Membuat Fail Perkhidmatan Systemd Custom di Linux

Untuk menjalankan aplikasi atau program atau skrip sebagai perkhidmatan di bawah SystemD, anda boleh membuat perkhidmatan SystemD baru seperti berikut. Mulakan dengan membuat perkhidmatan unit fail bernama ujian-app.perkhidmatan (ingat untuk menggantikan ujian-app dengan nama sebenar perkhidmatan atau permohonan anda), di bawah /etc/Systemd/System/:

# vi/etc/Systemd/System/Test-App.perkhidmatan 

Konfigurasi berikut digunakan untuk menentukan perkhidmatan untuk menjalankan a Flask aplikasi menggunakan Gunicorn, pelayan http python wsgi untuk unix.

[Unit] Keterangan = Daemon Gunicorn untuk Melayan Ujian-App selepas = Rangkaian.Sasaran [Service] user = root Group = root workDirectory =/apps/test-app/evervense = "path =/apps/test-app/bin" execstart =/apps/test-app/bin/gunicorn --Workers 9- T 0 -Bind 127.0.0.1: 5001 -m 007 WSGI: App--log-level debug --access-logfile/var/log/gunicorn/test_app_access.log --error-logfile/var/log/gunicorn/test_app_error.log execReload =/bin/Kill -s Hup $ mainPid RestartSec = 5 [Install] Wanteby = Multi -User.sasaran 

Mari kita terangkan secara ringkas setiap arahan konfigurasi dalam konfigurasi di atas:

  • Penerangan - digunakan untuk menentukan keterangan untuk perkhidmatan tersebut.
  • Selepas - mentakrifkan hubungan dengan unit kedua, rangkaian.sasaran. Dalam kes ini, ujian-app.perkhidmatan diaktifkan selepas rangkaian.sasaran unit.
  • Pengguna - digunakan untuk menentukan pengguna dengan keizinannya yang akan dijalankan.
  • Kumpulan - digunakan untuk menentukan kumpulan dengan keizinannya yang akan dijalankan.
  • Kerjadirectory - digunakan untuk menetapkan direktori kerja untuk proses yang dilaksanakan.
  • Persekitaran - digunakan untuk menetapkan pembolehubah persekitaran untuk proses yang dilaksanakan.
  • Execstart - digunakan untuk menentukan arahan dengan hujah mereka yang dilaksanakan apabila perkhidmatan ini dimulakan.
  • Execreload - digunakan untuk menentukan arahan untuk dilaksanakan untuk mencetuskan tambah nilai konfigurasi dalam perkhidmatan.
  • Dikehendaki - membolehkan pautan simbolik dibuat di .mahukan/ atau .memerlukan/ Direktori setiap unit yang disenaraikan, MULTI-USER.sasaran dalam kes ini, ketika ujian-app.perkhidmatan unit diaktifkan menggunakan SistemCtl Enable Command.

Anda boleh menemui semua parameter konfigurasi unit perkhidmatan, yang diterangkan dengan baik dalam dokumentasi konfigurasi unit perkhidmatan.

Simpan fail unit dan tutupnya. Kemudian tambah semula sistem dengan fail unit perkhidmatan baru ini dengan menjalankan:

# Systemctl Daemon-Reload Command 

Ingatlah untuk selalu menjalankan arahan ini setelah mengedit fail unit.

Urus Perkhidmatan Systemd di Linux

Untuk memulakan/mengaktifkan perkhidmatan, jalankan perintah SystemCTL seperti berikut:

# Systemctl Mula Test-App.perkhidmatan 

Untuk memeriksa sama ada perkhidmatan berjalan atau tidak, mengeluarkan arahan SystemCtl seperti yang ditunjukkan.

# ujian status systemctl.perkhidmatan 
Periksa status perkhidmatan

Untuk membolehkan perkhidmatan bermula di boot sistem, gunakan SistemCtl Enable perintah. Anda boleh menyemak sama ada perkhidmatan telah diaktifkan menggunakan SystemCTL adalah membolehkan Perintah seperti berikut:

# Systemctl Dayakan Test-App.Perkhidmatan # SystemCtl IS-Enabled Test-App.perkhidmatan 
Dayakan Perkhidmatan untuk bermula di Boot

Sebagai alternatif, anda juga boleh mengaktifkan dan memulakan perkhidmatan pada masa yang sama seperti yang ditunjukkan.

# SystemCtl Enable --now Test-App.perkhidmatan 

Untuk menghentikan/menyahaktifkan perkhidmatan, jalankan Sistem Sistem STOP Perintah seperti berikut:

# Systemctl Stop Test-App.perkhidmatan 

Untuk memulakan semula perkhidmatan, jalankan SYSTEMCTL RESTART Perintah seperti berikut:

# Systemctl Mulakan semula ujian-app.perkhidmatan 

Anda juga boleh melumpuhkan perkhidmatan untuk mengelakkannya daripada memulakan boot sistem, menggunakan systemctl melumpuhkan perintah. Anda boleh menyemak sama ada perkhidmatan telah diaktifkan menggunakan SystemCTL adalah membolehkan Perintah seperti berikut:

# Systemctl melumpuhkan ujian-app.Perkhidmatan # SystemCTL IS-Disibabled Test-App.perkhidmatan 

Sebagai alternatif, anda boleh melumpuhkan dan menghentikannya pada masa yang sama seperti yang ditunjukkan.

# Systemctl Disable-Now Test-App.perkhidmatan 

Untuk maklumat lanjut mengenai menguruskan perkhidmatan sistem dan sumber lain, jalankan:

# Man Systemctl