目录

为什么需要计划任务:

linux里的计划任务:

停止crond服务:

开启crond服务:

重启crond服务:

计划任务的格式:

练习:

添加计划任务:

同一时间可以做多个任务吗?

怎么终止计划任务?

怎么知道计划任务是否执行

笔试题目:

每个用户都有自己的计划任务

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

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

 如何排查你的机器里是否有黑客添加的计划任务? (笔试题)

那么linux系统后台的工作开展需要的计划任务存放在哪里?

anacron 服务

练习:



计划任务:

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

例:闹钟:早上八点叫我起床

游戏服务器资源分析:

 

为什么需要计划任务:

如何使用计划任务 --》 配置计划任务

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

任何脚本都可以配合任务计划来执行

linux里的计划任务:

crond进程:负责linux里执行计划任务的程序,它是一直在运行的

每隔一分钟会检查下是否有任务执行。

使用crontab命令调用crond进程,设置按固定的周期(如每天,每周)重复执行预先计划好的任务。

[root@localhost /]# ps aux | grep crond

root 682 0.0 0.1 126384 1676 ? Ss 13:12 0:00 /usr/sbin/crond -n

root 1635 0.0 0.0 112824 988 pts/0 R+ 14:54 0:00 grep --color=auto crond

停止crond服务:

[root@localhost lianxi]# service crond stop

Redirecting to /bin/systemctl stop crond.service --》 centos8里面真正执行的命令

开启crond服务:

[root@localhost lianxi]# service crond start

Redirecting to /bin/systemctl start crond.service --》 centos8里面真正执行的命令

重启crond服务:

[root@localhost lianxi]# service crond restart

Redirecting to /bin/systemctl restart crond.service --》 centos8里面真正执行的命令

crondtab 是创建计划任务的命令

计划任务的格式:

在 /etc/crontab里面可以查看创建计划任务的格式

-----------------------------------------------------------------------

练习:

1.每个1分钟新建一个文件夹,这个文件里面需要包含当前时间,精确到秒

2.新建的文件夹存放在 /lianxi/sanchuang

需求分析:

1.编写脚本实现新建文件夹,名字里包含当前的时间,精确到秒

2.脚本名字creat_dir.sh 存放在 /lianxi/sanchuang

3.指定计划任务 实现每一分钟执行上面的creat_dir.sh脚本

[root@localhost lianxi]# cat creat_dir.sh 
#! /bin/bash

nowtime=$(date +%F-%H-%M-%S)
cd /lianxi/sanchuang
mkdir $nowtime

添加计划任务:

[root@localhost lianxi]# crontab -e
*/1 * * * * bash /lianxi/creat_dir.sh    --》每分钟执行一次脚本


效果:
[root@localhost sanchuang]# ls
2022-01-27-20-09-01  2022-01-27-20-12-01  2022-01-27-20-15-01
2022-01-27-20-10-01  2022-01-27-20-13-01  2022-01-27-20-16-02
2022-01-27-20-11-01  2022-01-27-20-14-01  2022-01-27-20-17-01

手机里面可以点多个闹钟,linux里面也可以定制很多计划任务

一行计划任务

同一时间可以做多个任务吗?

可以,一行一个计划任务,但是时间点可以是一样的

也可以都写到一个脚本里面,直接做一个计划任务

建议:最好不要同时做很多事情,会在一个时间点消耗服务器的cpu,内存,磁盘,带宽等资源,会给服务器制造很大的压力。

怎么终止计划任务?

可以把计划任务直接注释掉,或者直接删除掉

crontab 的日志文件

记录哪些计划任务的生产,执行,修改等操作

/var/log/cron

使用tail -f来监控cron文件的动态

Jan 27 20:41:01 localhost CROND[2388]: (root) CMD (bash /lianxi/creat_dir.sh)
Jan 27 20:41:02 localhost crontab[2392]: (root) LIST (root)
Jan 27 20:41:08 localhost crontab[2393]: (root) BEGIN EDIT (root)
Jan 27 20:41:17 localhost crontab[2393]: (root) REPLACE (root)
Jan 27 20:41:17 localhost crontab[2393]: (root) END EDIT (root)

crontab[2393] 是crond的进程号 pid号

CMD 表示执行命令 command

BEGIN EDIT 开始编辑

REPLACE 修改

END EDIT 结束编辑

怎么知道计划任务是否执行

1.直接去看

2.看日志文件

笔试题目:

考计划任务的格式

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.星期一到星期五的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 * *

每个用户都有自己的计划任务

[root@localhost log]# cd /var/spool/cron/

[root@localhost cron]# ls --》建立计划任务的用户都会有一个文件存储他们的计划任务 --》 linux 里面一切皆文件

root shimengmeng zhaojunjie

查看每个用户的计划任务:

[root@localhost cron]# cat zhaojunjie 
*/1 * * * * mkdir -p ~/$(date +%F-%H-%M-%S).zhaojunjie
[root@localhost cron]# cat root
*/1 * * * * bash /lianxi/creat_dir.sh
[root@localhost cron]# cat shimengmeng 
*/1 * * * * mkdir -p ~/$(date +%F-%H-%M-%S).shimengmeng

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

[root@localhost lianxi]# useradd zhaojunjie
[root@localhost lianxi]# useradd shimengmeng
[root@localhost lianxi]# su - zhaojunjie
[zhaojunjie@localhost ~]$ crontab -e
*/1 * * * *  bash /lianxi/creat_dir.sh

