一、原因

写这篇的原因是项目中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的更多相关文章

  1. 定时清除 /var/log/massage 下的信息脚本文件

    定时清除 /var/log/massage 下的信息脚本 #!/bin/sh #Date: 0:07 #Author: Xiaodong #Mail: 990974238@qq.com #Puncti ...

  2. 定时删除日志文件---linux定时清理日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  3. Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

    一.需求背景     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...

  4. Linux定时清理日志脚本

    在应用疯狂打日志的情况下,服务器很容易被塞满磁盘. 先要写一个shell脚本,脚本如下. #!/bin/bash #----------------使用规范---------------- #1.该文 ...

  5. Linux——定时清空日志内容和删除日志文件

    前言 最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题.老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸. 1.shell脚 ...

  6. linux 定期清除日志

    clearLog.sh #!/bin/sh find /usr/local/apache/logs -mtime + 30 -name "*.log" -exec rm {} \; ...

  7. linux定时清理日志

    服务器硬盘较小,需要自动删除日志 1.编写find命令 首先编写需要删除文件的sh #删除50天前的日志 find */logs -mtime +50 -exec rm -f {} \; #注意目录  ...

  8. linux 系统清除日志 .sh

    clear.sh #!/bin/sh cat /dev/null > /var/log/syslogcat /dev/null > /var/adm/sylogcat /dev/null ...

  9. Linux 定时清理日志脚本

    在远程运行节点创建一个cleanlog.sh 脚本文件 vin clenalog.sh 插入以下内容 #!/bin/env bash start=$(date +%y-%m-%d-%H%M%m) Fi ...

随机推荐

  1. ahjesus wp-autopost破解版,亲测可用

    在funtion.php里 把fetchUrl 这个函数的判断去掉 直接执行判断为真的结果下面是修改后的函数 function fetchUrl($_var_22){        global $w ...

  2. mysql的日期函数介绍

    仅供参考 DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03 ...

  3. web前端要学哪些?

    本来是学java还有jsp这些东西的,后来毕业了就去找了个前端的工作:一开始就接触 nodejs+express+Angularjs+mongodb这些东西.不知道学了这些东西做前端够不够用.现在也就 ...

  4. mysql使用笔记(网易Mysql实用手册)---1

    1帮助使用 1.1按层次查看帮助 1 当不知道帮助可提供什么时,可通过MySQL内置帮助文档,一层层往下看. 命令: mysql> ? contents ? 等效help,该文档涵盖了数据库操作 ...

  5. l2dct

    http://paste.ubuntu.com/15664711/ diff -crbB ns-allinone-2.35/ns-2.35/queue/red.cc ns-2.35/queue/red ...

  6. Java简单方法批量修改Windows文件夹下的文件名(简单IO使用)

    package test.tttt; import java.io.File; import java.util.ArrayList; import java.util.List; public cl ...

  7. 发布MVCIIS报错未能加载文件或程序

    未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3 ...

  8. Git使用本地仓库之基本操作

    1.Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本 ...

  9. Hadoop HBase概念学习系列之优秀行键设计(十六)

    我们通过行键访问HBase.尽管使用扫描过滤器可以一次性指明大量的键,但是HBase仅仅能够根据行键识别出一行. 优秀的行键设计可以保证良好的HBase性能. 1.行键存在于HBase中的每一个单元格 ...

  10. AOP的具体实践-简化结果返回的处理

    原因: 以前学习Spring的时候着重学习过AOP概念,但是一直也没有用上,唯一碰到过的就是Spring内置的事务管理.现在碰到过一些结果后面的操作适合用到,所以这里就拿出来用一下,并且复习一下落下的 ...