我有一个我希望在启动时运行的Shell脚本。每次我启动设备它都会在后台运行脚本。 该脚本包含一个while循环,并假设不断运行,至少在设备关闭之前。这是脚本:
#!/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.d
rc0.d
rc1.d
rc2.d
... {{1} }
如果通过编写上面的代码解决问题的方法很困难,那么我需要在其中包含的最小值是多少?因为我看到了不同类型的代码,其中包括带有描述和运行级别的### 我有一个Linux Red Hat 4.6.3-2。
答案 0 :(得分:0)
好的,我想我明白了。 启动konsole会话,然后查找名为.bash_profile的隐藏文件。如果您在主目录中找不到它,则它不会退出。使用pico创建它(使用pico .bash_profile)。 如果文件存在,请使用指向脚本的链接对其进行编辑。 下次登录系统时,该文件将运行。
HOpe这有帮助。
答案 1 :(得分:0)
应该位于顶部
#!/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
答案 2 :(得分:0)
select max(x), min(x), max(y), min(y) into MAX_X, MIN_X, MAX_Y, MIN_Y
from tmp_bounding_box where id in ( id );