通过crontab,我们可以定时运行一些命令和Shell脚本
crontab [-u user] <-l | -r | -e> [-i]
-u user
:指定user用户的crontab-l
:显示user用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容-r
:删除user用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件-e
:编辑user用户的crontab文件,如果不指定用户,则默认编辑当前用户的crontab文件(不推荐使用文本编辑器直接修改crontab文件,建议使用crontab -e来进行修改)-i
:在删除用户的crontab文件时询问
crontab文件格式:
* | * | * | * | * | Command |
---|---|---|---|---|---|
分钟(0-59) | 小时(0-23) | 日(1-31) | 月(1-12) | 星期(0-7) | 命令 |
注:星期中0和7都代表星期天
实例:
每1分钟执行一次ls
* * * * * /bin/ls
上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * Command
每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * Command
每一小时重启smb
* */1 * * * /etc/init.d/smb restart
注意环境变量问题
脚本中涉及文件路径时写绝对路径
在crontab的命令列中,% 有特殊的作用,它会被认为是换行符,而第一个百分号后面的内容会被当作标准输入传给百分号之前的命令。
利用这个特性,可以这样写命令
* * * * * cat - % test crontab percent-signs
以上crontab在被执行的时候,由于百分号的特殊作用,实际上效果是等同于:
echo ' test crontab percent-signs' | cat -
用\%
代替%
即可解决