制御不能なログがいくつかあります。代わりに狂った日常のように削除するので、急成長しているファイルやファイル、および見つけるルックこれを引き起こす可能性のあるものを調査するために内部を。何らかのプログラムが何らかの条件を記録するループで回転している可能性があります。そのプログラムを無効にするか、ログを無効にするか、不平を言っている状態を修正してください。
ファイルが目の前で大きくなっていて、どのプログラムがそのファイルに書き込んでいるのかわからない場合、簡単に見つけることができます。以下に例を示します。誰が/var/log/syslog
開いていますか?fuser
次のコマンドを使用します。
# fuser /var/log/syslog
/var/log/syslog: 602
/var/log/syslog
開いているプロセスは1つだけです。それはプロセス602です。それは何ですか?とps
を気にせずgrep
に、/proc
ファイルシステムを直接見てみましょう。
# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd
あは、そうですrsyslogd
。開いたことrsyslogd
に驚くことはありません/var/log/syslog/
。
この方法は機能することが保証されていません。その理由は、プログラムがファイルを開いたままにしておく必要がないからです。ファイルを開き、追加してから閉じるプロセスがあるとします。調査はやや難しくなります。fuser
偶然 "red handed"プロセスをキャッチするまで何度も実行できます。そのプロセス自体が急速に存在し、存在しなくなる可能性があります。別の問題は、複数のプロセスがファイルを開くことができるが、1つだけがファイルを大きくしていることです。その場合、システムコールをトレースできます。
# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file: 1234 23459
おっとっと!1234と23459の2つのプロセスが開いています。それらが何をしているのか見てみましょう。
# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}
それは何もしていません、ただselect
呼び出しでブロックしています。Ctrl-Cを押してトレースを中断します。
select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>
次のものを確認してください:
# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C
おっと、1つは絶えず書いています。それは悪いものでなければなりません。プロセスが書き込むファイル記述子5が実際に大きなファイルであることも確認できます。
# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr 3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file
破損したファイルシステムがあるとは思わないが、完全なチェックを強制するために、DVDを起動する必要はない。
まず、ファイルシステムの最大マウントカウント設定を確認します。dfコマンドを使用してパーティションを特定します。ここにあるUbuntuシステムの例:
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 18062108 5499320 11645284 33% /
udev 392152 4 392148 1% /dev
tmpfs 159768 768 159000 1% /run
none 5120 0 5120 0% /run/lock
none 399416 200 399216 1% /run/shm
/dev/sr0 43668 43668 0 100% /media/VBOXADDITIONS_4.1.4_74291
/
ファイルシステムがにマウントされていることがわかります/dev/sda1
。そう/dev/sda1
ルートパーティション(この特定のシステムでのみパーティション)の記憶装置です。
そのファイルシステムのいくつかの属性を見てみましょう。これはマウントされていても安全です。このコマンドは大量の出力を出力します。抜粋は次のとおりです。
$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name: <none>
Last mounted on: /
[ ... SNIP ... ]
Last mount time: Fri Mar 29 17:45:18 2013
Last write time: Tue Mar 5 09:08:03 2013
Mount count: 22
Maximum mount count: 22
[ ... SNIP ... ]
ちょっと見て、マウント数は最大マウント数に等しい。次回リブートすると、ファイルシステムのチェックが行われます。重要なことは、マウント数が正の値であることです。yoursがゼロの場合、を使用して22などの正の値に変更しtune2fs -c 22 /dev/whatever
ます。ゼロは、パーティションがマウントされている回数に関係なく、チェックが強制されないことを意味します。まれに再起動されるシステムの値はここで低くする必要があります。1年に1度ダウンするサーバーは、リブートするたびにfsckを使用する可能性があります。日付ベースのチェック間隔も設定できます。
チェックを強制するために、実際のカウントをオーバーライドして、最大値以上にすることができます。その後、再起動します。これは資本で行われC
ますtune2fs -C 1234 /dev/whatever
。これで、パーティションはチェックなしで1234回マウントされたように見えます。これは、1桁または2桁の最大値を超えています。
sudo du -sh /var/* ~/.xsession-errors
please の出力を追加するように投稿を編集できますか?(ばかげているものがある場合に爆破すると予想される2つの場所)。それ以外の場合、私はエリアと一緒です-これはディスクの問題を示しています。これを真剣に受け止めてください。