背景

Linux服务器上,程序运行一段时间后,日志可能占满了磁盘,导致磁盘可用空间告警,这时就需要批量清空(非删除)日志文件

错误做法

一般可能会写个批量删除的脚本,定时去运行,形如:

#!/bin/bash
# 查看/opt目录下,所有日志文件及大小
find /opt -name *.log | xargs du -sh
# 删除/opt目录下所有的日志文件
find /opt -name *.log | xargs rm -rf

上面的命令可以完成删除的效果,但会引入一些问题,因为日志文件可能此时正在被程序使用,直接删除后,导致程序日志无法写入(删除后无法自动创建),必须重启服务后才能自动创建日志文件并再次写入。

这也正是我们查看日志时提示日志文件不存在,但系统进程存在而且系统可正常使用的原因所在。

正确做法

正确的做法是:
1. 删除非当天的日志文件;(一般程序日志会配置日切,每日一个文件)
2. 清空当天的日志文件;

#!/bin/bash
# 查看/opt目录下,所有【非当天】的日志文件及大小
find /opt -name *.log.* | xargs du -sh
# 删除/opt目录下所有【非当天】的日志文件
find /opt -name *.log.* | xargs rm -rf
# 查看/opt目录下,所有【当天】日志文件及大小
find /opt -name *.log | xargs du -sh
# 清空/opt目录下所有【当天】的日志文件
for i in `find /opt -name *.log`
do cat /dev/null > $i
done

如果不想写个脚本,直接执行命令则如下:

for i in `find /opt -name *.log`; do cat /dev/null > $i; done

相当于将脚本中的for循环写在一行上,直接在命令行中执行

误区

删除时可以使用下面的命令

find /opt -name *.log | xargs rm -rf

清空时,可能大家不想写for循环,也想通过上面的形式去清空,但实际效果是没有效果(具体原因没有研究)

find /opt -name *.log | xargs -I filename cat /dev/null > filename

Linux上批量清空日志文件(非删除)相关推荐

  1. linux查看mysql连接日志文件,linux下查看mysql日志文件的方法

    查看mysql日志方法: mysql默认不允许我们查看日志.需要更改一些设置 1 vi 更改配置文件 允许用户查看日志文件 sudo vi /etc/mysql/mysql.conf.d/mysqld ...

  2. php删除oracle数据记录日志文件,Oracle手动切换日志文件和清空日志文件

    日志文件组是循环使用的,当一组日志文件被写满时,Oracle系统自动的切换到下一组日志文件.在需要的时候,数据库管理员也可以手 Oracle切换日志文件组 日志文件组是循环使用的,当一组日志文件被写满 ...

  3. zypper 删除mysql_如何在 Linux 上安装/卸载一个文件中列出的软件包?

    原标题:如何在 Linux 上安装/卸载一个文件中列出的软件包? 我们可以手动去安装这些软件但是这将花费大量的时间.你可以手动安装一俩个服务器,但是试想如果你有大概十个服务器呢.在这种情况下你无法手动 ...

  4. 服务器日志文件已被清除恢复,Linux服务器入侵后日志文件删除/恢复方法

    当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹.管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志.有时可以通过lsof来恢复这些 ...

  5. linux需要关注的日志文件,如何更好地使用Linux日志

    Linux上的日志文件可以提供有关系统上发生的事情的大量有用信息. 以下命令可以帮助您对数据进行排序并查明问题. Linux系统维护相当多的日志文件,其中许多您可能很少想要查看.不过,其中一些日志文件 ...

  6. linux清理日志 hack,Linux系统的LOG日志文件及入侵后日志的清除

    UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX /var/adm - ...

  7. Windows升级日志文件可以删除吗?

    有用户发现Windows系统升级之后就会自动生成一个日志文件,这些日志文件可以删除吗?答案是可以的,这些日志文件删除之后不会对系统的运行造成任何影响. 风林火山 Ghost Win10 64位 绿色安 ...

  8. mysql 日志 超过 m,linux 下查找大日志文件,比如大于500M的文件

    在实际生产环境中,有的时候有些文件我们不知道占用多大,这个时候我们需要进行查找命令来进行查看占用文件的大小,从而达到文件的清理,释放磁盘,保障磁盘充足,让网站资源不浪费,稳定运行,那么我们需要在lin ...

  9. 服务器如何关闭登录日志文件,linux云服务器登录日志文件

    linux云服务器登录日志文件 内容精选 换一换 Cloud-Init工具安装完成后,请参考本节操作配置Cloud-Init工具.已安装Cloud-Init工具.已为云服务器绑定弹性公网IP.已登录云 ...

最新文章

  1. 【数据结构与算法】之深入解析“格雷编码”的求解思路与算法示例
  2. Redis 总结精讲
  3. 上白泽慧音(tarjan,图的染色)
  4. 删除文件时,提示没权限删除文件怎么办
  5. 如何在SAP CRM Fiori My Task应用里创建task
  6. HDU4506 小明系列故事——师兄帮帮忙
  7. mysql数据库设计规范_MYSQL数据库设计规范与原则
  8. 这就是你们有钱人炫富的新方式吗?
  9. 《走遍中国》珍藏版(十三)
  10. 如何通俗理解计算机视觉、计算机图形、图像处理之间的区别与联系
  11. [Ogre] 创建Ogre项目的一劳永逸的简单办法
  12. 安卓* 系统级 Java*/C++ 代码调试
  13. 网页设计中常用的Web安全字体
  14. oracle可以导出mdf,sql数据库导出mdf
  15. TDSQL将发布免费版本,助力国产数据库生态完善
  16. 怎么用python爬豆瓣_完全小白篇-用python爬取豆瓣影评
  17. 青玉案·元夕 【宋代】辛弃疾
  18. Ain_电脑所有乱码文字集
  19. 浙江大学 工程伦理 第十二单元测试答案
  20. 解决WMI Provide Host占用CPU过高问题(win10亲测有用)

热门文章

  1. 广东电信 DNS 设置更改
  2. MySQL删除表:Cannot delete or update a parent row: a foreign key constraint fails。
  3. Axis2 webservice学习总结
  4. empty reply from server php,Curl Error 52 Empty reply from server
  5. linux磁盘分区、格式化并挂载
  6. BP神经网络 MATLAB实验报告
  7. PostgreSQL INSERT INTO 语句
  8. [Mysql] DATEDIFF函数
  9. 2021年春招小tip分享,java后端面试总结+心得分享+面经!
  10. 深入学习,一步一个脚印