ディスク容量が90%に達するとログを削除するシェルスクリプト

ディスク容量が90%に達するとログを削除するシェルスクリプト

ディスク容量が90%に達すると、自動的にログを削除するシェルスクリプトを開発しました。

このシェルスクリプトをcrontabジョブに追加できます。

答え1

スクリプトを書くのに時間を費やすのではなく、ファイルを圧縮して古いログを少なくする方が良いでしょうか?これがログロテートが存在する理由です。

logrotate.confのように始める必要があります。

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

たとえば、オプションのコメントを外しcompress、3に変更してrotateディスク容量に合っていることを確認します。また、会社の要件を満たす必要があります。法的な理由から、ログイン情報を18ヶ月間保持する必要があるサーバーがあるため、ログインファイルを毎月交換するように変更しました。

/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 18
}

/var/log/btmp {
    missingok
    monthly
    minsize 1M
    create 0600 root utmp
    rotate 18
}

ファイルまたはディレクトリを指し、中かっこの間にパラメータを入れると、特定の回転ルールを作成できます。

特権ユーザーではありませんか?。ルートなしで実行するように設定できるため、cronこれはまったく問題ではありません。logrotate

関連情報