すべてのコアダンプで呼び出されるクリーンアップスクリプトを実行しようとしています。まず、コアファイルの内容を別のファイルに書き込んでから、最も古いファイル10個をまとめてみました。
ただし、xargs rm
このコマンドはcore_dumpを介してスクリプトを呼び出すと機能しません。スクリプトを単独で実行すると、rmが機能します。
/proc/sys/kernel/core_pattern:
|core_cleanup.sh /tmp/cores/core.%t
.sh ファイルのクリーンアップ
#!/bin/sh
cat > "$1"
ls -tr /tmp/cores/ | head -10 | xargs rm
ファイルを削除するには、次の操作を行います。ただし、最も古いxファイルだけを削除するだけです。
#!/bin/sh
cat > "$1"
rm /tmp/cores
誰かがこれについて明らかにできますか?
ベストアンサー1
ls -tr /tmp/cores
ファイルの絶対パスはリストされず、デフォルト名のみがリストされます。
試してls -tr /tmp/cores/* | ...
みてください。
しかし、そのすべてが必要なわけではありません。すべてのファイル名がこの形式core.%t
(%t
= unixダンプ時間)なので、単にglobを使用してソートできます。また、1つのファイルのみを追加してから10個のファイルを削除することは意味がありません。一連の手順を実行すると、ディレクトリにファイルがなくなります。
#! /bin/sh
cat > "$1"
# remove the oldest file if there are more than 100
cleanup(){ test "$#" -gt 100 && rm "$1" }
cleanup /tmp/cores/*