一、思路
利用 /etc/rc.d/rc.local
文件开机执行的特性,使其执行一个带 sleep
命令的脚本,实现在启动后延迟若干时间再执行程序的功能。
主要是为了应对某些情况下,关键程序需要等待一些不受控的服务先启动,然后才能正常工作。
二、实施
需要准备一个脚本,大概如下:
/usr/local/delay.sh
#!/bin/bash
# 延迟30秒
sleep 30
# 执行某个程序
python3 xxxx.py
在 /etc/rc.d/rc.local
中添加如下脚本:
/usr/local/delay.sh &
命令后加 &
表示后台执行,避免卡住rc.local
完成。
开机启动后,会先执行 /etc/rc.d/rc.local
,其中命令 /usr/local/delay.sh &
被执行。此脚本 sleep 30 秒后,会执行 python3 xxxx.py
。
三、要点
- 一些系统里,
/etc/rc.d/rc.local
文件没有执行权限,需要增加执行权限:sudo chmod u+x /etc/rc.d/rc.local
/usr/local/delay.sh
需要与/etc/rc.d/rc.local
相同的执行权限:sudo chmod u+x /usr/local/delay.sh
rc.local
的执行情况,可以检查rc-local
服务日志获得:sudo journalctl -u rc-local.service -f