/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
上記のように。