crontab使用说明
使用规则
使用时记住如下规则即可:
- crontab的每一项工作都会被纪录到 /var/log/cron 这个登录档中,如果要自定义日志可以这样:
0 6 * * * //root/script/ss.sh >> /root/for_crontab/mylog.log 2>&1
#后面将输出的内容重定向到日志文件中是为了看定时任务是否执行
- sh /var/www/html/aaa.sh >> /var/www/html/crontab.log
- ps -ax | grep cron查看是否在用
- crontab会每分钟去读取一次 /etc/crontab 与 /var/spool/cron 里面的数据内容
- crontab [-u username] [-l|-e|-r]
选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑`
如crontab -l -u jp 列出jp用户的所有调度任务
- crontab -e 与 /etc/crontab 修改语法格式不一样,后者多一个 user 指定而crontab -e这种所有用户都可以使用且自动写入/var/spool/cron/usename中
- 周与日月不可同时并存,即
30 12 11 9 5 root echo "just test" <==这是错误的写法
- 修改完 /etc/crontab 之后,可能需要重新启动命令如下:
/etc/init.d/crond restart 或
service crond restart
- 权限控制:
- /etc/cron.allow:将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab;
- /etc/cron.deny:将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab 。
- /etc/cron.allow 比 /etc/cron.deny 要优先, 而判断上面,这两个文件只选择一个来限制而已,建议你只要保留一个即可,系统默认是保留 /etc/cron.deny ,一个帐号一行!
- crontab的格式讲解
每一行代表一项任务,每行的每个字段代表一项设置,共分六个字段,前五段是时间设定段,第六段是要执行的命令段
minute hour day month week command
每项工作 (每行) 的格式都是具有六个栏位,其中周的数字为 0 或 7 时都代表『星期天』,且周与日月不可同时并存。这六个栏位的意义为:
代表意义 分钟 小时 日期 月份 周 命令 数字范围 0-59 0-23 1-31 1-12 0-7 我是命令
另外, 还有一些辅助的字符,大概有底下这些:
特殊字符 | 代表意义 |
*(星号) | 代表任何时刻都接受的意思!举例来说,0 12 * * * command日、月、周都是 * , 就代表著『不论何月、何日的礼拜几的 12:00 都运行后续命令』的意思! |
,(逗号) | 代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 与 6:00 时,就会是:0 3,6 * * * command时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用! |
-(减号) | 代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作:20 8-12 * * * command仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思! |
/n(斜线) | 那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟进行一次,则:*/5 * * * * command很简单吧!用 * 与 /5 来搭配,也可以写成 0-59/5 ,相同意思! |
备注:
- 系统任务调度:系统周期性所要执行的工作,如:写缓存数据到硬盘、清理日志等。系统任务调度的配置文件 /etc/crontab
- 用户任务调度:用户定期要执行的工作,比如数据库备份、定时邮件提醒等。所有用户定义的crontab文件都保存在/var/spool/cron目录中。文件名与用户名一致。