ファイルサイズを確認する際の予期しない動作

ファイルサイズを確認する際の予期しない動作

/proc/*/mapsカーネルプロセスのように見えるプロセスのすべてのPIDを取得し、カーネルプロセスの仮面舞踏会を表すものがあるかどうかを確認する1行のbashスクリプトを作成しようとしています。

現在、次のスクリプトがあります。

for pid in $(ps aux | grep "\["  | awk -F' ' '{print $2}');do if [ -s /proc/$pid/maps ]; then echo $pid; fi;  done

/proc/$pid/mapsサイズが0より大きい場合、スクリプトはpidを出力する必要があります。しかし、スクリプトは何も出力しません。

if [ -s /proc/$pid/maps ]ファイルが空でないかどうかを示す必要があります。うまくいかないようです。

この問題を解決する別の方法がありますが、-sインターネットではファイルが空であることを確認するためにこのオプションを提案しました。

ここに問題がありますか?コマンドライン(avahiデーモン)には、そのプロセスの内容を含む括弧付きのプロセスがあることがわかっているので、/proc/$pid/mapsテスト目的で少なくとも1つのpid出力が必要です。パイプラインからgrepを削除すると、すべてのPIDが繰り返されますが、まだ出力はありません。

答え1

問題は、/proc/$pid以下のファイルの内容に関係なく、出力サイズが0であることです。

ls -l /proc/*/maps

そして

wc -c /proc/*/maps

/proc/$pid/maps実際に読む必要があるサイズを確認するには、以下を使用してください。例えば wc -c上記のように。

関連情報