我有这个 init.d 脚本,我试图用 ubuntu 启动它,但是它不会在启动时运行。当我输入“sudo /etc/init.d/couchpotato start”时它确实有效。关于如何在启动时启动它的任何想法?
#! /bin/sh
### BEGIN INIT INFO
# Provides: CouchPotato application instance
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of CouchPotato
# Description: starts instance of CouchPotato using start-stop-daemon
### END INIT INFO
############### EDIT ME ##################
# path to app
APP_PATH=/usr/local/sbin/couchpotato
# path to python bin
DAEMON=/usr/bin/python
# startup args
DAEMON_OPTS=" CouchPotato.py -q"
# script name
NAME=couchpotato
# app name
DESC=CouchPotato
# user
RUN_AS=root
PID_FILE=/var/run/couchpotato.pid
############### END EDIT ME ##################
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC"
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
;;
stop)
echo "Stopping $DESC"
start-stop-daemon --stop --pidfile $PID_FILE
;;
restart|force-reload)
echo "Restarting $DESC"
start-stop-daemon --stop --pidfile $PID_FILE
sleep 15
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
您可以尝试在终端中运行它:
sudo chmod 755 /etc/init.d/couchpotato
sudo update-rc.d couchpotato 默认值
=================================
当你想禁止它在启动时运行时:
sudo update-rc.d -f couchpotato 删除
要了解更多信息,请执行以下操作:
人更新-rc.d
您可以尝试使用 insserv 命令。从 10.10 安装的“man insserv”命令中,我可以阅读:
我永远无法让提供的 init.d 脚本工作。我可以很好地运行它,但 init.d 会启动 couchpotato,但我永远无法连接到它。我继续为它创建了自己的脏脚本。假设您使用路径 ~/.couchpotato 作为安装目录,这应该可以工作。
来自 man:init.d 脚本中的运行级别信息 使用 LSB 注释标头(..)此类标头必须存在于 init.d 脚本中。有关 LSB 标头格式的详细信息,请参见 insserv( 手册页。
例子:
接受的答案假定系统启动时正在使用“upstart”来启动进程。并非总是如此。我正在使用在虚拟专用服务器上运行的 Ubuntu 9.04 Minimal,这不使用新贵。
在这种情况下,为了让系统注意到并运行 /etc/init.d 中的脚本,您需要运行 update-rc.d,它会在系统查找指令的地方创建指向 inet.d 脚本的符号链接当它启动时。
像这样的东西:
92 是一个合理的优先级值,延迟脚本的启动,直到其他重要的东西运行。
以下是有关运行 update-rc.d的更多详细信息
如果您不知道为什么您的服务没有在启动时启动。但是,当您尝试使用 command 手动启动它时,它会很好地启动
service <your service> start
。然后尝试将标准输出和错误输出重定向到某个文件。这可能会给你一些线索,为什么它没有开始例如在你的脚本里面