![](/img/trans.png)
[英]Linux shell script to tar.gzip log files older than 1 month grouped by month
[英]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)
.......
....
...
文件从文件系统中删除,其中删除了对该索引节点的任何引用。 引用可以在磁盘上(任何目录中的链接),也可以来自打开的应用程序。 如果删除文件-您只删除磁盘上的引用,但是-应用程序中仍然有引用。
您可以通过两种方式“释放”空间:
如果您知道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.