红联Linux门户
Linux帮助

Linux/Unix crontab命令详解

发布时间:2014-08-11 09:35:37来源:linux网站作者:linux

如果你的用户名出现在/etc/cron.d/cron.allow 或 /usr/lib/cron/cron.allow中, 你就能够执行Crontab命令,
如果系统没cron.allow这个文件, 则如果你的名字没有出现在/usr/lib/cron/cron.deny中,  你就能够执行Crontab命令.
如果没有cron.allow文件,但是有cron.deny文件,但是cron.deny文件为空 则所有人都可以执行crontab命令
如果上面两个文件,系统都没有,则只有root可以执行Crontabl.
这两个文件的格式是: 每行一个用户名

 
除了root一般用户没有默认的crontab 所以一开始要用crontab -e 创建crontab,不创建则crontab -l会报错

所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中
cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。


crontab命令有三种形式的命令行结构:

crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]

crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。


命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;

命令行中-l选项的作用是显示用户crontab文件的内容。

使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。

执行命令crontab -u user -r即可删除当前用户的所有的cron作业。


作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。


第一道第五个字段的整数取值范围及意义是:

0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)


/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。