1、一次性计划任务at
作用: 计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据,所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向
什么叫计划任务 :
计划任务,字面意思理解就是在约定好的时间执行已经计划好的工作。在Linux中我们经常使用cron服务来完成这项工作。比如我们可以使用cron来做一个每天晚上12点备份一个日志文件,这就是个计划任务。
一次性调度执行 at
[root@at-cron ~]# rpm -qa |grep at
at.x86_64 0:3.1.13-24.el7
[root@at-cron ~]# yum -y install at
[root@at-cron ~]# systemctl start atd
[root@at-cron ~]# systemctl enable atd
软件:at + 时间节点
midnight:午夜(00:00)
noon:中午(12:00)
teatime :下午茶4pm(14:00)
23:59 12/31/2018 任务在2018年12月31号23点59分
[root@at-cron ~]# at 23:59 12/31/2020
创建计划任务
at 11:00
rm -rf /tmp/*
ctrl +d ---->正常结束
查看at计划任务个数:[root@at-cron ~]# at -l
1 Tue Oct 27 11:00:00 2020 a root
2 Thu Dec 31 23:59:00 2020 a root
3 Tue Oct 27 00:00:00 2020 a root
查看详细的计划任务:
[root@at-cron ~]# ls /var/spool/at(存放计划任务目录)
a000010197dbf4 a0000201994c9f a000030197d960 spool
[root@at-cron ~]# cat /var/spool/at/a000010197dbf4
可以查看具体的计划任务的内容
删掉计划任务:
[root@at-cron ~]# at -d 1 → 工作号
[root@at-cron ~]# at -r 2 → 工作号
[root@at-cron ~]# atrm 3 → 工作号
删除/var/spool/at/目录下面有相应的一次计划任务文件也可以
可以通过查看日志文件来看是否执行
[root@at-cron ~]# tailf /var/log/messages
[root@at-cron ~]# echo 3 > /proc/sys/vm/drop_caches 清理缓存
===============================================
2、循环性计划任务cron
[root@at-cron ~]# rpm -qa |grep cron
crontabs-1.11-6.20121102git.el7.noarch
这个服务是系统默认自启的,因为系统级任务计划需要,如果没有启动,需要启动crond服务
[root@at-cron ~]# systemctl start crond
[root@at-cron ~]# systemctl enable crond
[root@at-cron ~]# systemctl is-active crond
active
===用户级循环任务=
time+action
* * * * * command
.----------------minute (0 - 59) 第一个代表分钟数
| .--------------hour (0 - 23) 第二个代表小时数
| | .------------day of month (1 - 31) 第三个代表天号
| | | .----------month (1 - 12) 第四个代表月份
| | | | .--------day of week (0 - 6) (Sunday=0 or 7)第五个*代表周几
| | | | |
* * * * * command
* 表示每…
, 取不同的时间点
- 表示范围
*/5 每5分钟(只有每隔几分钟是有意义的)
* * * * * rm -rvf /mnt/* → /1 * * * * rm -rvf /mnt/
创建循环计划任务(循环计划任务可以指定用户,不指定就默认是当前用户)
[root@at-cron ~]# crontab -e
[root@at-cron ~]# crontab -e -u sunlizhen (管理员可以使用 -u username, 去管理其他用户的计划任务)
查看循环计划任务
[root@at-cron ~]# crontab -l (用户级别循环计划任务crontab -l可以直接查看计划内容)
* * * * * rm -rvf /mnt/*
[root@at-cron ~]# crontab -l -u sunlizhen (管理员查看指定用户循环计划任务)
/1 * * * * rm -rvf /mnt/
当然也可以查看循环计划任务的存储文件
[root@at-cron ~]# ls /var/spool/cron/
此目录下以用户为文件名存储用户级别循环计划任务
root sunlizhen
[root@localhost ~]# cat /var/spool/cron/root
删除循环计划任务
[root@localhost ~]# crontab -r (删除当前用户的所有循环计划任务)
[root@localhost ~]# crontab -r -u sunlizhen(管理员删除指定用户所有循环计划任务)
要是不想全部删除,可以直接进行编辑
[root@localhost ~]# crontab -e
[root@localhost ~]# crontab -e -u sunlizhen
计划任务的权限控制
[root@xingdian ~]# cat /etc/cron.deny
如果这个文件存在,凡是写到这个文件里面的账户不允许执行crontab命令
[root@xingdian ~]# cat /etc/cron.allow(这个文件是系统默认不存在的)
如果这个文件存在,没有写到这个文件里面的账户不允许执行crontab命令
如果有allow文件,那不管deny是否存在,都是只允许allow文件里面的用户
3、看门狗查看数据拷贝备份循环计划任务实例
①、vim编辑一个压缩、拷贝的脚本
[root@at-cron ~]# vim /opt/kaobei.sh
#! /bin/bash
tar -czf kakaops`date +%y%m%d%H%M%S`.tar.gz /home/*
mv kakaops`date +%y%m%d%H%M%S`.tar.gz /mnt/
②、指定一个计划任务,每一分钟执行一次拷贝脚本
[root@at-cron ~]# crontab -e
*/1 * * * * bash /mnt/kaobei.sh
③、看门狗查看指定目录中的内容变化
[root@at-cron ~]# watch -n 1 'ls -l /mnt'
-n 指定看门狗更新的秒数 -n 1 看看门狗每隔一秒刷新一次
可以看到巡循环计划任务没一分钟执行一次拷贝脚本
[root@localhost ~]# scp -r /etc 172.16.20.21:/tmp (远程拷贝)
[root@localhost ~]# du -h /home 这个目录的占用大小
date日期显示命令
date显示当前日期和时间方式1
date +%y%m%d%H%M%S
显示方式(年、月、日要小写(年大写的话显示2020),时、分、秒要大写,中间可以任意加分隔符)
date +%D显示方式3
date +%F显示方式4
date -s 9:43设置当前时间为9:43