Linux 定时清除日志 Log
一、原因
写这篇的原因是项目中log没有定时清除,服务器上项目是用脚本启动,log文件只会在启动时生成一次,这时,由于项目在不断运行中,导致log越来越大。如果删除log文件,还得把项目停掉在启动,这样显然是不行的,而如果直接删掉log文件的话,后续的操作不会输出,也没有日志文件生成,这时就只能通过写个脚本定时去清除日志(每日一清)。
二、方法
这时我想的肯定是希望能写一个脚本把这些日志清除掉,但不是删除掉。那么现在需要实现3步:
1.找到项目的log的位置
2.清除log内容
3.定时执行脚本
有了思路,查找了资料后,找到了几个相关的命令:
find . -name 'p.*.log'
.:具体目录下,建议最好写出查询的具体的目录,类似,/var/local/
'p*.log':模糊查询p开头.log结尾的文件
find /var/local/ -name 'p*.log' -type f -print :将符合的文件打印出来:
找到了log文件后这时我们只需要清除就好了:
find -name -exec command:find的常用命令结构中有这样一条,具体的可以自行去百度。
清除文件的命令:
truncate -s 0 aa.txt {} \; : 切记,这里的“;”号不能省略, 意思是将aa.txt的大小变成0M,即把aa.txt的内容清空了。百度truncate的用法。
rm -rf/-r xxx :这个是删除文件或文件夹,不能达到我的要求
结合上面的命令,就有了如下这样一条:
find /var/local/ -name 'p*.log' -type f -print -exec truncate -s 0 {} \; : 将符合这样一个条件的文件查到出来并赋予它0M的大小。
下面我们就可以清除日志的脚本了,如何写就不讲了:
1 #!/bin/bash
2
3 status(){
4 date
5 find /var/local/ -name 'p*.log' -type f -print -exec truncate -s 0 {} \;
6 echo "清空log成功"
7 return
8 }
9
10 case "$1" in
11 status)
12 status;;*)
13 echo "清除失败"
14 esac
四、定时任务
常用命令:
crontab -l :查看定时任务
crontab -e :添加任务
crontab -r :删除任务
cat /etc/crontab :查看crontab文件
现在我们来添加一条任务:
59 23 * * * /var/local/clearlog.sh status >>/var/local/clear.txt :每天23:59执行脚本并输出到clear.txt文件 ,定时任务的写法:*(分) *(时) *(日) *(月) *(周) command
添加好后查看(crontab -l ),会发现有一条任务(为方便测试,这里可自行替换周期,如:*/1 * * * * :每分钟执行一次 ):
这是可能出现clear.txt生成了。但是没有内容,日志也没清除,这个原因可能是你没给这个脚本赋权限:
chmod 755 clearlog.sh
PS:再解决这个问题过程中,碰到了一个问题,那就是在编辑一个文件时,写完后习惯性的CTRL+S,然后窗口就不能编辑了,退也退不了,后来查了,发现:
Ctrl s 暂停该终端 (解决办法:Ctrl q)
Ctrl c 中止当前正在执行的程序。
Ctrl d 相当于exit命令
OK。
Linux 定时清除日志 Log的更多相关文章
- 定时清除 /var/log/massage 下的信息脚本文件
定时清除 /var/log/massage 下的信息脚本 #!/bin/sh #Date: 0:07 #Author: Xiaodong #Mail: 990974238@qq.com #Puncti ...
- 定时删除日志文件---linux定时清理日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法
一.需求背景 因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...
- Linux定时清理日志脚本
在应用疯狂打日志的情况下,服务器很容易被塞满磁盘. 先要写一个shell脚本,脚本如下. #!/bin/bash #----------------使用规范---------------- #1.该文 ...
- Linux——定时清空日志内容和删除日志文件
前言 最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题.老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸. 1.shell脚 ...
- linux 定期清除日志
clearLog.sh #!/bin/sh find /usr/local/apache/logs -mtime + 30 -name "*.log" -exec rm {} \; ...
- linux定时清理日志
服务器硬盘较小,需要自动删除日志 1.编写find命令 首先编写需要删除文件的sh #删除50天前的日志 find */logs -mtime +50 -exec rm -f {} \; #注意目录 ...
- linux 系统清除日志 .sh
clear.sh #!/bin/sh cat /dev/null > /var/log/syslogcat /dev/null > /var/adm/sylogcat /dev/null ...
- Linux 定时清理日志脚本
在远程运行节点创建一个cleanlog.sh 脚本文件 vin clenalog.sh 插入以下内容 #!/bin/env bash start=$(date +%y-%m-%d-%H%M%m) Fi ...
随机推荐
- Docker 网络基础介绍
[编者按]本文作者为 Mesosphere 开发大使 Michael Hausenblas,主要介绍配置 Docker 单主机网络的基本知识.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...
- windows下php使用zerophp
官网地址:http://zeromq.org/ 下载windows版本安装(不过php可以不用安装,直接使用扩展包就可以了) 然后下载php的zmq扩展包:https://pecl.php.net/p ...
- -webkit-min-device-pixel-ratio: 2是什么意思?
DPI(DPR) stands for Dots Per Inch which technically means printer dots per inch. 这个参数实际上量化了屏幕的物理分辨率和 ...
- 转:c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- Azure Document DB Repository 的实现
阅读 需要大约 5 分钟. 前景: Azure Cosmos DB 由 Microsoft 提供,是全球分布式多模型数据库. 通过 Azure Cosmos DB 跨任意数量的 Azure 地理区域 ...
- Linux 系统的主机别名文件
修改主机名文件 # 方式一: 临时生效 hostname 主机名 hostname omc 临时生效 # 方式二: 编辑配置文件[永久生效] vim /etc/sysconfig/network [更 ...
- PHP中抽象方法、抽象类和接口的用法
在类中,没有方法体的方法就是抽象方法. abstract 可见性 function 方法名称(参数1,.....); // 如果没有显示地指定可见性,则默认为public 如: public ...
- Spring+微信小程序 卡券打通
近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...
- 3种web会话管理方式
一.基于server端的session管理 在早期web应用中,通常使用服务端session来管理用户的会话.快速了解服务端session: 1) 服务端session是用户第一次访问应用时,服务器就 ...
- kafka 消费者和生产者测试类
pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...