linux 定时任务

由于项目日志每天比较多

想写个脚本,自动压缩日志并删除源文件 只保留压缩文件 减轻服务器内存压力

[root@cvm3513 ~]# vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
​
# For details see man 4 crontabs
​
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
备注:
1) *  表示任意的(分、时、日、月、周)时间都执行
2) -  表示一个时间范围段, 如5-7点
3) ,  表示分隔时段, 如6,0,4表示周六、日、四
4) /1 表示每隔n单位时间, 如*/10 每10分钟

crontab命令选项
-e                     #编辑定时任务
-l                      #查看定时任务
-r                      #删除定时任务
-u                     #指定其他用户

[root@cvm3513 ~]# crontab -l
*/1 * * * * /root/geo_timing.sh
 
[root@cvm3513 ~]# crontab -e

*/1 * * * * /root/geo_timing.sh                          
Type  :quit<Enter>  to exit Vim


[root@cvm3513 ~]# crontab -r   过于恐怖 建议删除任务时使用crontab -e 删除掉不要的那个

1.创建 编写 测试脚本 

[root@cvm3513 ~]# touch geo_timing.sh
[root@cvm3513 ~]# vi geo_timing.sh 

echo "hello word" >> /root/test.txt

~                                                                                                                                                         
-- INSERT --


#给脚本授权
[root@cvm3513 ~]# chmod +x geo_timing.sh   
[root@cvm3513 ~]# ls
220311_geo_log.tar  anaconda-ks.cfg  geo_timing.sh  logs

2.先命令执行

[root@cvm3513 ~]# sh geo_timing.sh 
[root@cvm3513 ~]# cat test.txt 
hello word
[root@cvm3513 ~]# 

3.编写压缩命令和删除命令  命令从上往下执行 先保存 在删除原文件

[root@cvm3513 ~]# vi geo_timing.sh 

#echo "hello word" >> /root/test.txt

#压缩文件前面加上日期   压缩/root/logs 下面所有文件
tar czvf $(date +"%y%m%d")_geo_log.tar /root/logs   

#删除 /root/logs 下面所有文件
rm -rf /root/logs/*

~                                                                                                                                                                            
-- INSERT --

4.命令测试  测试完成删除压缩包

[root@cvm3513 /]# cd root/
[root@cvm3513 ~]# ls
anaconda-ks.cfg  geo_timing.sh  logs  test.txt
[root@cvm3513 ~]# cd logs
[root@cvm3513 logs]# ls
tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 logs]# cd ../

#执行脚本
[root@cvm3513 ~]# sh geo_timing.sh 
tar: 从成员名中删除开头的“/”
/root/logs/
/root/logs/tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 ~]# ls
220311_geo_log.tar  anaconda-ks.cfg  geo_timing.sh  logs  test.txt
[root@cvm3513 ~]# cd logs/
[root@cvm3513 logs]# ls
[root@cvm3513 logs]# cd ../
[root@cvm3513 ~]# ls
220311_geo_log.tar  anaconda-ks.cfg  geo_timing.sh  logs  test.txt

#解压
[root@cvm3513 ~]# tar xzvf 220311_geo_log.tar 
root/logs/
root/logs/tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 ~]# ls
220311_geo_log.tar  anaconda-ks.cfg  geo_timing.sh  logs  root  test.txt

#查看解压文件
[root@cvm3513 ~]# cd root/logs/
[root@cvm3513 logs]# ls
tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 logs]# 

5.编写定时任务  我这里测试每隔一分钟执行一次   实际按照表达式去操作

[root@cvm3513 root]# crontab  -e

*/1 * * * * /root/geo_timing.sh                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
~                                                                                                                                                                                                 
-- INSERT --


[root@cvm3513 root]# crontab  -e
crontab: installing new crontab

[root@cvm3513 root]# crontab  -l
*/1 * * * * /root/geo_timing.sh 

[root@cvm3513 root]# 

[root@cvm3513 root]# ls
您在 /var/spool/mail/root 中有新邮件
[root@cvm3513 root]# cd ../

#已经生成新的压缩文件  logs 原文件已被删除
[root@cvm3513 ~]# ls
220311_geo_log.tar  anaconda-ks.cfg  geo_timing.sh  logs  test.txt
[root@cvm3513 ~]# cd logs
[root@cvm3513 logs]# ls
[root@cvm3513 logs]#

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值