Cara membuat dan menjalankan unit layanan baru di SystemD menggunakan skrip shell

Cara membuat dan menjalankan unit layanan baru di SystemD menggunakan skrip shell

Beberapa hari yang lalu, saya menemukan a Centos 7 Distro 32-bit dan saya merasakan keinginan untuk mengujinya pada mesin 32-bit lama. Setelah boot saya menyadari bahwa itu memiliki bug dan kehilangan koneksi jaringan, yang harus saya turninya "ke atas" secara manual setiap kali setelah boot. Jadi, pertanyaannya adalah bagaimana saya bisa mengatur skrip melakukan pekerjaan ini, berjalan setiap kali saya mem -boot mesin saya?

Nah, ini sangat sederhana dan saya akan menunjukkan kepada Anda SystemD-Way menggunakan unit layanan. Tapi pertama -tama pengantar kecil untuk unit layanan.

Dalam artikel ini, saya akan menjelaskan apa "Unit Layanan" Di Systemd adalah, betapa mudahnya membuat dan menjalankannya. Saya akan mencoba menyederhanakan apa "Target" adalah, mengapa kami memanggil mereka “Koleksi Unit” dan apa mereka "Ingin". Akhirnya kami mengambil keuntungan dari unit layanan untuk menjalankan skrip kami sendiri setelah prosedur boot.

Jelas bahwa komputer Anda berguna karena layanan yang ditawarkan dan untuk memiliki fungsi ini, banyak layanan harus dipanggil sebagai komputer sepatu bot dan mencapai level yang berbeda. Layanan lain dipanggil untuk dieksekusi ketika komputer mencapai misalnya tingkat penyelamatan (runlevel 0) dan lainnya saat mencapai tingkat multi-pengguna (RunLevel 3). Anda dapat membayangkan level ini sebagai target.

Dengan cara sederhana target adalah kumpulan unit layanan. Jika Anda ingin melihat unit layanan yang berjalan di grafis.target Level, ketik:

# Systemctl --pype = layanan 
Sebutkan semua unit layanan di Centos 7

Karena Anda dapat melihat beberapa layanan aktif dan "berlari" Sepanjang waktu, sementara yang lain berlari satu kali dan berakhir (keluar). Jika Anda ingin memeriksa status layanan, ketik:

# Systemctl Status Firewalld.melayani 
Periksa Status Layanan di Centos 7

Seperti yang Anda lihat, saya memeriksa statusnya Firewalld.melayani (tip: Anda dapat menggunakan Auto-Complete untuk nama Layanan). Itu memberi tahu saya itu Firewalld Layanan berjalan sepanjang waktu dan diaktifkan.

Jangan lewatkan: Cara Mengkonfigurasi Layanan FirewallD di Centos 7

Diaktifkan dan dinonaktifkan berarti layanan akan dimuat secara permanen atau tidak, selama boot berikutnya masing -masing. Di sisi lain untuk memulai dan menghentikan layanan memiliki batasan sesi ini dan itu tidak permanen.

Misalnya, jika Anda mengetik:

# Systemctl Stop firewalld.Layanan # Systemctl Status Firewalld.melayani 
Kelola Layanan di Centos 7

Anda dapat melihat itu Firewalld.melayani tidak aktif (mati) tetapi masih diaktifkan, yang berarti bahwa selama boot berikutnya akan dimuat. Jadi jika kami ingin layanan dimuat selama waktu boot di masa depan, kami harus mengaktifkannya. Kesimpulan yang luar biasa! Mari kita buat satu, mudah.

Jika Anda pergi ke folder:

# CD/etc/systemd/System # ls -l 
File sistem SystemD

Anda dapat melihat beberapa file tautan dari layanan unit dan beberapa direktori "Ingin" dari target. Misalnya: Target multi-pengguna apa yang ingin dimuat saat prosedur boot mencapai levelnya, terdaftar di direktori dengan nama /etc/systemd/system/multi-pengguna.target.keinginan/.

# ls multi-pengguna.target.keinginan/ 
Layanan Target Pengguna Multi

Seperti yang Anda lihat tidak hanya berisi jasa tetapi juga yang lain target yang juga merupakan koleksi layanan.

Mari kita buat unit layanan dengan namanya koneksi.melayani.

# Koneksi VIM.melayani 

dan ketik yang berikut (tekan "Saya" Untuk mode insert), simpan dan keluar (dengan "ESC" Dan “: Wq!" ):

[Unit] description = membuat koneksi jaringan naik setelah = jaringan.target [layanan] execStart =/root/skrip/conup.sh [install] wantedby = multi-pengguna.target 
Buat unit layanan baru di Centos 7

Untuk menjelaskan hal -hal di atas: kami telah membuat unit jenis layanan (Anda juga dapat membuat unit tipe target), kami telah mengaturnya untuk dimuat setelah jaringan.target (Anda dapat memahami bahwa prosedur booting mencapai target dengan pesanan yang ditentukan) dan kami ingin setiap kali layanan mulai menjalankan skrip bash dengan nama conup.SH yang akan kita buat.

Kesenangan dimulai dengan bagian terakhir [Install]. Itu memberi tahu bahwa itu akan dicari oleh “Multi-pengguna.target". Jadi jika kami memungkinkan layanan kami tautan simbolis ke layanan itu akan dibuat di dalam multi-pengguna.target.keinginan map! Mengerti? Dan jika kita menonaktifkannya tautan itu akan dihapus. Sangat sederhana.

Aktifkan saja dan periksa:

# SystemCTL Mengaktifkan koneksi.melayani 

Ini memberi tahu kita bahwa tautan simbolis di multi-pengguna.target.keinginan Folder telah dibuat. Periksa:

# ls multi-pengguna.target.keinginan/ 
Aktifkan Layanan di Centos 7

Seperti yang Anda lihat "koneksi.melayani" siap untuk booting berikutnya, tetapi kita harus membuat file skrip terlebih dahulu.

# CD /root # skrip mkdir # skrip cd # vim conup.SH 

Tambahkan baris berikut di dalam vim dan simpan:

#!/BIN/BASH NMCLI Connection UP ENP0S3 

Tentu saja jika Anda ingin skrip Anda menjalankan sesuatu yang lain, Anda bisa mengetik apa pun yang Anda inginkan alih -alih baris kedua.

Misalnya,

#!/bin/Bash Touch/TMP/TestBoTFile 

yang akan membuat file di dalamnya /tmp Folder (hanya untuk memeriksa apakah layanan Anda berfungsi).

Kita juga harus membuat skrip dapat dieksekusi:

# chmod +x conup.SH 

Sekarang kami siap. Jika Anda tidak ingin menunggu sampai boot berikutnya (sudah diaktifkan), kami dapat memulai layanan untuk mengetik sesi saat ini:

# Systemctl Mulai Koneksi.melayani 

Voila! Koneksi saya sudah berjalan dan berjalan!

Jika Anda memilih untuk menulis perintah “Sentuh /TMP /TestBoTFile” Di dalam skrip, hanya untuk memeriksa fungsinya, Anda akan melihat file ini dibuat di dalamnya /tmp map.

Konfirmasi status layanan

Saya sangat berharap dapat membantu Anda mencari tahu layanan, yang diinginkan, target, dan skrip yang berjalan selama booting.