我有一个 Shell 脚本,我想在启动时运行它。每次我启动设备时,它都会在后台运行脚本。 该脚本包含一个 while true 循环,并假设不断运行,至少直到设备关闭为止。这是脚本:
#!/bin/bash
cd /home/.../
while true
do
sh ./update_logs.sh
sleep 1
done
经过大量搜索后,我想出了太多的信息,这些信息在我的脑海中形成了沙拉。建议我进入此文件夹 /etc/init.d
并使用特殊模式(LSB 兼容)将我的脚本放在那里,如下所示:
!#/bin/sh
start () {
echo "application started";
./helloworld # you should use an absolute path here instead of ./
}
stop () {
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage start|stop";
esac
exit $?
通过 chmod +x 使脚本可执行,然后通过键入 ln -s/etc/rc.d/init.d/run_update.sh/etc/init.d/rc5.d/S90run_update
为该文件创建符号链接(symbolic link)
这应该是“困难的方法”,而“简单的方法”是将我的脚本放入文件夹 /etc/rc.local
中,它将在主启动过程后启动我的脚本。
嗯,我没有这种文件夹。我在 etc
文件夹中的内容是 rc.d
,它通向子文件夹: init.d
rc0.d
rc1.d
rc2.d
... rc6.d
如果通过编写上面的代码来解决这个问题是很困难的,那么我需要在其中包含的最少内容是多少?因为我看到不同类型的代码,其中包括带有描述和运行级别的 ### 我有 Linux Red Hat 4.6.3-2。
最佳答案
在 DEBIAN 脚本中应该在顶部
#!/bin/sh
### BEGIN INIT INFO
# Provides: SCRIPT_NAME_HERE_NO_PATH
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
....
然后在 shell 中必须启用 rc 系统链接
update-rc.d SCRIPT_NAME_HERE_NO_PATH defaults
update-rc.d SCRIPT_NAME_HERE_NO_PATH enable
关于linux - 在启动时运行 Linux Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310418/