无法在启动时在Linux中启动程序

问题描述:

我无法在启动设备时正常启动程序。 我已经创建了一个脚本并将该脚本放入/etc/init.d/S77Hello.sh 在此脚本中,我启动了该程序,该程序作为其他程序的看门狗。 但启动完成后,只有看门狗程序不运行应该由看门狗程序启动的其他程序。无法在启动时在Linux中启动程序

有趣的是,当我使用以下命令启动程序时: /etc/init.d/S77Hello.sh start 它以正常方式启动所有其他程序。

S77Hello.sh

#!/bin/sh 
/usr/local/bin/mywatchdog 

任何有助于解决问题会有所帮助。

感谢, Yuvi

+0

您可以发布'S77Hello.sh'文件的内容吗? – 2013-02-22 18:46:49

+0

其简单的脚本命令'/ usr/local/bin/mywatchdog'就是它。 – Yuvi 2013-02-22 18:51:19

+0

你的脚本在前台运行你的程序。 '/ usr/local/bin/mywatchdog'程序是否足够聪明,可以在启动后进入后台? – 2013-02-22 19:03:29

脚本在/etc/init.d不会自动在启动时调用;你必须首先告诉你的init系统。如果您的发行版有/etc/init.d这可能通过update-rc.d完成。具体如下:

update-rc.d S77Hello.sh defaults 

查看相关手册页。如果你更喜欢GUI,rcconf提供了更友好的用户界面,但你可能需要先安装它。

然而,在你这样做之前,修复你的init脚本;它缺乏重要的信息。如果您尚未阅读,您可能需要阅读this

最起码,它需要是这个样子:

#/bin/sh 
### BEGIN INIT INFO 
# Provides:   mywatchdog 
# Required-Start: $local_fs 
# Required-Stop:  $local_fs 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start watchdog at boot time 
# Description:  Something something something 
### END INIT INFO 

case "$1" in 
    start) 
     /usr/local/bin/mywatchdog 
     echo $! >/var/run/mywatchdog.pid 
      echo "watchdog started." 
     ;; 
    stop) 
     if kill "$(cat /var/run/mywatchdog.pid)"; then 
      rm /var/run/mywatchdog.pid 
      echo "watchdog stopped." 
     else 
      exit 1 
     fi 
     ;; 
    *) 
     echo "Usage: $0 {start|stop}" 
     exit 1 
     ;; 
esac 

这是假设一个Debian-like系统在一定程度上,但由于您使用的是发行与ARM的sysvinit一个,我猜猜你在Raspberry Pi上使用Raspian。如果不是,请检查现有init脚本在发行版中的工作方式。