linux服务需要chkconfig支持什么?

我试图添加到自动启动在启动时通过一个Linux服务

chkconfig -add <servicename> 

我得到一个消息说

 service <servicename> does not support chkconfig 

我正在使用红帽企业4.我试图在启动时添加到自动启动脚本如下:

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

该脚本必须有2行:

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

例如:

 # chkconfig: 345 99 01 # description: some startup script 345 - levels to configure 99 - startup order 01 - stop order 

添加上面的头文件后,可以运行chkconfig --add <service>

虽然katriel已经以创build一个初始化脚本的最低要求回答了这个问题,但是我认为你也可以在/etc/init.d/skeleton中作为一个模板来使用你的init脚本。 你会得到一个更加一致和可读的脚本。

这听起来像Geo的具体问题已经解决了,但我试图build立一个与sidekiq作为托pipe服务的Rails应用程序类似的消息。 我会在这里解释我的解决scheme,以帮助像我这样的其他新手。

我正在进行一个CentOS安装,并且chkconfig已经设置了其他一些服务,如httpd,mysql和redis。 请注意,大多数服务只需在运行级别35上启用。

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

我需要为sidekiq服务添加一个新的脚本,所以我在https://gist.github.com/CD1212/5326706抓取脚本,修改它以适应我的应用程序的参数,并将其保存&#x5728;/etc/rc.d/init.d/sidekiq (像所有其他脚本那样由root拥有)。

但是,当我试图注册这个新的服务,我得到了chkconfig错误:

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

经过一些额外的阅读后,我发现在每个chkconfig脚本的顶部定义的优先级编号必须是唯一的。 一个更清晰的错误信息本来是不错的! 另一个脚本的closures优先级为75,所以我把它改为76,然后再试一次。 以下是我的init脚本的头部:

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

这一次, sudo chkconfig --add sidekiq没有提出任何投诉。 然后,当我运行sudo chkconfig --list sidekiq ,sidekiq服务显示为适当的运行级别。

优先编号不需要是唯一的。 它们只代表服务的顺序。

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没有添加“it”服务的问题。 否则,您将被限制为100个服务。

另外在我的例子中,它会在oracle之前运行,因为脚本是按字母顺序运行的。