pengembangan-web-mp-pd.com

Apa yang dibutuhkan agar layanan linux didukung oleh chkconfig?

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
35
Geo

Skrip harus memiliki 2 baris:

# chkconfig: <levels> <start> <stop>
# description: <some description>

sebagai contoh:

# chkconfig: 345 99 01
# description: some startup script

345 - levels to configure
99 - startup order
01 - stop order

Setelah Anda menambahkan header di atas Anda dapat menjalankan chkconfig --add <service>.

73
katriel

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.

4
Kamil Kisiel

Kedengarannya seperti masalah khusus Geo yang telah dipecahkan, tetapi saya mengalami pesan yang sama ketika mencoba mengatur aplikasi Rails aplikasi dengan sidekiq sebagai layanan terkelola. Saya akan jelaskan 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 di runlevel 3 hingga 5.

chkconfig --list
> httpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
> mysqld            0:off   1:off   2:on    3:on    4:on    5:on    6:off
> redis-server      0:off   1:off   2:on    3:on    4:on    5:on    6:off
> (etc...)

Saya perlu menambahkan skrip baru untuk layanan sidekiq, jadi saya mengambil skrip di https://Gist.github.com/CD1212/5326706 , memodifikasinya agar sesuai dengan aplikasi saya. parameter, 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:

Sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig

Setelah beberapa bacaan tambahan Saya menemukan bahwa angka prioritas yang ditentukan di bagian atas setiap skrip chkconfig harus unik. Pesan kesalahan yang lebih jelas adalah Nice! Script lain memiliki level shutdown prioritas 75, jadi saya mengubah tambang menjadi 76 dan mencoba lagi. Inilah kepala skrip init saya:

#!/bin/bash
#
# sidekiq    Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#

Kali ini, Sudo chkconfig --add sidekiq tidak memberikan keluhan. Lalu ketika saya berlari Sudo chkconfig --list sidekiq, layanan sidekiq ditampilkan sebagai on untuk runlevel yang sesuai.

1
Topher Hunt

Angka-angka prioritas tidak perlu unik. Mereka hanya mewakili pesanan layanan.

ls -l /etc/rc.d/rc3.d/*Oracle lrwxrwxrwx 1 root root 16 Sep 16 12:28 /etc/rc.d/rc3.d/S99Oracle -> ../init.d/Oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 root root 12 Sep 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

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.

0
George Zamroz