/ var / logをすべて削除しますか?


26

ですべてを削除できます/var/logか?または/var/log、フォルダを残して(再帰的に)ファイルを削除するだけですか?

誰もが良いrmコマンドラインを持っていますか?(私の管理スキルは私を緊張させます。)

注:私はDebianを使用しています。どのバージョンかわかりません。


3
ログファイルを削除するのは悪い考えです(独自のログファイルを持つすべての実行中のプロセスを見つけて、それを "kill -HUP"する必要があります。これにより、プログラムが必要なログファイルを再作成します)。ログファイルを削除しないことを強くお勧めします。logrotateなどのユーティリティを使用して、/ var / logの内容を自動的に管理します(プロセスのHUPなどを行います)。別の角度からこれに取り組みたい場合は、これを検討することになった問題を解決しようとしていますか?
トウィリム

回答:


22

ファイルを削除する代わりに、たとえばを使用してローテーションする必要がありますlogrotate

いつからログが実際に必要になるのか分からないので、ログをアーカイブする方が適切です(3か月などの妥当な年齢まで)。

logrotate 古いログファイルを圧縮して、多くのディスク容量を占有しないようにすることができます。


3
logrotateは、最も古いファイルを削除することもできます。
ケビンM

8
まあ、すべてのログを削除する私見は、いくつかのケースで完全に理にかなっています。たとえば、新しい展開に使用するVirtial Machineイメージを作成します。言うまでもなく、ログ、履歴、キャッシュなどが保存されていない、本当にクリーンなシステムになりたいです。
イヴァン

2
申し訳ありませんが、3か月前のログファイルを見るのは考古学です。問題を特定するためにログを収集する場合は、すぐに評価してください。
カウンター

4
@countermodeあなたは懐かしさのために気分が決してない?古き良き時代を考えて3か月前のログファイルを見るのが好きですか?
ブロコ

OK、コマンドが表示されます。それの使い方?man logrotateは、cronで使用すると言います。-fオプションを使用すると思いますか?
–SDsolar

17

/ var / logのすべてを削除すると、存在すると予想されるフォルダー(exim4、apache2、apt、cups、mysql、sambaなど)が存在するため、ほとんどの場合、非常に短い時間で大量のエラーメッセージが表示されます。もっと)。さらに、ログファイルが存在しない場合、ログファイルを作成しないサービスまたはアプリケーションがあります。少なくとも空のファイルが存在することを期待しています。あなたの質問に対する直接的な答えは、実際には「これをしないでください!!!」です。

ジョスキが指摘したように、これを行う理由はありません。私は何年も削除された単一のログファイルを持っていなかったDebianサーバーを実行しています。


気づきませんでした。知っておくといい。+1 +承認を変更しました。

1
これをやったばかりです。お願い!私は以前にこの答えを読んでいました
VarunAgw

ログファイルを削除する正当な理由は、私見です。たとえば、他のユーザーが使用するために仮想マシンをエクスポートしますが、エクスポート前に発生したすべての詳細を仮想マシンイメージに含めたくない場合があります。
a3nm

15

すべてのファイルを削除します。

find /var/log -type f -delete

すべての.gzおよび回転したファイルを削除します

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

それをテストするために、「-delete」なしでコマンドを実行してみてください。


これは、パッケージ化する前にVagrantボックスのログファイルを消去するのに役立ちます。
ルドルフヴァヴルフ

10

マスターから仮想マシンのクローンを作成しています。マスターのログをクリアして、クローンを起動したときにマスターのログが取得されないようにすることは非常に理にかなっています。私はtcshでやった:

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

これにより、ログは消去されますが、ファイルは保持されます。


これは、あなたが説明したようなユースケースに制限されるべきです。
スヴェン

4
bashで:/ var / log / -type f -exec cp / dev / null {} \;を見つけます。
ジェラルド

7

ファイルを削除せずに Linuxシステムのすべてのログを消去する:

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

Samba(/var/www/samba)はIPアドレスを使用してログファイル名を作成します。削除することもできます。

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done

2
便利なスクリプト。
アンモルシンジャギ

あなたは入れ替えることができcp /dev/null $CLEANによって> $CLEAN
トリウムBR


2

/var/log多くの場合drwxrwxr-x、アクセス許可はであるため、ユーザーがrootであるか、特権グループに属していなければ、ユーザーは書き込みできません。つまり、非特権ユーザーは新しいログファイルを作成できません。

内のポイントにログインすることを期待するアプリケーション/var/logしばしばで存在どこかにファイルを触れます/var/log(多くの場合、システム特権で発生する)をインストールした時間の間、階層、および意志chmodと可能性chownになる権限を持たないユーザーのための適切な権限をその時点でアプリケーションを使用します。

たとえば、Apacheログは通常、によって書き込まれnobodyます。このユーザーは、システムを過度のリスクにさらすことなく、Apacheがジョブを完了するための権限をできるだけ少なくしています。しかし、より一般的なアプリケーションでさえ、多くの場合、のログファイルに書き込むことができると期待しています/var/log

それでは、ログファイルとログファイルへのパスが存在しない場合はどうなりますか?それは完全にアプリケーション次第です。一部のアプリケーションは、ロギングを静かにスキップします。他の人は多くの警告を作成します。そして、他の人は単純に救済されます。確固たるルールはありません。アプリケーション開発者の警戒と、開発者がログを記録する能力をどの程度重要視しているかによって異なります。せいぜい、アプリケーションは内の宛先でログファイルに書き込みを行うか、場合によっては作成してから書き込みを試みますが、書き込み/var/log権限のないユーザーによって実行されているため、書き込みができません。ファイルシステムのその部分。

したがって、短い答えはいいえ、すべてを削除しないでください。/var/logシステムで実行されるアプリケーションでそのようなことを行うための十分な特権を持つ契約ユーザーを破壊し、ノイズ、ログのサイレント障害、全面的な破損。

適切なアクションはlogrotate、適切な構成ファイルでセットアップすることです。通常、ローテーションはcronジョブに関連付けられます。回転は、間隔ベース、サイズベース、またはその両方にすることができます。間隔が切れてもログファイルが空の場合、間隔ベースのローテーションを回避するルールを設定することもできます。ローテーションには、ログファイルの圧縮、圧縮、削除、シュレッディングなどが含まれます。

平均的なユーザーは、ログのローテーションを気にする必要はありません。開発者は、おそらく、使用するログにローテーションルールが確立されていることを確認する必要があります。実際、ソフトウェアが作成および作成するソフトウェア固有のログについては、インストール時にログローテーションを設定するのが開発者側のマナーである可能性があります。


1

ここに簡単なクリーナーを実装しました:

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

それは単に:

  • 以下のログローテーションされたファイル名パターンのファイル名を削除します /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (大文字小文字を区別しません)
  • 以下のログファイル名パターンのファイル名でファイルを切り捨て/空にします /var/log
    • ^.*/.+\.log$ (大文字小文字を区別しません)

-2
function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

実行可能スクリプトを作成し、sudoが機能しない場合はrootとして実行してみてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.