轻聆月下
轻聆月下
发布于 2024-03-24 / 2 阅读
0
0

Linux启动后延迟执行程序

一、思路

利用 /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

三、要点

  1. 一些系统里,/etc/rc.d/rc.local文件没有执行权限,需要增加执行权限:sudo chmod u+x /etc/rc.d/rc.local
  2. /usr/local/delay.sh 需要与 /etc/rc.d/rc.local 相同的执行权限:sudo chmod u+x /usr/local/delay.sh
  3. rc.local 的执行情况,可以检查 rc-local 服务日志获得:sudo journalctl -u rc-local.service -f

评论