CentOS7死循环脚本开机启动测试

因为要处理一个系统重启后的问题,而想到一个问题『死循环的脚本在开机启动的时候会导致机器卡在那里吗?』

以下是相关实验,记录一下!

一、 相关脚本

cat elisun.sh (该脚本运行10分钟)

#!/bin/bash
for((i=1;i<=600;i++))
do
    DATE=`date "+%Y-%m-%d %H:%M:%S"`
    echo "$DATE $i" >> /tmp/haha.txt
    sleep 1
done

cat elisun1.sh(elisun2.sh,elisun3.sh改对应数字,此三个脚本均是死循环)

#!/bin/bash
while true
do
    DATE=`date "+%Y-%m-%d %H:%M:%S"`
    echo "$DATE haha1" >> /tmp/haha1.txt
    sleep 3
done

二、 实验场景

1. 将elisun1.sh、elisun2.sh、elisun3.sh三个死循环脚本写入到文件/etc/rc.d/rc.local里,重启机器。

结论:开机后的状况是只有elisun1.sh一直在执行死循环。

2. 将elisun.sh、elisun1.sh、elisun2.sh、elisun3.sh四个脚本写入到文件/etc/rc.d/rc.local里,重启机器。

结论:开机后elisun.sh起来,执行10分钟后elisun.sh退出,elisun1.sh启动。

3. 将elisun.sh写入系统服务,查看会不会卡住。

cat /usr/lib/systemd/system/elisun.service

[Unit]
Description=elisun
After=network.target

[Service]
Type=forking
ExecStart=/data/shell/elisun.sh
PrivateTmp=false

[Install]
WantedBy=multi-user.target

结论:开机启动后不会卡住。

4. 将elisun1.sh、elisun2.sh、elisun3.sh三个死循环脚本写入到系统服务中

结论:开机后机器不会卡住,但启动几分钟后三个脚本均被系统杀死。

Type=forking去掉或改成默认值Type=simple,脚本正常运行

三、 总结

开机启动的死循环脚本不会导致系统在启动过程中卡住。