crontab
1. Linux Crontab Format
MIN HOUR DOM MON DOW CMD1. 各字段值允许的范围
MIN 0-59
HOUR 0-23
DOM 1-31
MON 1-12
DOW 0-6
CMD command
#DOW: 0表示周日 6表示周六2. *的含义
* * * * * CMDThe * means all the possible unit:
- When you specify
*/5in minute field means every 5 minutes. - When you specify
0-10/2in minute field mean every 2 minutes in the first 10 minute. - Thus the above convention can be used for all the other 4 fields.
3. 特殊关键字的含义
@yearly 0 0 1 1 *
@monthly 0 0 1 * *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot run at startup2. 相关命令
crontab -l #查看当前用户的任务列表
crontab -u username -l #查看指定用户的任务列表
crontab -e3. 注意
1. 环境变量
crontab在运行时,会加载一个最简化的环境变量,如果希望保持用户的环境变量,可以通过. ~/.bash_profile文件,即:
* * * * * . ~/.bash_profile && node script.js2. %转义
crontab中%有特殊含义
* * * * * echo $(date +"\%F \%H:\%M:\%S") >> /data/log/crontab.log 2>&1
# The "sixth" field (the rest of the line) specifies the command to be run. The
# entire command portion of the line, up to a newline or % character, will be
# executed by /bin/sh or by the shell specified in the SHELL variable of the
# crontab file. Percent-signs (%) in the command, unless escaped with backslash
# (\), will be changed into newline characters, and all data after the first %
# will be sent to the command as standard input. There is no way to split a
# single command line onto multiple lines, like the shell's trailing "\".3. 标准输出/错误重定向
crontab在执行的时候,如果没有重定向,会将标准错误和标准输出都发送到mail,在重定向的时候,句柄绑定操作应该放在命令最后。
* * * * * echo $(date +"\%F \%H:\%M:\%S") >> /data/log/crontab.log 2>&1
# 2>&1 >> /data/log/crontab.log是错误的写法