linux计划任务
crond和crontab的概念
crond是后台守护进程的名称(d代表daemon),用来实际执行脚本,它在系统中一直是运行状态。
systemctl status crond 可以查看运行状态
crontab是一个工具,用来列出cron中当前运行的作业、向cron中添加作业、编辑作业、删除作业。它并不是一直在后台运行的,是一个短暂的命令行工具,执行完就结束了。
crond和crontab组合起来提供cron服务。
服务命令:systemctl start/status/restart/stop crond
配置文件
/etc/crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 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 # | | | | | # * * * * * user-name command to be executed
名称 | 必须 | 取值范围 | 可设置的特殊字符 |
---|---|---|---|
分 | 是 | 0-59 | ,-*/ |
时 | 是 | 0-23 | ,-*/ |
日(月) | 是 | 1-31 | ,-*?/LW |
月 | 是 | 1-12 或者 jan-dec | ,-*/ |
日(周) | 是 | 0-7(0和7都是星期天) 或者 sun-sat |
,-*?/L# |
年 | 否 | 留空,1970-2099 | ,-*/ |
几个特殊字符的含义:
字符 | 含义 |
---|---|
* | 全部。意思是在该时间的任意点都应当执行 |
? | 不指定,任意。仅用于 日(月)和日(周)。0 0 5 * ? 代表每个月的第5天零点,不论星期几。 0 0 ? * 1 代表每周一,不论是当月的哪天。 |
, | 多个值的分隔符,例如1,5,10 |
- | 代表连续值,例如1-20 |
/ | 步长。例如 5/15,代表从5开始,以15为步长。因此,当5/15位于分钟的位置时,表示小时内的第5、20、35和50分钟。 |
L | 最后一天。可以是每月最后一天或者每周最后一天。如果用在 天(周)字段,并且前面加数字,则表示最后一个周N。例如5L,表示最后一个周五(5表示周五,L表示最后)。 |
W | 工作日,指周一到周五的任意一天 |
# | 表示第几个的意思,例如 6#3,表示当月第3个星期六(6表示周六,3表示第3个) |
编辑定时任务
增加:
方案1:vi /etc/crontab
* * * * * 用户 命令
在末行新增行添加:
eg:* * * * * root "ls /home" #每分钟执行ls
20 * * * * root "ls /home" #每小时的20分的时候执行ls
*/20 * * * * root "ls /home" #每20分钟执行ls
0/20 * * * * root "ls /home" #每小时的0分开始每20分钟执行一次
方案2:crontab -e 为当前用户创建计划任务
查看: crontab -l
删除: crontab -r
日志路径:/var/log/cron*
自己编写的作业输出日志可以:
* * * * * root "ls /home" >>/var/log/ls.log 2>&1 #将标准输出 写进日志
本文来自博客园,作者:zk01,转载请注明原文链接:https://www.cnblogs.com/zhangxiaokui/p/12700160.html