[zhaojunjie@localhost ~]$ exit
登出

[root@localhost lianxi]# su - shimengmeng
上一次登录:四 1月 27 22:05:04 CST 2022pts/1 上
[shimengmeng@localhost ~]$ crontab -e
*/1 * * * * mkdir -p ~/$(date +%F-%H-%M-%S).shimengmeng
[shimengmeng@localhost ~]$ exit
登出
监控查看计划任务日志文件
[root@localhost lianxi]# cd /var/log
[root@localhost log]# tail -f cron
Jan 27 22:34:01 localhost CROND[3874]: (shimengmeng) CMD (mkdir -p ~/$(date +)
Jan 27 22:34:01 localhost CROND[3872]: (zhaojunjie) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:34:01 localhost CROND[3873]: (root) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:35:01 localhost crond[1740]: (shimengmeng) RELOAD (/var/spool/cron/shimengmeng)
Jan 27 22:35:02 localhost CROND[3895]: (shimengmeng) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:35:02 localhost CROND[3896]: (zhaojunjie) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:35:02 localhost CROND[3897]: (root) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:36:01 localhost CROND[3919]: (shimengmeng) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:36:01 localhost CROND[3921]: (zhaojunjie) CMD (bash /lianxi/creat_dir.sh)
Jan 27 22:36:01 localhost CROND[3922]: (root) CMD (bash /lianxi/creat_dir.sh)

可以看到虽然用户已经退出,但是计划任务依旧在执行

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

root用户可以直接在/var/spool/cron 里面编辑用户的计划任务。

默认情况下,只有root用户可以查看别的用户的计划任务,普通用户只可以看自己的计划任务

 如何排查你的机器里是否有黑客添加的计划任务? (笔试题)

 到/var/spool/cron目录下查看是否有可疑的计划任务文件,然后查看root用户本身的计划任务,是否有可疑的脚本执行

防止黑客搭计划任务的顺风车,

计划任务的顺风车:--》linux系统本身也有一些任务需要定时完成的

日志文件的更新:每隔一段时间产生一个新的日志文件

updatedb --》 locate

/var/spool/cron 是存放用户自己的计划任务

那么linux系统后台的工作开展需要的计划任务存放在哪里?

[root@localhost lianxi]# cd /etc/cron.

cron.d/ cron.deny cron.monthly/

cron.daily/ cron.hourly/ cron.weekly/

/etc/下面的这些文件夹里可以存放linux系统的计划任务

cron.daily/ : 每天要执行的计划任务

[root@localhost cron.daily]# ls

logrotate man-db.cron mlocate

黑客有可能将木马程序放到这些linux自己每天自动执行的计划任务里面去。

cron.hourly/ : 存放linux系统每小时需要执行的任务

cron.weekly/: 存放linux系统每周需要执行的计划任务

cron.monthly/ :存放linux系统每月需要执行的计划任务

cron.deny: 存放linux系统拒绝谁执行的计划任务

anacron 服务

弥补cron在系统关机后不能执行计划任务的问题

例如:

23:00要执行一个备份文件

在22:58分机器突然关机了

1:00机器开机

那么anacron服务就会自动的为我们执行在关机期间没有执行的计划任务

不能替代cron

按天,周,月为单位去检查系统未进行的cron任务

/var/spool/anacron

服务名称: /etc/init.d/anacrond

开机时自动运行,然后将未执行的计划任务执行一遍以后,anacron会自动停止

[root@localhost lianxi]# vim /etc/anacrontab

为循环计划任务收拾残局的

anacron

前台:我们看得到的界面

后台:linux的背后执行 --》我们看不到

[root@localhost lianxi]# vim /etc/anacrontab

正常情况下我们打开vim编辑器是在前台运行的

在命令后面接一个&符号就可以让它转到后台

[root@localhost lianxi]# vim zhaojunjie.txt &

[1] 2116

[root@localhost lianxi]# ps aux | grep vim

root 2116 0.1 0.4 147208 4764 pts/0 T 12:34 0:00 vim zhaojunjie.txt

root 2118 0.0 0.0 112824 988 pts/0 R+ 12:34 0:00 grep --color=auto vim

[1]+ 已停止 vim zhaojunjie.txt

练习:

1.每天早上7:50执行脚本/lianxi/mkdir_file.sh 22:50时执行/lianxi/create_file.sh

50 7 * * * bash /lianxi/mkdir_file.sh

50 22 * * * bash /lianxi/create_file.sh

2.每隔5天的12点清空一次/backup_tmp公共目录

0 12 */5 * * rm -rf /backup_tmp

3.每周六的7:30,重新启动ssh服务

30 7 * * 6 service ssh restart

4.每周1,3,5,的17:30执行脚本 /lianxi/abc.sh

30 17 * * 1,3,5, bash /lianxi/abc.sh

5.新建目录/backcup 作为后面需要备份文件的目录

备份/etc/passwd , /var/log ,/boot到backup目录下面打包叫

2022-1-27_pwd_log_boot.tar.xz 文件名里加日期年月日就行

每天的23:00备份一次,使用计划文件执行

保留最近20天的文件,20天以前的文件删除

脚本名字叫 backup_pwd_boot_log.sh

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