Передайте параметр -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
) при его запуске.
Для отладки, в top
выберите f для полей и включите PPID
, подведя туда курсор и нажав Space. Вам может понадобиться снять выделение с одного из других полей (VIRT
), чтобы вы могли увидеть этот идентификатор родительского процесса.
Используя PPID
вы должны быть в состоянии определить, какая программа вызвала эту оболочку, это, вероятно, PID вашей программы, и вы на самом деле смотрите на подоболочку в top
.