计划任务
温馨提示:可以把命令关键字,作为名字方便熟练命令
1、 以自己的名字创建一个普通用户,密码是:123.com。并以这个用户制定一个at计划: 要求在2020-09-15号删除/tmp/time.txt文件。
1)创建用户psef 2)创建测试文件 3)编辑计划任务配置文件 先查命令的绝对路径-编辑-Ctrl D 提交任务
注意:若果不报错,但是psef用户无法达到自动删除文件的效果,可能是权限问题。在/etc/下创建at.allow文件,输入此用户名,即可解决
4)验证,用root用户更改时间到指定日期,查看此文件,找不到,成功
设置系统时间 查看文件
2、 root身份,制定一个计划任务: 2021-09-12号开始到2021-09-15号 ,每隔5分钟发送一次本机的/var/log/message文件到/tmp目录下,并且message文件要加上具体时间。
1)编辑shell脚本
tar -zcP -f /tmp/log_$(date +%Y-%m-%d)''$(date +%H:%M:%S).tar.gz /var/log/messages
''之间有空格
2)编辑计划任务配置文件 3)验证,到预定时间会查看到此文件,注意:解压此文件带的是整个绝对路径 解压(/var/log/messages而不是messages) 3、设置本主机拒绝所有普通用户执行crontab周期性任务,仅允许以自己名字命名的用户执行at一次性任务。
更改配置文件:
验证: 其他用户,无权限。 使用允许权限用户psef登录,可以执行:
4、 从现在开始,/root用户每隔2个小时,打印一次时间信息到/tmp/time.txt文件中,怎样使第一题中的任务能成功执行。 1)编辑shell脚本
#!/bin/bash
echo " $(date +%Y-%m-%d)''$(date +%H:%M:%S) " >> /tmp/time.txt
2)创建计划任务 3)验证,调整系统时间到接近2小时候
5、从base01上,每月31号晚上3点钟,发送本主机的日志文件/var/log/messages到base02主机的/tmp/目录下,且要加上具体时间。必须先保证两个主机互通
设置免密登录
1)创建免密码登录用户
base02配置:
[root@localhost log]# vim /etc/ssh/sshd_config
2)base01配置
生成密钥对: [root@localhost lib]# ssh-keygen -t ecdsa
上传到base02: 3)验证:在base01能登录到base02(192.168.2.2) 创建计划任务
编辑shell脚本,脚本还可以做优化,做条件测试,省略
#!/bin/bash
#create file upload
tar -zcP -f /tmp/log_$(date +%Y-%m-%d)''$(date +%H:%M).tar.gz /var/log/messages
scp /tmp/log_$(date +%Y-%m-%d)''$(date+%H:%M).tar.gz root@192.168.2.2:/tmp
如图:
编辑计划任务配置文件 验证:调整系统时间到10月31日3:00 查看base02主机自动产生备份文件
扩展:
1、编写一个sh脚本 放在/root目录下,脚本名称自定义。备份脚本用tar命令打包并压缩 /etc /var两个目录 添加以下内容:
#!/bin/bash
tar zcf /backup/bak$(date +%Y-%m-%d).tar.gz /etc/ /var/
验证:
2、编写一个脚本 备份/var/log下 所有log结尾的文件,和messages系统日志文件。
3、在每周日晚上2点30分,全量备份整个/etc/ 和/var/log目录 到/backup目录下,要求压缩并打包成当前系统日期年月日,时分秒.tar.gz,平时周一到周六每天晚上12点只备份/var/log目录下所有以log结尾的文件,还有messages系统日志。
编辑脚本: 编辑计划任务配置文件:
4、编写一个脚本 查找当前系统内/var/log目录下,大于100mb的日志文件 使用dd命令造3个文件 1.log 2.log test.log 大于100m 自动定时清理 每个月的每周日晚上0点,清理var/log目录下所有大于100M的log结尾的文件。
1)创建测试文件 2)编辑shell脚本 添加以下内容: 不要忘了,设置执行权 3)创建计划任务 4)验证:调整时间,过几十秒查看 符合条件的文件被自动清理,查不到之前创建的测试文件
|