проверка запущенного процесса

проверка запущенного процесса

Меня просят проверить и завершить процессы, с которыми я не знаком. Поэтому, когда я lsнахожусь в папке bin, я вижу несколько процессов .sh. Но я хочу знать, какой процесс связан с каким процессом tomcat.

Есть ли какой-нибудь простой способ это выяснить?

Пример startmyprocess1.sh, но когда я это делаю, ps -ef | grep startmyprocess1не возвращает запущенный процесс.

Но на самом деле имя запущенного процесса tomcat — myprocess, поэтому когда я это делаю ps -ef | grep myprocess, я могу видеть запущенный процесс. Чтобы узнать это, мне нужно спросить ответственного человека.

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

решение1

попробуйте это..,(не проверено)

ps -aux | grep "yourprocess"

Например,

ps -aux | grep "httpd"

решение2

Запуск myprocess из startmyprocess.sh делаетнетНазовите процесс в соответствии с базовым скриптом оболочки, поэтому ваш запрос ps -ef | grep startmyprocess1не возвращает результат.

Вот почему многие процессы, особенно демоны, записывают свой pid в файл, чтобы вы могли легко ссылаться на его процесс. Это можно сделать с помощью:

#!/bin/sh
pid=`myprocess`
echo $pid > /tmp/myprocess.pid

или вы можете запросить, $!какой из процессов содержит последний pid:

#!/bin/sh
myprocess
echo $! > /tmp/myprocess.pid

и запросить/вывести список процессов по их pid:

ps --pid $PID

решение3

Я думаю, что программное обеспечение типа «top» справится с этой задачей отлично.

Тип:

top

или

htop

решение4

Ответ от @invert многое объяснил, скрипт оболочки просто выполняет команды внутри него. Это значит, что вы не получите имя скрипта оболочки при выводе topили htop, который просто печатает /proc/$PID/cmdline каждой процедуры внутри скрипта оболочки.

Помимо использования echo $!after command для получения PID того, что вам нужно. Я бы хотел использовать pgrepcommand, когда мне это нужно (или pkill, если вы хотите убить его).

pgrep, pkill — поиск или сигнализация процессов на основе имени и других атрибутов

pgrep просто выполняет grep ваших аргументов через /proc/*/cmdline и выводит соответствующие PID. pkill совместим с kill, поэтому вы можете легко pkill любой процедуры с помощью cmdline.

Связанный контент