Сценарий, чтобы проверить, работает ли процесс Java как пользователь root

Я в настоящее время пытаюсь создать сценарий, чтобы проверить если определенный процесс 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, и выполняющий корень иначе еще дают мне и не корню.

1
задан 8 February 2017 в 16:50

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.
4
ответ дан 3 December 2019 в 06:55

Другие вопросы по тегам:

Похожие вопросы: