无法在启动时在Linux中启动程序
问题描述:
我无法在启动设备时正常启动程序。 我已经创建了一个脚本并将该脚本放入/etc/init.d/S77Hello.sh
在此脚本中,我启动了该程序,该程序作为其他程序的看门狗。 但启动完成后,只有看门狗程序不运行应该由看门狗程序启动的其他程序。无法在启动时在Linux中启动程序
有趣的是,当我使用以下命令启动程序时: /etc/init.d/S77Hello.sh start
它以正常方式启动所有其他程序。
S77Hello.sh
#!/bin/sh
/usr/local/bin/mywatchdog
任何有助于解决问题会有所帮助。
感谢, Yuvi
答
脚本在/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脚本在发行版中的工作方式。
您可以发布'S77Hello.sh'文件的内容吗? – 2013-02-22 18:46:49
其简单的脚本命令'/ usr/local/bin/mywatchdog'就是它。 – Yuvi 2013-02-22 18:51:19
你的脚本在前台运行你的程序。 '/ usr/local/bin/mywatchdog'程序是否足够聪明,可以在启动后进入后台? – 2013-02-22 19:03:29