通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
–
一、 命令参数
1.crontab -l
显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
2.crontab -e
编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
26 9 * * 1,2,3,4,5 /usr/bin/python /home/workspace/stock/mainInfoOpenBuy1.py
输入上面的内容后,:wq
,保存,退出后就可直接运行了
3.crontab -r
如果不指定用户,则默认删除当前用户的crontab文件。
–
二、 文件格式
分 时 日 月 星期 要运行的命令
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令
三、 使用实例
1.每1分钟执行一次myCommand
*/1 * * * * 表示每一分钟执行一次
/
:表示每一的意思
2.每小时的第3和第15分钟执行
3,15 * * * * myCommand
3.在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
4.每月1、10、22日的4 : 45执行
45 4 1,10,22 * * myCommand
5.每周六、周日的1 : 10执行
10 1 * * 6,0 myCommand
四、 注意事项
有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。
1.脚本中涉及文件路径时写全局路径;
2.脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
!/bin/sh
source /etc/profile
3.当手动执行脚本OK,但是crontab死活不执行时,很可能是环境变量惹的祸,可尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh