linux - 在启动时运行 Linux Shell 脚本

标签 linux shell redhat boot rc

我有一个 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/

相关文章:

linux - ping 命令后延迟 1 秒

automation - Ansible 'no_log' 用于调试输出中的特定值,而不是整个模块

python - 为 Python3 命令安装 numpy 找不到错误

linux - 用于在多个服务器上执行命令的 bash 脚本

linux - 绑定(bind) IPv4 和 IPv6 套接字失败

linux - shell脚本也获取文件的最后一个空行

linux - 在没有互联网的情况下安装软件包 Red Hat

linux - GNU:访问损坏的共享库错误

c++ - pplx::守护进程未执行的任务

android - repo :在自动 bash 脚本中找不到用于构建 cyanogenmod 的命令