Crontab 学习笔记

前言:Crontab的确是Linux自动化运维的一个利器,自从我知道这个东西七年过去了,嗯,我现在还在用(也许我是火星用户,偷偷说一声Py大法好)。现在顺便整理一下笔记。

安装

sudo yum install crontabs

配置

sudo crontab -e // Editing task of certain user, same as : vi /etc/crontab

sudo crontab -u // Appointing a user

sudo crontab -l // Listing task plan of certain user

sudo crontab -r // Removing all plan of certain user

常规用法

[min] [hour] [day] [month] [week] [command to be executed]
  • 其中,Week指的是星期几,区间为0-6,0为周日。
  • 单独星号*为不设置,星号配合数字代表范围内的数字
  • 斜杠/代表“每”
  • 逗号,分隔几个离散的周期
  • 破折号-连接的两个数字代表一个区间
  • 举个栗子:10,15,20 9-16 */1 * * sh /root/insane.sh 代表 每个月一号的9点到16点的第10分钟,第15分钟,第20分钟用sh命令执行/root/insane.sh文件

几个常用例子

  • 每五分钟执行 */5 * * * *
  • 每小时执行 0 * * * *
  • 每天执行 0 0 * * *
  • 每周执行 0 0 * * 0
  • 每月执行 0 0 1 * *
  • 每年执行 0 0 1 1 *

判断是否启动成功

判断Crontab是否正常启动,除了在执行最后添加一个创建日志文本的操作,还可以查看Crontab自带的日志文件:
# tail -10 /var/log/cron
除此之外,还可以使用Systemctl查看
# systemctl status crond

读取环境变量

crontab 有一个问题, 就是它总是不会默认从用户 profile 文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到 crontab 中试图让它定期执行时就是会出错。因此,只能在脚本文件的开头,强制要求导入环境变量,可保万无一失。
#!/bin/sh
. /etc/profile
. ~/.bash_profile

参考资料

评论