gpt4 book ai didi

linux - 通过带有 gzip 命令的 shell 脚本在 tomcat 服务器中备份日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:53 24 4
gpt4 key购买 nike

我有一些在 tomcat 应用程序中创建的日志文件,我通过 gzip 命令执行收缩的 shell 脚本备份文件,收缩后,虽然旧的日志文件已经不存在,但它们仍然占用内存和磁盘空间,这会耗尽光盘的资源!

这是shell脚本的代码:

mkdir /tmp/backUp
mv `find $TOMCATDIR/logs/*.log -mtime +3` /tmp/backUp
cd /tmp/backUp
gzip *

脚本运行后,文件仍然存在于磁盘中(虽然没有打开)

lsof |grep "已删除"

java       584       cg   9w     REG             253,7     2253  18317840 /app/jakarta/apache-tomcat-8.0.9_xxx/logs/back06.07/catalina.06-02.log (deleted)
java 584 cg 10w REG 253, 7 881 18317446 /app/jakartaapache-tomcat-8.0.9_xxx/logs/back06.07/localhost.06-02.log (deleted)
.......
....
...

最佳答案

文件从文件系统中删除,其中删除了对该 inode 的任何引用。引用可以在磁盘上(任何目录中的链接),并且..来自打开的应用程序。如果您删除文件 - 您只从磁盘中删除引用,但是 - 仍然有来自应用程序的引用。

您可以通过两种方式“释放”空间:

  1. 您可以终止打开文件的应用程序。
  2. 您可以截断文件。

如果您知道 pid - 查看此 pid 打开了哪些文件:ls -l/proc/PID/fd 您会在此处看到如下链接:

undefine@uml:~$ ls -l /proc/18596/fd
razem 0
lrwx------ 1 undefine undefine 64 lut 1 00:06 0 -> /dev/pts/30
lrwx------ 1 undefine undefine 64 lut 1 00:06 1 -> /dev/pts/30
lrwx------ 1 undefine undefine 64 lut 1 00:05 2 -> /dev/pts/30
lr-x------ 1 undefine undefine 64 lut 1 00:06 3 -> /home/undefine/x (deleted)
lr-x------ 1 undefine undefine 64 lut 1 00:06 4 -> anon_inode:inotify

如您所见 - 3 fd 已删除。你可以通过命令截断它(例如):

undefine@uml:~$ :>/proc/18596/fd/3
undefine@uml:~$

请记住,如果应用程序读取此文件 - 这对他们来说可能是危险的。但是 - 如果它只是一个日志文件 - 您可以安全地截断它。

关于linux - 通过带有 gzip 命令的 shell 脚本在 tomcat 服务器中备份日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38099223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com