16.1 计划任务at-cron计划任务使用方法
16.2 日志的种类和记录的方式 自定义ssh服务日志类型和存储位置
16.3 实战-日志切割-搭建远程日志收集服务器
16.4 实战-配置公司内网服务器每天定时自动开关机
瘠薄玩意儿 tar 打包目录给位置 或者cd进去
16.1 计划任务at-cron计划任务使用方法
at 一次性 只执行一次
cron 周期循环执行
at计划任务的使用
语法格式:at 时间 ;
服务:atd
开启atd服务:systemctl start atd
systemctl is-enabled atd #查看是否开机启动服务,弹出enabled为开机自启
实战案例
at -l
atq 查看已有计划任务
atrm 输入计划任务编号删除该任务
查看计划中内容 at -c 编号 & tail /var/spool/at/a0000c018bd354
a0000c018bd354 某计划任务文件
Ctrl+s linux中为锁定屏幕
at计划特殊写法
at 20:00 2019-4-20 4月20号晚上8点执行 ,可写为8:00pm
at now 立即执行 (没啥卵用)
at now +15min 在15分钟后执行 &+3hour 3小时后
at 8:00 tomorrow 明天早上8点执行
at 7:00 pm +5 days 在5天后的下午7点执行
at 19:00 <a.txt 导入文件中的命令操作
crontab定时任务的使用
crond命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业
crond:是一个daemon程序
crontab:是用来管理crontab file的一个工具
crontab file 是用来定义定时任务条目的文件,在Linux中,这个文件有存在几个地方
1、系统执行的工作 updatedb whatis /etc/cron.d/*
2、用户自己定义的任务文件 /var/spool/cron/root &username
linux任务调度的工作主要分为以下两类:
系统执行的工作:系统周期性所要执行的工作,如更新whatis数据库 updatedb数据库,日志定期切割,收集系统状态信息 /tmp 定时清理
cron命令参数介绍
crontab -u hr #指定hr用户的cron服务
crontab -l #列出当前用户下的cron服务的详细内容
crontab -u mk -l #列出指定用户mk下的cron服务的详细内容
crontab -r #删除cron服务
crontab -e #编辑cron服务
例:
crontab -u root -l #root查看自己的cron计划任务
crontab -u san -r #root想删除san的cron计划任务
cron -e 编辑时的语法
*/分 */时 */日 */月 */周 command/需要执行的命令
取值范围分别为:0-59、0-23、1-31、1-12、0-7
1 | 2 | 3 |
---|---|---|
* | 代表取值范围内的数字 | (任意/每) |
/ | 指定时间的间隔频率 | */10 0-23/2 |
- | 代表从某个数字到某个数字 | 8-1 |
, | 分开几个离散的数字 | 6,10-13,20 |
创建计划任务
例1:每天凌晨2点1分开始备份数据
1 2 * * * tar zcf /opt/grub2,tar.gz /boot/grub2
crontab -l #查看
例2:黑客——已非root用户添加计划任务。最好使用已经存在系统用户添加。这里使用bin用户来添加
crontab -u bin -e
1 * * * * echo “test” >>/tmp/bin.txt
排查:
crontab -u bin -l
如何排查所有用户的计划任务
注:所有用户的计划任务,都会在/var/spool/cron/下产生对应的文件
[root@localhost ~]# ll /var/spool/cron/
总用量 8
-rw-------. 1 kylin kylin 16 4月 18 16:54 kylin
-rw-------. 1 root root 30 4月 18 16:51 root
[root@localhost ~]#
所以后期可以使用这一招排查,黑客是否在你的机器中安装了定时任务
系统级别的计划任务
[root@localhost ~]# ll /etc/crontab
-rw-r–r--. 1 root root 451 6月 10 2014 /etc/crontab
这个是系统任务调度的配置文件
SHELL=/bin/bash #指定操作系统使用哪个 shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin #系统执行命令的搜索路径
MAILTO=root #将执行任务的信息通过邮件发送给 xx 用户
#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
也可以直接在/etc/crontab 中添加计划任务
使用 crontab 命令的注意事项:
环境变量的问题
清理你的邮件日志 ,比如使用重定吐 >/dev/null 2>&1
[root@localhost ~]# ls /etc/cron
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ crontab cron.weekly/
注:cron.d/ #是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。
cron.deny #控制用户是否能做计划任务的文件
cron.monthly/ #每月执行的脚本;
cron.weekly/ #每周执行的脚本
cron.daily/ #k每天执行的脚本
cron.hourly/ #每小时执行的脚本
crontab #主配置文件 也可添加任务
常见的计划任务写法和案例
常见写法:
每天晚上21:00重启Apache
0 21 * * * /etc/init.d/httpd restart systemctl restart httpd
每月1、10、22日的4:45重启apache
45 4 1,10,22 * * /etc/init.d/httpd restart
每月1到10日的4:45重启apache
45 4 1-10 * * /etc/init.d/httpd restart
每隔两天的上午8点到11点的第3和第15分钟重启Apache
1,15 8-11 */2 * /etc/init.d/httpd restart
晚上11点到早上7点之间,每隔1小时重启Apache
- 23-7/1 * * * /etc/init.d/httpd restart
周一到周五每天晚上21:15寄一封信给root@panda;
12 21 * * 1-5 mail -s “hi” root@panda < /etc/fstab
crontab不支持每秒。 每 10 秒执行一次脚本,怎么写?
在脚本的死循环中,添加命令 sleep 2 ,执行 30 次自劢退出,然后添加,计划任务:
*/1 * * * * /back.sh
案例要求:
每天 2:00 备份/etc/目录到/tmp/backup 下面
将备份命令写入一个脚本中
每天备份文件名要求格式: 2017-08-19_etc.tar.gz
在执行计划任务时,不要输出任务信息
存放备份内容的目录要求只保留三天的数据
mkdir /tmp/backup
vim /opt/etcbk.sh
#!/bin/bash
find /opt -name “*.tar.xz” -mtime +3 -exec rm -f {} ;
cd /tmp/backup
tar Jcf $(date +%F)_etc.tar.xz /etc &>/dev/null