現在、特定のJavaプロセス(ps -efl | grep Java
)はルートとして実行されています。
現在、私は以下を思いついていますが、必要なものが印刷されていません、私が間違っている場所の提案はありますか?
process_count=`pgrep -u root -x Introscope_WebView.lax;echo $?`
if [ "$process_count" -eq 1]
then
process_user="Root"
else
process_user="Not Root"
fi
echo "<metric type=\"LongCounter\" name=\"OS Processes|WebView User Process:Process Count\" value=\"$process_count\"/>"
echo "<metric type=\"StringEvent\" name=\"OS Processes|WebView User Process:Process User\" value=\"$process_user\"/>"
exit 0
このインスタンスでは、JavaプロセスはIntroscope_WebView.laxになります。これがrootユーザーとして実行されているかどうかを確認します。私ではなく、ルート。
pgrep
の終了ステータスを直接テストできる必要があります。
if pgrep -u root -xf 'Introscope_WebView.lax' > /dev/null
then
process_user="Root"
else
process_user="Not Root"
fi
プロセスがまったく存在しない場合もprocess_user="Not Root"
を設定することに注意してください-3つのケースすべてを実行したい場合(実行と所有はroot、実行は所有しているが他の誰かが所有、非実行)別のテスト。
例えば与えられた
$ ps -ef | grep [i]nit
root 1 0 0 Jan21 ? 00:00:05 /sbin/init splash
それから
$ if pgrep -xfu root '/sbin/init splash' >/dev/null ; then echo 'root owns it'; fi
root owns it
man pgrep
から
EXIT STATUS
0 One or more processes matched the criteria.
1 No processes matched.
2 Syntax error in the command line.
3 Fatal error: out of memory etc.