init.d脚本启动问题

我有这个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 

您可以尝试使用insserv命令。 从10.10安装的“man insserv”命令,我可以读到:

 insserv - Enable an installed system init script. 

您可以尝试在终端中运行它:

sudo chmod 755 /etc/init.d/couchpotato

sudo update-rc.d couchpotato默认值

================================

当你想在启动时禁止它运行时:

sudo update-rc.d -f couchpotato删除

要了解更多信息,请:

man update-rc.d

我永远无法获得提供的init.d脚本。 我可以运行它很好,但init.d会启动couchpotato,但我永远无法连接到它。 我继续为它创建了自己的脏脚本。 假设您为installdir使用路径〜/ .couchpotato,这应该可以工作。

 ### BEGIN INIT INFO # Provides: CouchPotato application instance # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Should-Start: $NetworkManager # Should-Stop: $NetworkManager # 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 USER="youruser" case "$1" in start) echo "Starting $DESC" /home/micdawg/.couchpotato/CouchPotato.py & ;; stop) echo "Stopping $DESC" PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'` kill -9 $PID ;; restart|force-reload) echo "Restarting $DESC" PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'` kill -9 $PID sleep 15 /home/micdawg/.couchpotato/CouchPotato.py & ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 

来自man:init.d脚本中的运行级别信息使用LSB注释头(..)这样的头必须存在于init.d脚本中。 有关LSB标头格式的详细信息,请参阅insserv(手册页)。

例:

 ### BEGIN INIT INFO # Provides: apache2 # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Start/stop apache2 web server ### END INIT INFO 

接受的答案假设“upstart”用于在系统引导时启动进程。 情况并非总是如此。 我在虚拟专用服务器上使用Ubuntu 9.04 Minimal运行,这不使用upstart。

在这种情况下,为了让系统注意并运行/etc/init.d中的脚本,您需要运行update-rc.d,它会在系统查找指令的位置创建指向inet.d脚本的符号链接。当它启动时。

像这样的东西:

 update-rc.d couchpotato defaults 92 

92是优先级的合理值,延迟脚本的启动,直到其他重要的东西运行。

以下是有关运行update-rc.d的更多详细信息

如果您没有得到任何线索,为什么您的服务没有开始启动。 但是,当您尝试使用命令service start手动启动时,它会完全正常service start 。 然后尝试将标准输出和错误输出重定向到某个文件。 这可能会给你一些线索,为什么它没有开始

例如在你的脚本里面

 case "$1" in start) echo "Starting Service "  /tmp/bootservice.log 2>&1 ;; stop) echo "Stopping Service "  /tmp/bootservice.log 2>&1 ;; *) echo "Usage: /etc/init.d/test {start|stop}" exit 1 ;; esac exit 0