phper-linux-gitbook/crontab.md
2018-05-03 23:20:24 +08:00

73 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### crontab 命令
Linux下的任务调度分为两类系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在 `/etc` 目录下有一个 `crontab` 文件,这个就是系统任务调度的配置文件。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
`/etc/cron.deny` 该文件中所列用户不允许使用 crontab 命令,默认不存在
`/etc/cron.allow` 该文件中所列用户允许使用 `crontab` 命令,默认不存在
`/var/spool/cron/` 所有用户 `crontab` 文件存放的目录,以用户名命名
```
crontab -l #显示定时任务列表
crontab -e #编辑定时任务
crontab -r #删除定时任务
sudo crontab -u root -e #指定 root 用户编辑,每个用户对应有一个 crontab 文件
```
crontab 文件内容说明
```
Minute Hour Day Month Week command
| | | | | |
| | | | | |
分 时 天 月 周 命令或文件或url
取值范围
0-59
0-23
1-31
1-12
0-6
* 代表所有可能的值,
/ 代表每,
- 代表从某个数字到某个数字,
, 分开几个指定的数字
第一次执行 crontab -e 会出现一些内容,选择编辑器,建议选 3vim 编辑器
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
```
例子
```
*/1 * * * * ~/http.sh #每1分钟执行一次 ~/http.sh shell 文件
01 * 2 * * ~/http.sh #每月2号第一分钟执行一次 ~/http.sh shell 文件
* 2,3 * * * ~/http.sh #每天凌晨2点3点 执行一次 ~/http.sh shell 文件
10 * * * 1-5 root /usr/local/bin/php /home/ubuntu/demo.php #周一到周五第10分钟以 root 用户 php 命令去执行一次 demo.php 文件
01 * * * * root run-parts /etc/cron.hourly #每小时第1分钟执行 /etc/cron.hourly 目录内的脚本
```
run-parts 参数指定的目录必须是以下任意一个,其他位置的目录无法执行
- /etc/cron.hourly 小时
- /etc/cron.daily 每天
- /etc/cron.weekly 每周
- /etc/cron.monthly 每月