原文地址:http://chenxiaoqiong.com/articles/crontab/
作为菜鸟的我一直以为linux定时任务是一个很复杂的东西,近期自己要写了才知道原来这么简单。总结如下:
crontab命令
crontab -l //列出某个用户cron服务的详细内容
crontab -e //编辑某个用户的cron服务,相当于进入vi编辑模式
crontab -r //删除某个用户的cron服务
crontab -u //设定某个用户的cron服务,一般root用户在执行这个 命令的时候需要此参数。比如说root查看自己的cron设置:crontab -u root -l
描述格式
格式说明
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
除了上述数字还有几个个特殊的符号就是”*”、”/”和”-“、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”/5”表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。
例子
每天早上6点执行一次/root/scrīpts/backup.sh这个命令
0 6 * * * /root/scrīpts/backup.sh
每5分钟执行一次/root/scrīpts/backup.sh这个命令
*/5 * * * * /root/scrīpts/backup.sh
每两个小时
0 */2 * * * command line
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line
cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/、/var/spool/cron文件下的变更。如果发现变化,就会下载到存储器中。因此,即使crontab文件改变了,程序也不需要重新启动。
权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
如果两个文件都不存在,则只有root用户才能使用crontab命令。
如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
服务的启动
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
另外如果只需要任务定时执行一次,可以用at实现。我发现这篇文章就写的不错,可以参考http://www.cnblogs.com/liyanbin/p/6290096.html