2016-06-29 7 views
0

Tomcatアプリケーションで作成されたいくつかのログファイルがありますが、gzipコマンドで縮小を実行するシェルスクリプトでファイルをバックアップしますログファイルが存在しない場合でも、ディスク内のメモリとスペースを占有しています。 これはディスクのリソースを使い果たします。gzipコマンドを使用したシェルスクリプトによるログファイルのバックアップ

これは、シェルスクリプトのコードです:

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

あなたのシェルスクリプトをフォーマットできますか? –

+0

ログの回転を使用すると考えましたか? –

答えて

1

このiノードへの参照が削除されたファイルシステムからファイルが削除されます。参照はディスク上(任意のディレクトリ内のリンク)にできます。オープンアプリケーションから参照できます。ファイルを削除すると、ディスクからの参照のみが削除されますが、アプリケーションからは参照が残っています。

あなたは、2つの方法で「空き」スペースができます。

  1. あなたは、ファイルを開いたアプリケーションを強制終了することができます。
  2. ファイルを切り捨てることができます。

あなたがpidを知っている場合 - このpidで開かれているどのようなファイルを探す:ls -l /proc/PID/fdあなたがここで見るようにリンクします。ご覧のとおり

[email protected]:~$ 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が削除されました。あなたは(たとえば)コマンドによってそれを切り捨てることができます。

[email protected]:~$ :>/proc/18596/fd/3 
[email protected]:~$ 

アプリケーションがこのファイルから読み込む場合があることに注意してください - それは彼らに危険なことができます。しかし、それが唯一のログファイルであれば、安全に切り捨てることができます。

関連する問題