linux命令之crontab

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34355232/article/details/82495054

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

1.crontab语法

crontab -e:编辑该用户的计时器设置;
crontab -l:列出该用户的计时器设置;
crontab -r:删除该用户的计时器设置;
crontab -u<用户名称>:指定要设定计时器的用户名称。

2.crontab文件格式

minute   hour   day   month   week   command
# For details see man 4 crontabs
# Example of job definition:
.---------------------------------- minute (0 - 59) 表示分钟
|  .------------------------------- hour (0 - 23)   表示小时
|  |  .---------------------------- day of month (1 - 31)   表示日期
|  |  |  .------------------------- month (1 - 12) OR jan,feb,mar,apr ... 表示月份
|  |  |  |  .---------------------- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  表示星期(07 表示星期天)
|  |  |  |  |  .------------------- username  以哪个用户来执行 
|  |  |  |  |  |            .------ command  要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
|  |  |  |  |  |            |
*  *  *  *  * user-name  command to be executed

/etc/crontab文件包括下面几行

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/

# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

3.实例

* * * * * command#每1分钟执行一次command
3,15 * * * * command#每小时的第3和第15分钟执行
3,15 8-11 * * * command#在上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command#每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command#每个星期一的上午8点到11点的第3和第15分钟执行
45 4 1,10,22 * * /etc/init.d/smb restart#每月1、10、22日的4 : 45重启smb 

4.小结

  • *表示任何时候都匹配
  • “a,b,c” 表示a 或者 b 或者c 执行命令
  • “a-b” 表示a到b 之间 执行命令
  • “*/a” 表示每 a分钟(小时等) 执行一次
  • crontab 不能编辑系统级的 任务
    crontab的最小执行时间是分钟,如果我们需要每隔20秒运行一次呢?如何实现?
    我们可以把20秒这个时间写入到一个文件中例如: /tmp/cron.txt 文件
*/1 * * * * data >> /tmp/cron.txt
*/1 * * * * sleep 30s;data >> /tmp/cron.txt

猜你喜欢

转载自blog.csdn.net/qq_34355232/article/details/82495054