Linux笔记之crontab计划任务格式的写法

一、目标

掌握linux的计划任务,或者叫定时任务crontab的用法

二、平台

centos7.6

三、crontab的格式

  基本格式 :
  *      *   *   *   *  command
  分   时  日  月  周   命令

  第1列表示分钟1~59 每分钟用*或者 */1表示
  第2列表示小时1~23(0表示0点)
  第3列表示日期1~31
  第4列表示月份1~12
  第5列标识号星期0~6(0表示星期天)
  第6列要运行的命令

四、例子

1.每周一到周五的每天下午三点半:30 15 * * 1-5 xCommand

2.每周二四六的早上9点10分:10 9 * * 2,4,6 xCommand

3.每天1点到23点之间每隔两小时:0 1-23/2 * * * xCommand

4.每隔两天:0 0 */3 * * xCommand

5.每天早上8.59开启ssh服务:59 08 * * * systemctl start sshd

6.每天晚上21.37关闭ssh服务:37 21 * * * systemctl stop sshd

五、实例

1.每天早上8.59开启ssh服务:59 08 * * * systemctl start sshd

2.每天晚上21.37关闭ssh服务:37 21 * * * systemctl stop sshd

3.执行命令编辑计划任务(以root用户创建,也可以用其他用户,但必须有执行该任务权限的用户才行)

crontab -e -u root

4.写入计划,#是注释符,wq保存退出

59 08 * * * systemctl start sshd

37 21 * * * systemctl stop sshd

5.查看计划任务

crontab -l -u root

六、实例二

每天22:59备份httpd目录

1.执行命令crontab -e -u root

2.写入计划任务的命令

#3.每天22:59备份httpd目录
59 22 * * * tar -czvf httpd.bak.gz /etc/httpd

3.查看计划任务

root@localhost ~]# crontab -l -u root
#1.每天早上8.59开启ssh服务:59 08 * * * systemctl start sshd
#2.每天晚上21.37关闭ssh服务:37 21 * * * systemctl stop sshd
59 08 * * * systemctl start sshd
37 21 * * * systemctl stop sshd
#3.每天22:59备份httpd目录
59 22 * * * tar -czvf httpd.bak.gz /etc/httpd

七、实例三

每周六早上5.30重启httpd服务

1.执行crontab -e -u root

2.写入任务计划的命令 30 5 * * 6 systemctl restart httpd

3.保存退出wq

八、删除所有计划任务,执行命令crontab -r (直接删除所有计划任务,无法恢复)

九、实例每分钟删除一次备份文件夹的文件,但要保留30天数据
(本脚本没有设定保留部分,生产环境根据实际情况考虑节假日的问题)

9-1.写个删除超过30天文件的脚本

[root@hiibm x]# cat autoDelFile30day.sh 
#!/usr/bin/env bash
# file name: autoDelFile30day.sh

# 强烈建议直接写要删除目录,而不要去将路径复制给变量
find /root/x/dbbak/* -mtime +30 |xargs rm -rf

9-2.给文件赋权限,以及防止脚本被误删除修改。

[root@hiibm x]# chmod a+x autoDelFile30day.sh    //给脚本赋x权限
[root@hiibm x]# chattr +i autoDelFile30day.sh    //保护脚本不被修改

9-3.写计划任务,并编辑脚本每分钟执行一次脚本

[root@hiibm x]# crontab -e
#上面是编辑计划任务,将* * * * * /root/x/autoDelFile2day.sh 写进去。

#下面是查看计划任务,想暂停哪个任务的话,就去编辑crontab -e,然后在具体任务前加注释#,保存即可。
[root@hiibm x]# crontab -l
* * * * * /root/x/autoDelFile2day.sh

 10.写计划任务:指定文件夹内的文件按修改时间排序,只保留最近的7个文件,其余全部删除

下面只写关键命令,脚本就免写了。

# 1.使用awk创造命令去删除东西,awk 'NR>5'选取5行的意思。{print "rm -f "}早命令,注意-f后有个空格,|bash 交给bash去处理awk生成的文本(文本转命令)
[root@hiibm x]# ls -t /root/x/dbbak/*.txt |awk 'NR>5{print "rm -f "$0}' |bash
或者
[root@hiibm ]# ls -t |awk "NR > 7" |xargs rm -rf   //这是ls没带路径,指的是当前目录
或者
[root@hiibm x]# ls -t /root/x/dbbak/*.txt |awk 'NR>7' |xargs rm -vf   //这个带路径,带指定的文件,更完美。


 

kahn 2019年6月23日09:53:55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒哥Kahn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值