crontab
按照配置定时执行任务
参数说明
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user # 申明crontab user,对该用户的定时任务进行操作
-e edit user's crontab # 执行编辑器来设置定时任务,编辑器默认为VI
-l list user's crontab # 查看定时任务
-r delete user's crontab # 删除定时任务
-i prompt before deleting # 删除前提示
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
定时任务格式
* * * * * <cmd>
| | | | | 任务的执行脚本
| | | | 星期中的星期几(0-6)
| | | 月份(1-12)
| | 日期(1-31)
| 小时(0-23)
分钟(0-59)
注:
* :表示都要执行,如:分钟为*,则表示每分钟都要执行
a-b : 表示a-b范围都要执行,如: 分钟为1-10,表示第1分钟到第10分钟这段时间内每隔1分钟都要执行
*/n : 表示每隔n执行一次,如:分钟为*/3,表示每隔三分钟执行一次
a,b,c : 表示a,b,c时需执行一次,如:分钟为1,10,20,表示在第1分钟、第10分钟、第20分钟时都要执行
使用示例
每分钟输出测试日志到/tmp/1.log:
* * * * * echo `date -u +\%Y-\%m-\%d\ \%H:\%M:\%S.\%N` test log `uuidgen` >>/tmp/1.log
0-23中每两小时0分执行一次cmd
0 0-23/2 * * * <cmd>
周一到周五的5点执行一次cmd
0 17 * * 1-5 <cmd>
注意事项
-
每次执行定时任务后系统都会发送一条邮件给当前用户,如果不想收到可以在脚本后边加上重定向
>/dev/null 2>&1
,调试的话可以开启,定时任务执行出错时会在邮件中显示,也会显示脚本打印的内容,邮件在/var/spool/mail/root
中,可以在/var/log/cron
中看到定时执行的命令邮件示例:
From root@localhost.localdomain Wed May 25 05:26:01 2022 Return-Path: <root@localhost.localdomain> X-Original-To: root Delivered-To: root@localhost.localdomain Received: by localhost.localdomain (Postfix, from userid 0) id 9A035B63; Wed, 25 May 2022 05:26:01 +0800 (CST) From: "(Cron Daemon)" <root@localhost.localdomain> To: root@localhost.localdomain Subject: Cron <root@localhost> /bin/sh -c "echo `date -u +%Y-%m-%d\ %H:%M:%S.%N` test log `uuidgen`" Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-Cron-Env: <XDG_SESSION_ID=84> X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0> X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Message-Id: <20220524212601.9A035B63@localhost.localdomain> Date: Wed, 25 May 2022 05:26:01 +0800 (CST) 2022-05-24 21:26:01.617994410 test log 636293fd-e4bd-4f21-b8fb-f203e68fb0e0
-
在crontab定时任务中,日期需写成
date +\%Y-\%m-\%d\ \%H:\%M:\%S.\%N
,不能写成date +"%Y-%m-%d %H:%M:%S.%N"
写成后者会报错:
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"' /bin/sh: -c: line 1: syntax error: unexpected end of file
-
定时任务中的脚本需写绝对路径,脚本中如果用到了环境变量,需调试确认是否有值