32.Linux 定时计划任务

目录

1.at 命令 

2.crontab 命令

3.系统级别的计划任务 

4.实战-常见的计划任务写法和案例 

5.at 和 cron 黑白名单问题

计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据

计划任务的安排方式分两种:

一种是定时性的,也就是例行。就是每隔一定癿周期就要重复来做这个事情

一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务

at 和 crontab 命令:

at:它是一个可以处理仅执行一次就结束的指令

crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去

1.at 命令 

语法格式: at 时间          服务:atd (at是命令,d是进程)

[root@localhost ~]# systemctl start atd

[root@localhost ~]# systemctl status atd #查看atd服务是否启动。默认启动

[root@localhost ~]# systemctl is-enabled atd #查看是否开机启动,(enabled)

在 Centos6 查看开机启动服务:

[root@localhost ~]# chkconfig --list | grep atd 

1.1实战-使用 at 创建计划任务 

第一步:date命令查看一下Linux中的当前时间。(和windows可能不一致)

第二步:输入命令+时间:[root@localhost ~]# at 20:46    

第三步: 输入要执行的任务

at> mkdir /xxhf

at> touch /xxhf/hf01

at> <EOT>                     #结束:ctrl+d

第四步:查看[root@localhost ~]# at -l   #查看计划任务

[root@localhost ~]# atq     #查看计划任务

第五步:检查 at 计划任务运行结果

[root@localhost ~]# ls /xxhf/hf01

查看计划任务文件及内容

第一步:[root@localhost ~]# at -l  #先查看任务编号

第二步:[root@localhost ~]# at -c 5   #通过编号查看计划任务内容

[root@localhost ~]# ls /var/spool/at/ #查看计划任务文件

a00003018452cb   a0000501845084   spool

第二步:[root@localhost ~]# tail -5 /var/spool/at/a0000501845084

#查看执行任务文件内的具体内容

at 计划任务的特殊写法

[root@ localhost ~]# at 20:00 2018-10-1   #某天

[root@ localhost ~]# at now +10min        #在 10 分钟后执行

[root@ localhost ~]# at 17:00 tomorrow    #明天下午 5 点执行

[root@localhost ~]# at 6:00 pm +3 days     #在 3 天以后的下午 6 点执行

[root@localhost ~]# at 23:00 < a.txt      #输入重定向,把文件a.txt内的任务输入到at命令内

删除 at 计划任务

语法: atrm 任务编号

第一步:[root@localhost ~]# at -l #查看到任务编号

3  Tue May 22 08:43:00 2018 a root

5  Mon May 21 23:00:00 2018 a root

第二步:[root@localhost ~]# atrm 5   #根据编号来删除

第三步:[root@localhost ~]# at -l     #查看确认

3  Tue May 22 08:43:00 2018 a root

2.crontab 命令

 启动 crond 服务

[root@localhost ~]# systemctl start crond

[root@localhost ~]# systemctl enable crond

cron 命令参数介绍:

crontab 的参数:

crontab -u user1      #指定 user1 用户的cron 服务

crontab -l            #列出当前用户下的 cron 服务的详细内容

crontab -u user1 -l   #列出指定用户 user1 下的 cron 服务的详细内容

crontab -r            #删除 cron 服务

crontab -e            #编辑 cron 服务

例如:

crontab -u root -l     #root 查看自己的 cron 计划任务

crontab -u user1 -r      #root 想删除user1 的 cron 计划任务

cron -e 编辑时的用法

 *(分) *(时) *(日) *(月) *(周)  需要执行的命令

2.1创建计划任务

例 1:每天凌晨 2 点 1 分开始备份数据

[root@localhost spool]# crontab -e   #添加计划任务

1 2 * * * tar zcvf /opt/grub2.tar.gz /boot/grub2

[root@localhost ~]# crontab -l       #查看

例 2:以非 root 用户添加计划任务。这里使用 user1 用户来添加

[root@localhost ~]# crontab -u user1 -e

*/1 * * * * echo "aaaaaaa" >> /tmp/user1.txt

排查:

[root@localhost ~]# crontab -u user1 -l

*/1 * * * * echo "aaaaaaa" >> /tmp/user1.txt

2.2如何排查所有用户的计划任务? 

注:所有用户的计划任务,都会在/var/spool/cron/下产生对应的文件

[root@localhost ~]# ll /var/spool/cron/

-rw------- 1 root root 42 Nov 12 10:11 bin

-rw------- 1 root root 19 Nov 12 10:06 root

3.系统级别的计划任务: 

[root@localhost etc]# ll /etc/crontab

#这个是系统任务调度癿配置文件

可以直接在/etc/crontab 中添加计划任务 :

[root@localhost etc]# vim /etc/crontab

定时周期:

[root@localhost bin]# ls /etc/cron

cron.d/ cron.deny cron.monthly/ cron.weekly/

cron.daily/ cron.hourly/ crontab

注:  

cron.d/             #是系统自动定期需要做的任务。

cron.deny           #控制用户是否能做计划任务的文件;

cron.monthly        #每月执行的脚本;

cron.weekly/        #每周执行的脚本;

cron.daily/         #每天执行的脚本;

cron.hourly/        #每小时执行的脚本;

crontab             #主配置文件 也可添加任务;

4.实战-常见的计划任务写法和案例 

常见写法:

1.每天晚上 21:00 重启 apache

0 21 * * * /etc/init.d/httpd restart

2.每月 1、10、22 日的 4 : 45 重启 apache。

45 4 1,10,22 * * /etc/init.d/httpd restart

3.每月 1 到 10 日的 4 : 45 重启 apache。

45 4 1-10 * * /etc/init.d/httpd restart

4每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行 apach

3,15 8-11 */2 * * /etc/init.d/httpd restart

5.晚上 11 点到早上 7 点之间,每隔一小时重启 apach

0 23-7/1 * * * /etc/init.d/apach restart

6.周一到周五每天晚上 21:15 寄一封信给 root@panda:

15 21 * * 1-5 mail -s "hi" root@panda < /etc/fstab

5.at 和 cron 黑白名单问题: 

/etc/at.deny   #at 黑名单,默认存在。

/etc/cron.deny #cron 黑名单,默认存在。

/etc/at.allow  #at 白名单,默认丌存在。

/etc/cron.allow #cron 白名单,默认丌存在。

黑白名单之间哪个优先级更高?

    白名单优先级更高

如果想把某个用户写入at命令的黑名单内:

先创建at 的黑名单文件:touch /etc/at.deny

然后用vim打开,写入用户名即可

注:要写入多个用户时,一行只能写一个用户名

猜你喜欢

转载自blog.csdn.net/weixin_46659843/article/details/123128426