Fasilitas systemd menggantikan skrip inisialisasi System-V yang lebih lama dari rilis sebelumnya. Systemd adalah fasilitas yang digerakkan oleh peristiwa yang memungkinkan subsistem yang tidak bergantung untuk dimulai, dikendalikan, atau dihentikan secara paralel. Di sini kami menjelaskan cara menambahkan skrip khusus ke fasilitas systemd.
1. Tulis Dan Debug Skrip Kustom
Biasanya skrip systemd ditulis sebagai skrip shell. Mulailah dengan menulis skrip khusus Anda menggunakan konvensi normal. Kami akan memanggil skrip kami my-custom-script.sh dan langsung saja:
#!/bin/sh echo "I am a custom script" > /var/tmp/script.out echo "The script was run at : `date`" >> > /var/tmp/script.out
Skrip harus dapat dieksekusi.
# chmod 0755 /var/tmp/my-custom-script.sh
2. Jelaskan Skrip Kustom Ke systemd
Dengan skrip yang ditulis dan diuji secara manual, skrip siap untuk dideskripsikan ke sistem systemd. Untuk melakukannya, [name].service berkas diperlukan. Sintaksnya menggunakan format INI yang biasa digunakan untuk file konfigurasi. Melanjutkan contoh kita, kita membutuhkan file my-custom-script.service. Eksekusi akan berjalan tepat sekali untuk setiap kali layanan dimulai. Layanan tidak akan dimulai sampai lapisan jaringan aktif dan stabil.
Buat file unit layanan baru di /etc/systemd/system/my-custom-script.service dengan konten di bawah ini. Nama unit layanan ditentukan oleh pengguna dan dapat berupa nama pilihan Anda.
# This is my-custom-script.service, which describes the my-custom-script.sh file [Unit] Description=This is executed on shutdown or reboot DefaultDependencies=no Wants=network-pre.target # (if network is required before running the script) Before=network-pre.target shutdown.target reboot.target halt.target # Defines the order in which units are stoped. #(REQUIRED) [Service] Type=oneshot # enables specifying multiple custom commands that are then executed sequentially. (REQUIRED) RemainAfterExit=true # required by the oneshot setting (REQUIRED) Environment=ONE='one' "TWO='2" # you can set some environment variables, that may be necessary to pass as arguments ExecStart=/bin/true # because is a shutdown script nothing is done when this service is started ExecStop=/bin/bash /var/tmp/my-custom-script.sh ${ONE} ${TWO} # < --*********** change to the script full path ************ (REQUIRED) TimeoutStopSec=1min 35s # Configures the time to wait for stop. [Install] WantedBy=multi-user.target # When this unit is enabled, the units listed in WantedBy gain a Want dependency on the unit. (REQUIRED)
3. Aktifkan Script Untuk Reboot Selanjutnya
Mirip dengan chkconfig dari versi sebelumnya, layanan harus diaktifkan. Karena layanan baru telah ditambahkan, beri tahu daemon systemd untuk mengonfigurasi ulang dirinya sendiri:
# systemctl enable my-custom-script.service # systemctl daemon-reload