/var/log
のすべてを削除できますか?または、/var/log
内のファイルを(再帰的に)削除するだけで、フォルダーは残しますか?
誰かが良いrm
コマンドラインを持っていますか? (私の管理スキルは私を緊張させます。)
注:私はDebianを使用しています。どのバージョンかわかりません。
ファイルを削除する代わりに、それらをローテーションする必要があります。 g。 logrotate
を使用します。
いつか前のログが実際に必要になるかわからないため、アーカイブすることをお勧めします(妥当な期間、たとえば3か月まで)。
logrotate
は、古いログファイルを圧縮して、多くのディスク領域を占有しないようにすることができます。
/ var/log内のすべてを削除すると、存在することが予想されるフォルダー(exim4、Apache2、apt、cups、mysql、sambaなど)が存在するため、非常に短い時間で大量のエラーメッセージが表示される可能性があります。もっと)。さらに、ログファイルが存在しない場合に作成されないサービスまたはアプリケーションがいくつかあります。彼らは少なくとも空のファイルが存在することを期待しています。ですから、あなたの質問への直接的な答えは、実際には"Do not do this !!!"です。
Joschiが指摘したように、これを行う理由はありません。私は何年もの間1つのログファイルが削除されていないdebianサーバーを実行しています。
すべてのファイルを削除します。
find /var/log -type f -delete
すべての.gzとローテーションされたファイルを削除する
find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"
「-delete」なしでコマンドを実行して、テストしてください。
マスターから仮想マシンを複製しています。マスターのログをクリアして、クローンを起動したときにマスターのログが取得されないようにすることは、完全に理にかなっています。私はtcshで行いました:
cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end
ログはクリアされますが、ファイルは保持されます。
Linuxシステムのすべてのログをクリーンアップ削除せずにファイル:
for CLEAN in $(find /var/log/ -type f)
do
cp /dev/null $CLEAN
done
サンバ(/var/www/samba
)は、IPアドレスを含むログファイル名を作成します。削除することもできます。
for CLEAN in $(find /var/log/samba -type f)
do
rm -rf $CLEAN
done
オプションctimeを使用して古いファイルを見つけることができます...例:
find -ctime +30
Bindbnで説明されているように、最初にフェッチフェッチファイルを検索し、使用後にオプションdelete:Dを使用します。
/var/log
はdrwxrwxr-x
の権限を持っていることが多いため、ユーザーがrootであるか、特権グループに属していない限り、ユーザーは書き込みできません。つまり、特権のないユーザーが新しいログファイルを作成することはできません。
/var/log
内のポイントにログを記録することを期待しているアプリケーションは、インストール時にファイルを/var/log
階層のどこかに存在させることがよくあり(多くの場合、昇格された特権で発生します)、chmod
およびその時点で、アプリケーションを使用する特権のないユーザーに適した権限にchown
する可能性があります。
たとえば、Apacheログは通常、nobody
によって書き込まれます。このユーザーは、Apacheがシステムを過度のリスクにさらすことなくその仕事を完了するための、できる限り少ない特権を持つユーザーです。しかし、より一般的なアプリケーションでさえ、多くの場合、/var/log
のログファイルに書き込むことができると期待しています。
では、ログファイルとログファイルへのパスが存在しない場合はどうなるでしょうか。それは完全にアプリケーション次第です。一部のアプリケーションは静かにロギングをスキップします。他の人はたくさんの警告を出します。そして、他の人々は単に救済されるでしょう。厳密なルールはありません。それは、アプリケーション開発者の警戒と、開発者がログ記録する能力をどれほど重要であると考えるか次第です。アプリケーションは、せいぜい/var/log
内の宛先でログファイルに書き込むか、場合によっては作成してから書き込みを試み、それを実行できないユーザーによって実行されているため、ログファイルを書き込むことができないことに気付きます。ファイルシステムのその部分に書き込む特権を持っています。
したがって、短い答えは「いいえ」です。/var/log
のすべてを削除しないでください。システムで実行されるアプリケーションでそのようなことを実行するための十分な権限を持つ契約ユーザーを破り、ノイズやサイレントを発生させます。ログの失敗、およびいくつかの全面的な破損。
適切なアクションは、適切な構成ファイルを使用してlogrotate
をセットアップすることです。通常、ローテーションはcronジョブに関連付けられます。回転は、間隔ベース、サイズベース、またはその両方です。間隔が経過してもログファイルがまだ空である場合は、間隔ベースのローテーションを回避するルールを設定することもできます。ローテーションには、ログファイルのメール送信、圧縮、削除、細断処理などが含まれます。
平均的なユーザーは、ログのローテーションについてあまり気にする必要はありません。開発者はおそらく、使用するログにローテーションルールが確立されていることを確認する必要があります。実際、ソフトウェアが作成および書き込みするソフトウェア固有のログについて、インストール時にログローテーションを設定することは、開発者側の良いマナーと思われます。
ここに簡単なクリーナーを実装しました:
https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner
それは単に:
/var/log
_ で、次のログローテーションされたファイル名パターンを持つファイル名を削除します。^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
^.*/.+\.old$
_(大文字と小文字を区別しない)/var/log
_ で、次のログファイル名パターンのファイル名を持つファイルを切り捨てる/空にする^.*/.+\.log$
_(大文字と小文字を区別しない)