Terkadang setelah Anda membuat sebuah script, Anda mungkin ingin script tersebut agar dapat dikontrol oleh systemd. Hal ini memungkinkan script untuk dimulai ulang secara otomatis jika prosesnya berhenti, atau untuk dijalankan secara otomatis setiap kali server melakukan booting.
Berikut adalah cara sederhana untuk membuat service di Linux menggunakan systemd.
Langkah 1: Buat Script Bash #
Pertama, buat script bash untuk mengatur beberapa parameter kernel. Lalu, simpan script di /opt/myscript/kernel.sh
.
echo 1 >/sys/kernel/mm/ksm/run
echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Langkah 2: Buat File Service #
Selanjutnya, buat file kernel.service
di dalam folder /etc/systemd/system
dengan perintah berikut:
nano /etc/systemd/system/kernel.service
Kemudian masukkan konfigurasi berikut:
[Unit]
Description=Optimasi Kernel
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
User=root
ExecStart=/bin/bash /opt/myscript/kernel.sh
Restart=on-failure
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myscript
[Install]
WantedBy=multi-user.target
Alias=kernel.service
Penjelasan:
Description
: Nama deskripsi serviceAfter
: Service akan mulai setelah network aktifType=simple
: Service berjalan di foregroundUser
: Akun yang digunakan untuk menjalankan serviceExecStart
: Perintah untuk menjalankan scriptRestart
: Kebijakan restart otomatisRestartSec
: Waktu tunggu sebelum restartStandardOutput
&StandardError
: Konfigurasi output log
Anda juga dapat membuat file service dengan kondisi seperti:
- Untuk script yang hanya perlu berjalan sekali saat boot.
[Service] Type=oneshot ExecStart=/path/to/script.sh RemainAfterExit=yes
- Jika script membutuhkan environment variable tertentu:
[Service] ... Environment="MY_VARIABLE=my_value" EnvironmentFile=/path/to/env/file
Langkah 3: Jalankan Service #
Setelah file service dibuat, jalankan perintah berikut untuk mengaktifkan dan menjalankan service:
chmod +x /opt/myscript/kernel.sh
systemctl daemon-reload
systemctl enable kernel.service
systemctl start kernel.service