Saya mencoba untuk menambah auto start di boottime layanan linux melalui
chkconfig -add <servicename>
dan saya mendapatkan pesan yang mengatakan
service <servicename> does not support chkconfig
Saya menggunakan Red Hat Enterprise 4. Skrip yang saya coba tambahkan ke autostart pada boottime adalah sebagai berikut:
#!/bin/sh
soffice_start() { if [ -x /opt/openoffice.org2.4/program/soffice ]; then
echo "Starting Open Office as a Service"
#echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
/opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard & else
echo "Error: Could not find the soffice program. Cannot Start SOffice." fi }
soffice_stop() { if [ -x /usr/bin/killall ]; then
echo "Stopping Openoffice"
/usr/bin/killall soffice 2> /dev/null else
echo "Eroor: Could not find killall. Cannot Stop soffice." fi }
case "$1" in 'start') soffice_start ;; 'stop') soffice_stop sleep 2 ;; 'restart') soffice_stop sleep 5 soffice_start ;; *) if [ -x /usr/bin/basename ]; then
echo "usage: '/usr/bin/basename $0' start| stop| restart" else
echo "usage: $0 start|stop|restart" fi esac
Jawaban:
Skrip harus memiliki 2 baris:
sebagai contoh:
Setelah Anda menambahkan header di atas, Anda dapat menjalankan
chkconfig --add <service>
.sumber
Sementara katriel telah menjawab ini dengan minimum yang diperlukan untuk membuat skrip init, saya pikir Anda juga akan dilayani dengan baik dengan melihat
/etc/init.d/skeleton
dan menggunakannya sebagai templat yang menjadi dasar skrip init Anda. Anda akan berakhir dengan skrip yang jauh lebih konsisten dan mudah dibaca.sumber
/etc/init.d/skeleton
tidak ada pada sistem RHEL, hanya pada Debian dan yang terkait (Ubuntu, saya pikir).Sepertinya masalah spesifik Geo telah dipecahkan, tetapi saya mengalami pesan serupa ketika mencoba mengatur aplikasi Rails dengan
sidekiq
layanan terkelola. Saya akan menjelaskan solusi saya di sini jika itu membantu pemula lain seperti saya.Saya sedang mengerjakan instalasi CentOS, dan chkconfig sudah diatur dengan beberapa layanan lain seperti httpd, mysql, dan redis. Perhatikan bahwa sebagian besar layanan hanya perlu diaktifkan pada runlevels
3
through5
.Saya perlu menambahkan skrip baru untuk
sidekiq
layanan ini, jadi saya mengambil skrip di https://gist.github.com/CD1212/5326706 , memodifikasinya agar sesuai dengan parameter aplikasi saya, dan menyimpannya di/etc/rc.d/init.d/sidekiq
(dimiliki oleh root seperti semua skrip lain di sana).Namun ketika saya mencoba mendaftar layanan baru ini, saya mendapatkan kesalahan chkconfig:
Setelah beberapa bacaan tambahan saya menemukan bahwa angka-angka prioritas yang ditentukan di bagian atas setiap skrip chkconfig harus unik. Pesan kesalahan yang lebih jelas pasti menyenangkan! Script lain memiliki level shutdown prioritas 75, jadi saya mengubah milik saya menjadi 76 dan mencoba lagi. Inilah kepala skrip init saya:
Kali ini,
sudo chkconfig --add sidekiq
tidak memberikan keluhan. Kemudian ketika saya berlarisudo chkconfig --list sidekiq
, layanan sidekiq ditampilkanon
untuk runlevel yang sesuai.sumber
Angka-angka prioritas tidak perlu unik. Mereka hanya mewakili pesanan layanan.
Chkconfig tidak memiliki masalah menambahkan layanan "it". Kalau tidak, Anda akan dibatasi hingga 100 layanan.
Juga dalam contoh saya, ini akan berjalan sebelum oracle karena skrip dijalankan secara alfabet.
sumber