定时任务:
crontab -e编辑定时任务的配置文件,写入到新的的定时任务,提供语法检查功能,要写入绝对路径linux压缩命令,把标准输出和错误输出linux打包命令,写入到/dev/null
crontab -l 查看一下自己写的定时任务是否有问题。
语法:分 时 日 月 周
* * * * * 命令的绝对路径
案列1:
#每分钟执行命令
* * * * *
#每天的凌晨3点半,和12点半执行一个脚本
30 3 ,12 * * *
#每隔6小时,相当于6、12、18、24点的半点时刻,执行脚本
30 */6 * * *
#每天晚上9点30重启nginx
30 21 * * * /usr/bin/systemctl restart nginx
#每月的1、10号凌晨4点45执行脚本
45 4 1,10 * *
#每周六、周日的凌晨1点10分执行脚本
10 1 * * 6,7
#每天的18点到23点之间,每隔30分钟执行一次
*/30 18-23 * * *
#每隔1小时执行一次
0 * * * *
#4月份的每周一到周三的上午11点执行脚本
00 11 * * 4 1-3
案例2:
#每天早上上午7点到上午11点,每2小时运行cmd命令
0 7-11/2 * * *
#每天6点执行
0 6 * * *
#每周六凌晨4点执行
0 4 * * 6
#每周六凌晨4点05执行
05 04 * *6
#每天的8:40执行
40 8 * * *
#在每天的10:31开始,没隔2小时重复一次
31 10/2 * * *
#每周一到周五的14:00
0 14 * * 1-5
#每周每周⼀到周五8:00,每周⼀到周五9:00
0 8,9 * * 1-5
#每天10:00、16:00执⾏
0 10,16 * * *

案例3:生成环境用户配置定时任务流程
需求:每分钟向./tmp/lianxi/xiaoze.txt文件中写入一句话“小泽带你学Linux”
第一步:新手需要注意确保定时任务的正确执行,切莫编写了定时任务就不管不问了

第二步:编辑定时任务文件,写入需要定时执行的任务
crontab -e
写入
* * * * * /usr/bin/echo "超哥带你学linux" >> ./tmp/lianxi/xiaoze.txt
保存后
[caoxiaoze@rootcxz ~]$ crontab -e
crontab: installing new crontab
第三步:检查定时任务
[caoxiaoze@rootcxz ~]$ crontab -l
* * * * * /usr/bin/echo "小泽带你学Linux" >> ./tmp/lianxi/xiaoze.txt
第四步:可以检测文件内容
[caoxiaoze@rootcxz ~]$ cat ./tmp/lianxi/xiaoze.txt
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
#或者
[caoxiaoze@rootcxz ~]$ tail -f ./tmp/lianxi/xiaoze.txt
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
小泽带你学Linux
案列4:每5分钟让服务器时间同步
crontab -e
写入
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null
保存退出
案列5:每晚0点整,把站点目录/var/www/html下的内容打包备份到/data目录下
注意:tar命令不建议使用绝对路径打包red hat linux,特殊情况可以使用-p参数
1. 检查文件夹是否存在,不存在则创建
[root@pylinux ~]# ls -d /var/www/html /data
ls: 无法访问/var/www/html: 没有那个文件或目录
ls: 无法访问/data: 没有那个文件或目录
2. 创建文件夹
[root@pylinux ~]# mkdir -p /var/www/html /data
[root@pylinux ~]# ls -d /var/www/html /data
/data /var/www/html
3. 创建测试文件
[root@pylinux ~]# touch /var/www/html/chaoge{1..10}.txt
[root@pylinux ~]# ls /var/www/html/
chaoge10.txt chaoge1.txt chaoge2.txt chaoge3.txt chaoge4.txt chaoge5.txt chaoge6.txt chaoge7.txt chaoge8.txt chaoge9.txt
4. 打包压缩命令
[root@pylinux www]# tar -zcvf /data/bak_$(date +%F).tar.gz /var/www/html


编写shell脚本,丢给定时任务定期执行
[root@pylinux scripts]# cat bak.sh
#!/bin/bash
cd /var/www &&
/bin/tar -zcf /data/bak_$(date +%F).tar.gz ./html
创建定期任务
crontab -e
写入
00 00 * * * /bin/sh /server/scripts/bak.sh > /dev/null 2>&1
解释
>/dev/null 2>&1 代表把所有输出信息重定向到黑洞文件
> 是重定向符号
/dev/null 是黑洞文件
2>&1 代表让标准错误和标准输出一样
此命令表示将脚本执行的正常或者错误日志都重定向到 /dev/null,也就是什么都不输出、不保留日志。
>/dev/null 2>&1 等价于 1>/dev/null 2>/dev/null 等价于 &> /dev/null
取消定时任务发邮件功能
1. 定时任务的命令
> /dev/null
# 命令的执行正确结果输出到黑洞,标准错误依旧会发送邮件
2. 定时任务的命令
&> /dev/null
# 组合符 &> 正确和错误的输出,都写入黑洞文件,彻底关闭定时任务邮件提醒
3. 标准写法(最常用)定时任务的命令
>/dev/null 2>&1
# 把标准正确输出、标准错误输出全部重定向到黑洞,屏蔽所有输出,不再发邮件
补充anacron:
如果机器故障关机,定时任务未执行,下次开机也不会执行任务,使用anacron下次开机会扫描定时任务linux打包命令,将未执行的,全部执行。但服务器很少关机重启。所以忽略
