Как вывести только пользователя запущенного процесса - PullRequest
0 голосов
/ 21 мая 2018

Когда я делаю ps aux | grep mongod, я получаю

mongod    53830  0.1  0.3 247276 27168 ?        Sl   Apr04 128:21 /var/lib/mongodb-mms-automation/mongodb-mms-monitoring-agent-5.4.4.366-1.rhel7_x86_64/mongodb-mms-monitoring-agent
mongod   104378  0.6  0.8 469384 71920 ?        Ssl  Mar22 571:03 /opt/mongodb-mms-automation/bin/mongodb-mms-automation-agent -f /etc/mongodb-mms/automation-agent.config -pidfilepath /var/run/mongodb-mms-automation/mongodb-mms-automation-agent.pid >> /var/log/mongodb-mms-automation/automation-agent-fatal.log 2>&1
mongod   104471  0.6  5.4 1993296 433624 ?      Sl   Mar22 578:03 /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-3.4.13/bin/mongod -f /data/mdiag/data/automation-mongod.conf

Однако меня интересует только вывод user третьей записи, которая запускает фактический процесс mongod.Я хотел бы, чтобы результат был просто

mongod

Как бы я настроил ps, grep и awk, чтобы сделать это?

Ответы [ 5 ]

0 голосов
/ 22 мая 2018

Вероятно, лучше указать шаблон, соответствующий концу первой части интересующего нас поля COMMAND. Кроме того, использование скобочных выражений вместо \/ делает, по крайней мере, мои глаза счастливее, когда я смотрю на шаблоны длясоответствующие пути к файлам.

ps aux | awk -v command=11 -v user=1 '$command ~ /[/]bin[/]mongod$/ { print $user }'
0 голосов
/ 21 мая 2018

После awk может помочь здесь.

ps aux | awk '/mongod/ && /automation-mongod.conf/{print $8}' 

ИЛИ

ps aux | awk '/mongod/ && /\/data\/mdiag\/data\/automation-mongod.conf/{print $8}'
0 голосов
/ 21 мая 2018

Передайте его в awk и выполните поиск:

 ps aux | grep mongod | awk '/bin\/mongod /{print $8}'

С этим вы, вероятно, можете сбросить grep и просто позволить awk выполнить поиск:

 ps aux |  awk '/bin\/mongod /{print $8}'

Это поиск строки"bin / mongod" в любом месте записи, а затем возвращает все, что находится на 8-й позиции для этой записи.

0 голосов
/ 21 мая 2018

Попытка использовать команды оболочки для получения этого пользователя, скорее всего, сломается.Можете ли вы запустить mongod, используя опцию PID?

/var/lib/mongodb-mms-automation/mongodb-linux-x86_64-3.4.13/bin/mongod -f /data/mdiag/data/automation-mongod.conf --pidfilepath /run/mongodb-pid.txt

Тогда вы можете просто запустить ps $(cat /run/mongodb-pid.txt), чтобы получить только тот процесс, который вам нужен.

0 голосов
/ 21 мая 2018

возможно отфильтровать агентов?

$ ps aux | awk '/mongod/ && !/agent/{print $1}'
...