繁体   English   中英

使用gzip命令通过Shell脚本在tomcat服务器中备份日志文件

[英]Backup log files in tomcat server by shell script with gzip command

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

这是shell脚本的代码:

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

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

lsof |grep "deleted"

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)
.......
....
...

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

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

  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:~$ 

请记住,如果应用程序从该文件中读取文件,则可能会对他们造成危险。 但是-如果它只是一个日志文件-您可以安全地截断它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM