Cara Membuat Layanan SystemD di Linux

Cara Membuat Layanan SystemD di Linux

Systemd adalah rangkaian perangkat lunak modern yang menyediakan banyak komponen pada sistem Linux termasuk sistem dan manajer layanan. Itu kompatibel dengan Sysv Dan LSB init skrip dan berfungsi sebagai pengganti untuk Sysvinit.

Layanan SystemD didefinisikan dalam file unit (unit adalah representasi dari layanan dan sumber daya sistem seperti perangkat, soket, titik pemasangan, dll.). File unit layanan khusus harus disimpan di /etc/systemd/system/ direktori dan harus memiliki .melayani perpanjangan. Misalnya, kebiasaan Test-App Penggunaan Layanan /etc/systemd/system/test-app.melayani file unit.

[Anda mungkin juga suka: mengapa 'init' perlu diganti dengan 'systemd' di linux]

File unit adalah file bergaya ini teks biasa yang biasanya mencakup tiga bagian umum. Bagian pertama biasanya Satuan Bagian yang membawa informasi umum tentang unit yang tidak tergantung pada jenis unit.

Bagian selanjutnya adalah bagian tipe unit, untuk suatu layanan, itu adalah a Melayani bagian. Dan bagian terakhir adalah Install bagian yang membawa informasi instalasi untuk unit.

Dalam panduan ini, kami akan menunjukkan cara membuat yang baru Systemd Layanan dan Kelola Layanan Menggunakan Perintah SystemCTL, di Linux.

Membuat File Layanan Sistem Kustom di Linux

Untuk menjalankan aplikasi atau program atau skrip sebagai layanan di bawah SystemD, Anda dapat membuat layanan SystemD baru sebagai berikut. Mulailah dengan membuat layanan satuan file bernama Test-App.melayani (Ingatlah untuk mengganti Test-App dengan nama sebenarnya dari layanan atau aplikasi Anda), di bawah /etc/systemd/system/:

# vi/etc/systemd/system/test-app.melayani 

Konfigurasi berikut digunakan untuk menentukan layanan untuk menjalankan a Labu aplikasi menggunakan Gunicorn, Server HTTP Python WSGI untuk UNIX.

[Unit] Deskripsi = Daemon Gunicorn untuk Melayani Test-App Setelah = Jaringan.Target [Layanan] user = root grup = root workingDirectory =/apps/test-app/lingkungan = "path =/apps/test-app/bin" execStart =/apps/test-app/bin/gunicorn-pekerja 9- T 0 -BIND 127.0.0.1: 5001 -m 007 WSGI: Aplikasi-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] wantedby = multi -pengguna.target 

Mari kita jelaskan secara singkat setiap arahan konfigurasi dalam konfigurasi di atas:

  • Keterangan - digunakan untuk menentukan deskripsi untuk layanan.
  • Setelah - mendefinisikan hubungan dengan unit kedua, jaringan.target. Dalam hal ini, Test-App.melayani diaktifkan setelah jaringan.target satuan.
  • Pengguna - digunakan untuk menentukan pengguna dengan izin yang akan dijalankan layanan.
  • Kelompok - digunakan untuk menentukan grup dengan izin yang akan dijalankan layanan.
  • WorkingDirectory - digunakan untuk mengatur direktori kerja untuk proses yang dieksekusi.
  • Lingkungan - digunakan untuk mengatur variabel lingkungan untuk proses yang dieksekusi.
  • EXECSTART - digunakan untuk mendefinisikan perintah dengan argumen mereka yang dieksekusi saat layanan ini dimulai.
  • Execreload - digunakan untuk mendefinisikan perintah untuk mengeksekusi agar memicu muat ulang konfigurasi di layanan.
  • Dicari - memungkinkan tautan simbolik dibuat di .keinginan/ atau .memerlukan/ Direktori masing -masing unit yang terdaftar, multi-pengguna.target dalam hal ini, saat Test-App.melayani Unit diaktifkan menggunakan Systemctl mengaktifkan perintah.

Anda dapat menemukan semua parameter konfigurasi unit layanan, dijelaskan dengan baik dalam dokumentasi konfigurasi unit layanan.

Simpan file unit dan tutup. Kemudian muat ulang SystemD dengan file unit layanan baru ini dengan menjalankan:

Perintah # Systemctl Daemon-Reload 

Ingatlah untuk selalu menjalankan perintah ini setelah mengedit file unit.

Kelola Layanan SystemD di Linux

Untuk memulai/mengaktifkan layanan, jalankan perintah SystemCTL sebagai berikut:

# Systemctl Mulai Tes-App.melayani 

Untuk memeriksa apakah layanan berjalan atau tidak, keluarkan perintah SystemCTL seperti yang ditunjukkan.

# Systemctl Status Test-App.melayani 
Periksa status layanan

Untuk mengaktifkan layanan untuk memulai dari boot sistem, gunakan Systemctl Enable memerintah. Anda dapat memeriksa apakah layanan telah diaktifkan menggunakan Systemctl IS-Enable Perintah sebagai berikut:

# SystemCTL Mengaktifkan Test-App.Layanan # Systemctl IS-Enabled Test-App.melayani 
Aktifkan layanan untuk memulai dari boot

Atau, Anda juga dapat mengaktifkan dan memulai layanan pada saat yang sama seperti yang ditunjukkan.

# Systemctl Enable--Now Test-App.melayani 

Untuk menghentikan/menonaktifkan layanan, jalankan Systemctl berhenti Perintah sebagai berikut:

# Systemctl Stop Test-App.melayani 

Untuk memulai ulang layanan, jalankan restart systemctl Perintah sebagai berikut:

# Systemctl Restart Test-App.melayani 

Anda juga dapat menonaktifkan layanan untuk mencegahnya mulai dari boot sistem, menggunakan Systemctl nonaktifkan memerintah. Anda dapat memeriksa apakah layanan telah diaktifkan menggunakan Systemctl IS-Enable Perintah sebagai berikut:

# Systemctl Nonaktifkan Test-App.Layanan # Systemctl IS-Disabled Test-App.melayani 

Atau, Anda dapat menonaktifkan dan menghentikannya pada saat yang sama seperti yang ditunjukkan.

# Systemctl Disable--Now Test-App.melayani 

Untuk detail lebih lanjut tentang mengelola layanan SystemD dan sumber daya lainnya, jalankan:

# Man Systemctl