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

2.2 KiB
Raw Blame History

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-590-231-311-120-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 每月