首页 > 程序资源 > Linux下实现系统启动后每隔3天执行一次脚本。

Linux下实现系统启动后每隔3天执行一次脚本。

论坛上有人问《请教一下, Padavan 固件如何实现启动后每隔三天执行一次命令》,有时间就写了这个脚本:

实现:首次启动后每隔若干时间,执行一次脚本,最低执行精度到分钟级。

使用方法就是把这个脚本放到任意地方,然后在 cron 加入定时任务,并把脚本设置为开机启动即可。

#!/bin/bash

# 如果此文件被放置于启动目录,则应该修改此处 $1 为 start 或 start_run
run_type="$1"

# 用于记录上次启动时间的文件
time_record_file="$0.time"
# 获取当前时间错
now_time=`date +%s`
# 假装上次是1970年运行的
time_diff=${now_time}

# start 为开机不执行代码
if [ "${run_type}" == 'start' ]; then
    echo ${now_time} > ${time_record_file}
    exit;
# start_run 为开机后执行一次代码,
elif [ "${run_type}" == 'start_run' ]; then
    echo '0' > ${time_record_file}
fi

# 检查时间记录文件是否存在
if [ -f $time_record_file ]; then
    # 获取上次运行时间 并计算时间差
    old_time=`cat ${time_record_file}`
    time_diff=`expr ${now_time} - ${old_time}`
fi

# 与上次执行时间差不超过 60*60*24*3 = 259200秒 则退出
if [ ${time_diff} -lt 259200 ]; then
    exit
fi

############# 开始你的代码
echo "开始运行了"

将脚本保存,并 sudo chmod +x /path/script 添加执行权限(可不加,则必须使用 /bin/bash 运行脚本)。

然后 crontab -e 添加定时任务,加入如下代码 * * * * * /bin/bash /path/script check 即可设置为每分钟执行一次检查。

开机时可以选择是否执行脚本,分别是 start 启动不运行脚本内容, start_run 启动时也执行一次脚本。

然后将脚本加入启动项即可,有多种方法可以实现,这里提供两种:

方法一

直接将本脚本放置于 `/etc/init.d/` 目录下,并加执行权限(必须),然后修改 `run_type` 这一行为需要选择的类型即可。

方法二

将 `/bin/bash /path/script start` 加入 `/etc/rc.local` 文件。

-- End

上一篇: 【原创】Typecho 在使用 CDN 的情况下获取真实客户端 IP(非覆盖 $_SERVER)

下一篇: Nginx 下 Typecho 正确设置 Url 重写,避免 “开启反垃圾保护” 后无法留言。

最近回复

标签