スクリプトでcore_patternの一部として実行すると、Xargs rmは機能しません。

スクリプトでcore_patternの一部として実行すると、Xargs rmは機能しません。

すべてのコアダンプで呼び出されるクリーンアップスクリプトを実行しようとしています。まず、コアファイルの内容を別のファイルに書き込んでから、最も古いファイル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/*

おすすめ記事