青石坞 - 开机启动
type: channel
link: https://www.qs5.org/tag/%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8/
items: Linux下实现系统启动后每隔3天执行一次脚本。

Linux下实现系统启动后每隔3天执行一次脚本。
type: item
date: 2020-05-21T15:56:28+00:00
description: 论坛上有人问《请教一下， 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