在引导时运行Linux Shell脚本

时间:2015-08-31 11:41:59

标签: linux shell redhat boot rc

我有一个我希望在启动时运行的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。

3 个答案:

答案 0 :(得分:0)

好的,我想我明白了。 启动konsole会话,然后查找名为.bash_profile的隐藏文件。如果您在主目录中找不到它,则它不会退出。使用pico创建它(使用pico .bash_profile)。 如果文件存在,请使用指向脚本的链接对其进行编辑。 下次登录系统时,该文件将运行。

HOpe这有帮助。

答案 1 :(得分:0)

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

答案 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 );