PID в вершине, отличающейся от одного $$?

Передайте параметр -o в ps , чтобы управлять тем, какие поля он выводит. Если вы добавите знак = после всех полей, строка заголовка будет опущена.

Используйте -e вместо ax , чтобы придерживаться стандартных функций (это будет работать с любыми не-антикварными unix).

Ваш фильтр с grep не является надежным. Например, если вы запустите эту команду из сценария с именем look-for-tomcat , то ваш сценарий также будет сопоставлен. Вот более надежный способ поиска процесса JVM с аргументом org.apache.catalina.startup.Bootstrap .

ps -e -o user=,args= | awk '
    $2 ~ /java$/ &&  / org\.apache\.catalina\.startup\.Bootstrap($| ) {
        print "user name: ", $1;
        if (match($0, / -javaagent:[^ ]* /)) print substr($0, RSTART+1, RSTART+RLENGTH-2);
        # etc.
    }'

Еще лучше было бы записывать PID процесса tomcat в файл (например, /var/run/tomcat.pid ) при его запуске.

1
12.12.2014, 08:38
1 ответ

Для отладки, в top выберите f для полей и включите PPID, подведя туда курсор и нажав Space. Вам может понадобиться снять выделение с одного из других полей (VIRT), чтобы вы могли увидеть этот идентификатор родительского процесса.

Используя PPID вы должны быть в состоянии определить, какая программа вызвала эту оболочку, это, вероятно, PID вашей программы, и вы на самом деле смотрите на подоболочку в top.

1
27.01.2020, 23:51

Теги

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