定时任务:

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 * * *

检查crontab定时任务语法_编辑crontab定时任务_linux打包命令

案例3:生成环境用户配置定时任务流程

需求:每分钟向./tmp/lianxi/xiaoze.txt文件中写入一句话“小泽带你学Linux

第一步:新手需要注意确保定时任务的正确执行,切莫编写了定时任务就不管不问了

编辑crontab定时任务_检查crontab定时任务语法_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

编辑crontab定时任务_检查crontab定时任务语法_linux打包命令

linux打包命令_检查crontab定时任务语法_编辑crontab定时任务

编写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打包命令,将未执行的,全部执行。但服务器很少关机重启。所以忽略

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复