Điều gì cần thiết cho một dịch vụ linux được chkconfig hỗ trợ?


36

Tôi đang cố gắng thêm vào tự động khởi động lúc khởi động một dịch vụ linux thông qua

chkconfig -add <servicename> 

và tôi nhận được một tin nhắn nói

service <servicename> does not support chkconfig

Tôi đang sử dụng Red Hat Enterprise 4. Kịch bản tôi đang cố gắng thêm vào tự động khởi động khi khởi động là như sau:

#!/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

là dịch vụ của bạn trong init.d /
Rungano

Câu trả lời:


74

Kịch bản phải có 2 dòng:

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

ví dụ:

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

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

Sau khi bạn thêm các tiêu đề trên, bạn có thể chạy chkconfig --add <service>.


Không gian thêm trên dòng thứ hai đã được thêm vào bằng cách đánh dấu, không cần thiết
katriel

2
Dưới đây là một số thông tin thêm về Cấp độ chạy và những thứ khác. tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html
Pred

Ở trên dường như không thêm các tập lệnh kill thích hợp. Tôi cần chkconfig <service> --level 06 tắt để có được các tập lệnh kill.
user239558

4

Mặc dù katriel đã trả lời điều này với mức tối thiểu cần thiết để tạo tập lệnh init, tôi nghĩ bạn cũng sẽ được phục vụ tốt khi xem /etc/init.d/skeletonvà sử dụng nó như một khuôn mẫu để dựa vào tập lệnh init của bạn. Bạn sẽ kết thúc với một kịch bản phù hợp và dễ đọc hơn nhiều.


5
Lời khuyên về mặt lý thuyết tốt, nhưng /etc/init.d/skeletonkhông có trên các hệ thống RHEL, chỉ có trên Debian và có liên quan (tôi nghĩ là Ubuntu).
Harlan

1

Nghe có vẻ như vấn đề cụ thể của Geo đã được giải quyết, nhưng tôi đã gặp một thông báo tương tự trong khi cố gắng thiết lập ứng dụng Rails với sidekiqtư cách là một dịch vụ được quản lý. Tôi sẽ giải thích giải pháp của tôi ở đây trong trường hợp nó giúp bất kỳ người mới nào khác như tôi.

Tôi đang làm việc trên bản cài đặt CentOS và chkconfig đã được thiết lập với một số dịch vụ khác như httpd, mysql và redis. Lưu ý rằng hầu hết các dịch vụ chỉ cần được kích hoạt trên 3đường băng thông qua 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...)

Tôi cần thêm một tập lệnh mới cho sidekiqdịch vụ, vì vậy tôi đã lấy tập lệnh tại https://gist.github.com/CD1212/5326706 , sửa đổi nó để phù hợp với các tham số của ứng dụng của tôi và lưu nó tại /etc/rc.d/init.d/sidekiq(sở hữu bởi root giống như tất cả các kịch bản khác ở đó).

Tuy nhiên, khi tôi cố gắng đăng ký dịch vụ mới này, tôi đã gặp lỗi chkconfig:

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

Sau khi đọc thêm, tôi phát hiện ra rằng các số ưu tiên được xác định ở đầu mỗi tập lệnh chkconfig phải là duy nhất. Một thông báo lỗi rõ ràng hơn sẽ được tốt đẹp! Một kịch bản khác đã tắt mức ưu tiên 75, vì vậy tôi đã thay đổi mức của tôi thành 76 và thử lại. Đây là phần đầu của tập lệnh init của tôi:

#!/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.
#

Lần này, sudo chkconfig --add sidekiqkhông đưa ra khiếu nại. Sau đó, khi tôi chạy sudo chkconfig --list sidekiq, dịch vụ sidekiq được hiển thị như onđối với các đường băng thích hợp.


0

Các số ưu tiên không cần phải là duy nhất. Họ chỉ đại diện cho một đơn đặt hàng dịch vụ.

ls -l /etc/rc.d/rc3.d/*oracle lrwxrwxrwx 1 root 16 tháng 9 16 12:28 /etc/rc.d/rc3.d/S99oracle -> ../init.d/oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 root 12 ngày 16 tháng 9 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

Chkconfig không gặp sự cố khi thêm dịch vụ "nó". Nếu không, bạn sẽ bị giới hạn ở 100 dịch vụ.

Cũng trong ví dụ của tôi, nó sẽ chạy trước orory vì các script được chạy theo thứ tự abc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.