Я в настоящее время пытаюсь создать сценарий, чтобы проверить если определенный процесс 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. Раз так дайте мне 1, и выполняющий корень иначе еще дают мне и не корню.
Необходимо просто смочь протестировать статус выхода 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"
, если процесс не будет существовать вообще - если Вы хотите покрыть все три случая (выполнение и принадлежавший корню; выполнение, но принадлежавший кому-то еще; не выполнение), необходимо будет добавить отдельный тест.
, например, учитывая
$ 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.