我正在尝试通过
chkconfig -add <servicename>
我收到一条消息说
service <servicename> does not support chkconfig
我正在使用 Red Hat Enterprise 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 --add <service>
.虽然 katriel 已经用创建 init 脚本所需的最低限度来回答这个问题,但我认为您也可以很好地查看
/etc/init.d/skeleton
并使用它作为您的 init 脚本的模板。你最终会得到一个更加一致和可读的脚本。听起来 Geo 的具体问题已经解决,但我在尝试将 Rails 应用程序设置
sidekiq
为托管服务时遇到了类似的消息。我将在这里解释我的解决方案,以防它帮助像我这样的其他新手。我正在安装 CentOS,chkconfig 已经设置了其他几个服务,如 httpd、mysql 和 redis。请注意,大多数服务只需要在运行级别上
3
启用5
。我需要为该
sidekiq
服务添加一个新脚本,因此我在https://gist.github.com/CD1212/5326706获取了脚本,对其进行了修改以适合我的应用程序的参数,并将其保存在/etc/rc.d/init.d/sidekiq
(由 root 拥有,就像所有那里的其他脚本)。但是,当我尝试注册此新服务时,出现 chkconfig 错误:
经过一些额外的阅读后,我发现在每个 chkconfig 脚本顶部定义的优先级编号必须是唯一的。更清晰的错误消息会很好!另一个脚本的关闭优先级为 75,所以我将我的更改为 76 并再次尝试。这是我的初始化脚本的头:
这一次,
sudo chkconfig --add sidekiq
没有抱怨。然后当我运行时sudo chkconfig --list sidekiq
,sidekiq 服务显示为on
适当的运行级别。优先级编号不需要是唯一的。它们仅代表服务的顺序。
Chkconfig 添加“it”服务没有问题。否则,您将被限制为 100 项服务。
同样在我的示例中,它会在 oracle 之前运行,因为脚本是按字母顺序运行的。