【发布时间】:2019-01-18 07:21:30
【问题描述】:
我有一个要在启动时运行的 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 为文件创建符号链接
这应该是“硬方法”,而“简单方法”是将我的脚本放在文件夹 /etc/rc.local 中,它将在主启动过程之后启动我的脚本。
嗯,我没有这种文件夹。我在etc 文件夹中拥有的是rc.d,它会导致子文件夹:init.drc0.drc1.drc2.d...rc6.d
如果通过编写上面的代码来解决问题,那么我需要在其中包含的最低限度是多少?因为我看到了不同类型的代码,其中包括带有描述和运行级别的### 我有一个 Linux Red Hat 4.6.3-2。
【问题讨论】:
-
查看
/etc/rc.d。应该有一个rc.local。如果没有,您可以创建一个。换句话说,您需要一个脚本文件/etc/rc.d/rc.local,而不是文件夹/etc/rc.local。 -
我在想我可能需要创建 rc.local。操作系统熟悉的东西?我只是使用“vi”创建一个?
-
是的,操作系统知道这一点。
-
不知道你的脚本实际上做了什么:你不能安排它——例如——每分钟运行一次吗? (你可以用 cron 来做到这一点)
-
您正在运行哪个发行版?您说的是 Red Hat 4.6.3-2,但这不太可能是正确的。
/etc/redhat-release说什么?
标签: linux shell redhat boot rc