我无法在启动设备时正常启动程序。
我创建了一个脚本并将该脚本放在/etc/init.d/S77Hello.sh
中
在这个脚本中,我启动了程序,作为其他程序的监视程序。
但是在启动完成后,只有看门狗程序运行的不是应该由看门狗程序启动的其他程序。
有趣的是,当我使用以下命令启动程序时:
/etc/init.d/S77Hello.sh start
它以正常方式启动所有其他程序。
S77Hello.sh
#!/bin/sh
/usr/local/bin/mywatchdog
任何有助于解决此问题的帮助都会有所帮助。
谢谢, Yuvi
答案 0 :(得分:1)
启动时不会自动调用/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的系统,但由于你在ARM上使用带有sysvinit的发行版,我猜你在Raspberry Pi上使用了Raspian。如果没有,请查看现有init脚本在发行版中的工作方式。