it-swarm-vi.tech

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

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

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>.

73
katriel

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/skeleton và sử dụng nó làm 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.

4
Kamil Kisiel

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 sidekiq như một dịch vụ được quản lý. 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 bật trên đường băng 3 xuyên 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 tập lệnh mới cho dịch vụ sidekiq, vì vậy tôi đã lấy tập lệnh tại https://Gist.github.com/CD1212/5326706 , đã sửa đổi tập lệnh cho phù hợp với ứng dụng của tôi và lưu nó vào /etc/rc.d/init.d/sidekiq (thuộc sở hữu của root giống như tất cả các tập lệnh 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 một số đọ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ẽ là Nice! Một kịch bản khác đã tắt mức ưu tiên 75, vì vậy tôi đã đổi 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.
#

Thời gian này, Sudo chkconfig --add sidekiq khô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ị là on cho các đường chạy phù hợp.

1
Topher Hunt

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 tháng 9 16 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 Oracle vì các tập lệnh được chạy theo thứ tự abc.

0
George Zamroz