web-dev-qa-db-ja.com

/ var / spool / abrt /を削除する正しい方法は何ですか

/var/spool/abrt/から古いディレクトリを削除するプロセスを自動化したいと考えています。

RHELマシン-バージョン7.xがあります。

既知の方法は次のようにすることです

# systemctl stop abrtd
# systemctl stop abrt-oops

そして、次のrmコマンドでこれらのディレクトリとファイルをすべて削除できます。

# abrt-cli rm /var/spool/abrt/*

そして、サービスを開始します

# systemctl start abrtd
# systemctl start abrt-oops

次のように削除プロセスを簡略化します-/var/spool/abrt/から10日より古いディレクトリを削除します

find /var/spool/abrt/  -type d -ctime +10  -exec rm -rf {} \;

/var/spool/abrt/ディレクトリを削除するのに適した方法ですか?

2
yael

これが私の提案です:

1)シェルスクリプトを作成する/home/yael/purgeabrt.sh

$ cat purgeabrt.sh

#!/bin/bash
set -e
function cleanup()
{
    systemctl start abrtd
    systemctl start abrt-oops
}

trap cleanup EXIT

systemctl stop abrtd
systemctl stop abrt-oops
find /var/spool/abrt/ -type d -ctime +10 -exec abrt-cli rm {} \;
cleanup

2)スクリプトをrootとして実行します。

Sudo crontab -e

次の行を追加します。

*/5 * * * * bash /home/yael/purgeabrt.sh

cronジョブを5分ごとに実行するため。

編集:

set -eは、コマンドがゼロ以外のステータスで終了した場合にスクリプトの実行を終了します。

trap cleanup EXITは、スクリプトにスローされる可能性のあるシグナルをキャッチし、クリーンアップコードを実行します。

注:スクリプトの最後の行でのcleanupの呼び出しはおそらく不要(冗長)ですが、コードの可読性は向上しています。

3
Paulo Tomé