我需要在 OpenSuSe 11 启动时运行以下示例脚本:
#!/bin/sh
i=0;
while true; do
"SOME COMMAND FOR SAVING i TO ANOTHER PLACE" &> /dev/null
i=$((i+1))
sleep 1
done
所以基本上只需每秒对变量加 1,然后将该变量发送到另一个系统。我将此脚本保存在/bin/user/script.sh
从控制台启动脚本效果很好。
/bin/user/script.sh > /dev/null 2>&1 &
首先,我将此行添加到 OpenSuSe 附带的现有 /etc/init.d/boot.local 中,但是这运行得不太稳定。有时启动,有时不启动。我以为是因为用户权限,但即使之后
chmod 755 script.sh
问题仍然存在。然后我制作了自己的 /etc/init.d/myscript
/etc/init.d/myscript 的内容:
#! /bin/sh
#
# /etc/init.d/myscript
#
### BEGIN INIT INFO
# Provides: myscript
# Required-Start:
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0
# Short-Description: Start myscript while booting
# Description: ...
### END INIT INFO
#
#
#
case "$1" in
start)
echo "Starting myscript."
/bin/user/script.sh > /dev/null 2>&1 &
;;
stop)
echo "Stopping myscript."
killall -9 script.sh
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
然后我为我的脚本执行了 insserv 命令:
insserv myscript
从控制台启动和停止是可行的。
/etc/init.d/myscript start
/etc/init.d/myscript stop
但启动后 myscript 再次没有生命迹象。
我究竟做错了什么?如何才能在每次系统启动时成功运行脚本?
2015.11.12 更新:此脚本在 OpenSuSe 11 上启动时可以正常工作并正常启动。
答案1
您是否已验证 insserv 是否有效?
如果你运行chkconfig --list | grep myscript
你会得到任何输出吗?