what is crontab#
crontab used to schedule the execution of programs(每分钟). crontab被daemon进程所管理。 - 用户各自定义的crontab, crontab下的Commands也只会 运行在从属的用户下.
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
linux 任务调度的工作主要分为以下两类:
- 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
- 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
how to use#
语法
1
crontab [ -u user ] { -l | -r | -e }
参数说明:
- e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI
- r : 删除目前的时程表
- l : 列出目前的时程表
时间格式如下:
1
f1 f2 f3 f4 f5 command
1
2
3
4
5
6
7
8* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
more example#
1 | * * * * * /bin/ls # 每一分钟执行一次 /bin/ls |
实际运用#
之前遇到了如下问题: cannot create temp file for here-document: No space left on device 这是由于/var/log/里的log很快就满了, 因此使用crontab定期清理一波日志
1.切换到root#
只有root才有权限清理/var/log/文件
1
su
1
crontab -e
1
2* 10 * * * echo "" > /var/log/messages
* 10 * * * echo "" > /var/log/syslog1
2
3# crontab -l
* 10 * * * echo "" > /var/log/messages
* 10 * * * echo "" > /var/log/syslog