当前位置:首页>Linux>Linux脚本控制(四)——定时/定期运行

Linux脚本控制(四)——定时/定期运行

  • 2026-10-03 18:58:32
Linux脚本控制(四)——定时/定期运行
在Linux系统中,通常会遇到一些脚本或程序需要在不同的时间或以不同的周期频次去运行以满足不同的运行需求,因此Linux系统提供了几种实现该目标的方法,如at命令、cron表和anacron命令。
01
控制脚本定时运行
使用at命令可指定Linux系统何时运行特定脚本,其对应的后台守护进程为atd(有些Linux发行版自带该软件且系统启动时运行atd守护进程,但有些发行版未安装此软件包,使用需自行安装)。
atd守护进程通常每隔60秒检查一个特殊目录(通常在/var/spool/at或/var/spool/cron/atjobs)从中获取到at命令提交的脚本任务,如果发现有任务,则查看其运行的时间,若当前时间与设置时间一致则运行该脚本,使用方法如下:
at [-f filename] time
其中-f指定用于从中读取命令的文件名,也可不指定,at命令默认会将STDIN的输入放入队列,time用于指定脚本何时运行(如果当前指定的时间已过,则会在次日同一时刻运行该脚本)。
at命令可识别的时间格式包括但不限于以下几种:
  • 标准小时和分钟——如 10:00
  • AM/PM 指示符——如 10:00 PM
  • 特定的时间名称——如 now 、 noon 、 midnight
  • 标准日期——如 MMDDYY 、 MM/DD/YY 或 DD.MM.YY
  • 文本日期——如 Dec 20 ,加不加年份均可
  • 时间增量表示如下:
  • Now + 15 minutes
  • 10:00 AM tomorrow
  • 10:00 + 7 days
02
控制脚本定期运行
上述at命令指定脚本在特定时间点运行,如果需要脚本每天或每周或每月某一时间定期运行则需要用cron命令实现。
2.1 cron基础用法
cron运行在后台并检查一个特殊的时间表即cron时间表来获取需执行的任务,使用方法如下:
minute hour day mouth week command
cron时间表允许使用特定值、取值范围或者通配符(*)来指定分、时、日、月、周字段,其中各字段取值范围如下:
  • 分——0~59
  • 时——0~23
  • 日——1~31
  • 月——1~12(也可写jan~dec)
  • 周——0~7(0和7都为周日,也可写sun~sat)
2.2 构建cron时间表
首先通过如下方式查看已有的cron时间表:
crontab -l
Linux系统默认用户的cron时间表不存在,通过如下方式可构建添加:
crontab -e
03
anacron的应用
上述cron命令可实现一个脚本的定期运行,如果系统运行过程中出现宕机或异常断电关机,则该时间段需要定期运行的脚本则不会运行,且当系统再次恢复正常时cron也不会再去运行那些错过的脚本任务,因此Linux系统中提供相应的解决办法,即anacron。
anacron会通过时间戳判断哪个脚本任务错过了运行时间并会及时运行该任务,每隔cron目录都有一个时间戳文件,位于/var/spool/anacron。使用方法如下:
period delay identifier command
其中,period指定任务的运行频率,delay指定系统再次启动后需等待多少分钟运行错过的任务,identifier是一个非空字符串用于标识出现的日志消息和错误。

最新文章

随机文章