使用crontab定时执行周期任务
我们可以使用crontab -e
命令编辑属于当前登录用户$username
的周期性任务列表。该命令的执行实际上是打开了/
var/spool/cron/crontabs/$username
文件以供我们编辑。其中,每一行代表一条任务。每行的前五个域用于指定任务执行的时刻与周期,即分钟、小时、每月第几天、月、每周第几天。
# Meaning of each column: # field allowed values # ----- -------------- # minute 0–59 # hour 0–23 # day of month 1–31 # month 1–12 (or names, see below) # day of week 0–7 (0 or 7 is Sun, or use names)
例如,如下的配置将于每日零点自动执行脚本程序user_script。
# DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.oAYqhI/crontab installed on Wed May 5 16:36:38 2021) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) # 0 0 * * * . /home/$username/.cron_env; /usr/local/bin/user_script
需要注意的是:
cron
守护进程起动时用户配置文件~/.bashrc
尚未加载,所以一些自定义的环境变量并不存在。为此,需要将这些环境变量的设置提取出来另存到文件/home/$username/.cron_env
中,并在运行周期任务前加载。- 加载
/home/$username/.cron_env
时,source
命令并不能被cron
识别,所以只能使用命令.
。 - cron不能识别路径
~/
,所以如果用到的话,必须要使用全称/home/
$username
。
子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉,可谓好学也已。”