Linux里的计划任务简析–crontab

时间:2020-8-21 作者:admin


计划任务

1.什么是计划任务?

按照计划准时准点去执行任务

2.为什么需要计划任务?

可以自动执行,不需要人的干预,解放了人力,提高了效率

3.Linux里的计划任务

crond进程:Linux里执行计划任务的程序,一直保持运行,每隔一分钟就去检查一下系统中的计划任务
使用corntab命令调用crond进程,设置按固定的周期重复执行预先计划好的任务

关于计划任务的一些命令

查看crond进程是否存在:

[root@sanchuang ~]# ps aux|grep crond 	
root        985  0.0  0.1  36300  3464 ?        Ss   3月11   0:01 /usr/sbin/crond -n
root      22074  0.0  0.0  12320   984 pts/0    S+   11:01   0:00 grep --color=auto crond

重启计划任务:

[root@sanchuang ~]# service crond restart          
Redirecting to /bin/systemctl restart crond.service

停止计划任务服务:

[root@sanchuang ~]# service crond stop         
Redirecting to /bin/systemctl stop crond.service

启动计划任务服务:

[root@sanchuang ~]# service crond start                
Redirecting to /bin/systemctl start crond.service

centos8中也可以使用下面的命令启动:效果相同

[root@sanchuang ~]# systemctl stop crond
systemctl stop crond 和 service crond stop           

4.crontab

crontab是创建计划任务的命令

[root@sanchuang ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

crontab的主要用法:

# 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

* 表示任意的时间

crontab的相关命令:

crontab  -e       edit 编辑计划任务
crontab  -l       查看计划任务 list

使用计划任务的过程:(这里以执行backup_log.sh脚本为例)

[root@sanchuang lianxi]# crontab -e
第1步:按i进入计划任务的编辑模式,输入下面的内容
0 23 * * *  bash /lianxi/backup_log.sh
第2步:按ESC,再输入:wq 退出并且保存


[root@sanchuang lianxi]# crontab -l  查看计划任务
0 23 * * *  bash /lianxi/backup_log.sh

如何知道计划任务是否顺利执行?

查看crontab的日志:记录哪些计划任务的创建、执行、修改、查看等操作

[root@sanchuang log]# tail -f /var/log/cron
Mar 16 15:06:35 sanchuang crontab[22483]: (root) LIST (root)  查看
Mar 16 15:06:49 sanchuang crontab[22484]: (root) BEGIN EDIT (root)  编辑
Mar 16 15:07:07 sanchuang crontab[22484]: (root) REPLACE (root) 修改
Mar 16 15:07:07 sanchuang crontab[22484]: (root) END EDIT (root)  结束编辑
Mar 16 15:07:25 sanchuang crontab[22486]: (root) LIST (root)
Mar 16 15:08:01 sanchuang crond[22151]: (root) RELOAD (/var/spool/cron/root)  加载计划任务开始执行
Mar 16 15:08:01 sanchuang CROND[22491]: (root) CMD (bash /lianxi/sanchuang/create_dir.sh)
Mar 16 15:08:01 sanchuang CROND[22489]: (root) CMDOUT (tar: 从成员名中删除开头的“/)  脚本的执行输出效果

其中四个字段分别表示:时间、地点、人物和发生的事情
CROND[22491] CROND 是进程 [22491] 是crond的进程号 pid号
CMD 表示执行命令 command

5.关于计划任务时间设定的几个例子

1.每周1,5,7的23点40分

40 23 * * 1,5,7

2.每个月的1号20:30分

30 20 1 * *

3.每隔5分钟

*/5 * * * *

4.每隔1个小时

0 */1 * * *

5.星期1到星期5的18:00

0 18 * * 1-5

6.每隔3天,每天的13:58执行

58 13 */3 * *

7.每个月的1,10,15,20,25号的2:30

30 2 1,10,15,20,25 * *

6.几个关于计划任务的小问题

1.每个用户都有自己的计划任务吗?

每个用户都有一个自己的存放计划任务的文件件

2.这个用户没有登录是否计划任务也会执行?

是的
crond这个进程会每隔1分钟就到/var/spool/cron文件夹下加载所有的文件,执行里面的计划任务

3.root用户是否可以去管理其他用户的计划任务?

是的
默认情况下,只有root用户可以查看任何人的计划任务,其他用户只能看自己的

4.计划任务里的命令执行不了?

通常是环境变量的问题
建议使用命令的绝对路径

[root@sanchuang chenlin]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

或者修改环境变量,将crontab添加到环境变量中

7.关于计划任务的一些补充

计划任务的顺风车: linux系统本身也有一些任务需要定时完成的
例如:日志文件的轮转–》每隔一段时间产生一个新的日志文件

linux系统的后台工作开展需要的计划任务存放在哪里?
[root@sanchuang lianxi]# cd /etc/cron
cron.d/       cron.daily/   cron.deny     cron.hourly/  cron.monthly/ crontab       cron.weekly/  

cron.d/  存放计划任务的目录
cron.daily/ 存放每天需要执行的任务
cron.hourly/ 存放每小时需要执行的任务
cron.monthly/ 存放每月需要执行的任务
cron.weekly/  存放每周需要执行的任务
cron.deny   存放拒绝谁执行计划任务
anacron服务

anacron服务是cron服务的补充程序,起到查漏补缺的作用
弥补cron在系统关机后不能执行计划任务的问题,等系统开机后将没有执行的计划任务执行一遍
按天、周或月为单位去检查系统未进行的cron任务
/var/spool/anacron
服务名称:/etc/init.d/anacrond
开机时自动运行,然后将未执行的计划任务执行一遍后,anacron 就会自动停止

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。