Saya perlu satu proses yang berjalan sebelum masuk ke sistem. Bagaimana menjalankannya seperti layanan? bagaimana cara saya membuat layanan di Linux?
Di Ubuntu dan Fedora? Layanan ini disesuaikan kucing jantan
Saya perlu satu proses yang berjalan sebelum masuk ke sistem. Bagaimana menjalankannya seperti layanan? bagaimana cara saya membuat layanan di Linux?
Di Ubuntu dan Fedora? Layanan ini disesuaikan kucing jantan
Jawaban:
Untuk menjalankan layanan tanpa atau sebelum masuk ke sistem (yaitu "saat boot"), Anda harus membuat skrip startup dan menambahkannya ke urutan boot.
Ada tiga bagian skrip layanan: mulai, berhenti dan mulai ulang.
Struktur dasar skrip layanan adalah:
#!/bin/bash
#
RETVAL=0;
start() {
echo “Starting <Service>”
}
stop() {
echo “Stopping <Service>”
}
restart() {
stop
start
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit $RETVAL
Setelah Anda mengubah skrip sesuai keinginan Anda, cukup tempatkan di /etc/init.d/
Dan, tambahkan ke proses startup layanan sistem (di Fedora, saya bukan pengguna Ubuntu,> D):
chkconfig -add <ServiceName>
Layanan akan ditambahkan ke proses boot sistem dan Anda tidak perlu memulai lagi secara manual.
Tepuk tangan!
Tergantung pada sistem init, Anda membuat skrip init secara berbeda. Fedora memberi Anda pemula dan systemd untuk dipilih, dan tentu saja kompatibilitas SysV.
/etc/init/custom-tomcat.conf
letakkan di dalam:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/tomcat --and --parameters
Dan Tomcat Anda harus mulai pada saat sistem mulai.
/etc/systemd/system/custom-tomcat.service
letakkan di dalam:
[Service]
ExecStart=/path/to/your/tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
dan aktifkan layanan Anda menggunakan systemctl enable custom-tomcat.service
. Ini akan dimulai setiap boot normal.
Tentu saja ada beberapa opsi konfigurasi untuk kedua sistem init, Anda dapat memeriksanya dalam dokumentasinya.
Tomcat adalah layanan yang cukup umum, saya akan merekomendasikan melihat skrip init yang disediakan oleh distro. Peluangnya bekerja dengan biner Anda yang disesuaikan, dengan sedikit atau tanpa tweaker.
Jika Anda memiliki cron
daemon, salah satu kait waktu cron yang telah ditentukan adalah @reboot
, yang secara alami berjalan saat sistem dimulai. Jalankan crontab -e
untuk mengedit crontab
file Anda , dan tambahkan baris:
@reboot /your/command/here
Anda dapat membuat skrip yang lebih canggih, yang memungkinkan Anda berjalan di bawah izin pengguna tertentu, sebagai berikut:
#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"
#Helper functions
start() {
start-stop-daemon --start --quiet --background --make-pidfile \
--pidfile /var/run/$NAME.pid --chuid $USERGROUP \
--exec /usr/local/bin/myservice
}
stop() {
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec myservice --retry 30
}
case "$1" in
start)
echo -n "Starting $DESC: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
stop
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
#set +e
stop
#set -e
#sleep 1
start
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Skrip berjalan di /etc/init.d/myservice, dan Anda memulai layanan dengan menjalankan:
/etc/init.d/myservice start
Baca halaman manual pada start-stop-daemon untuk memahami cara kerjanya.
Di Ubuntu atau Debian seperti yang dapat Anda gunakan, untuk menambahkan
update-rc.d your_service defaults
untuk menghapus
update-rc.d -f your_service remove
Sampai jumpa! \Hai
bagus untuk mengimplementasikan status fungsi dan memuat ulang secara paksa agar menjadi LSB-compilant
service --status-all
daftar?