it-swarm.cn

chkconfig支持linux服务需要什么?

我试图通过引导将linux服务添加到引导时的自动启动

chkconfig -add <servicename> 

我收到一条消息说

service <servicename> does not support chkconfig

我正在使用Red Hat Enterprise4。我试图在引导时添加到自动启动的脚本如下:

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

该脚本必须有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>

73
katriel

尽管katriel已经用创建init脚本所需的最低限度回答了这个问题,但我认为您也可以通过查看/etc/init.d/skeleton并将其用作初始化脚本的基础模板。您将获得一个更加一致和易读的脚本。

4
Kamil Kisiel

听起来,Geo的特定问题已经解决,但是在尝试将sidekiq设置为Rails应用程序)作为托管服务时,我遇到了类似的消息。在这里解释我的解决方案,以防它对像我这样的其他新手有所帮助。

我正在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 处获取了脚本,对其进行了修改以适合我的应用程序参数,并将其保存在/etc/rc.d/init.d/sidekiq(与该目录中的所有其他脚本一样,由root拥有)。

但是,当我尝试注册此新服务时,出现chkconfig错误:

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

一些额外的读物 之后,我发现在每个chkconfig脚本顶部定义的优先级数字必须是唯一的。更清晰的错误消息应该不错!另一个脚本的关机优先级为75,所以我将其更改为76,然后重试。这是我的初始化脚本的标题:

#!/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服务显示为on

1
Topher Hunt

优先级编号不必唯一。它们仅代表服务顺序。

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 16 Sep 16 12:36 /etc/rc.d/rc3.d/S99it-> ../init.d/it

Chkconfig在添加“ it”服务时没有问题。否则,您将只能使用100个服务。

同样在我的示例中,它会在Oracle之前运行,因为脚本是按字母顺序运行的。

0
George Zamroz