Ответ 1
Ответ, приведенный выше, был в основном правильным, просто потребовалась небольшая настройка для различных параметров в Mac OSX.
ps -A | grep [f]irefox | awk '{print $1}'
Я пишу script для мониторинга CPU и MEM любого процесса. Для этого мне нужно отправить имя процесса, который будет отслеживаться как аргумент командной строки. Например.
./monitorscript <pname>
Мне нужно получить pid процесса в script, чтобы я мог использовать ps -p <pid>
внутри.
Как получить pid процесса, учитывая его имя процесса?
Я понимаю, что может быть несколько процессов с одним и тем же именем. Я просто хочу получить первый процесс из этого списка.
Ответ, приведенный выше, был в основном правильным, просто потребовалась небольшая настройка для различных параметров в Mac OSX.
ps -A | grep [f]irefox | awk '{print $1}'
Вы можете установить pidof
с Homebrew:
brew install pidof
pidof <process_name>
Вы можете использовать команду pgrep, как в следующем примере
$ pgrep Keychain\ Access
44186
Это самая короткая команда, которую я мог найти, которая выполняет задание:
ps -ax | awk '/[t]he_app_name/{print $1}'
Вставка скобок вокруг первой буквы останавливает awk от поиска самого awk-процесса.
Это решение более точно соответствует имени процесса:
ps -Ac -o pid,comm | awk '/^ *[0-9]+ Dropbox$/ {print $1}'
Это решение имеет следующие преимущества:
tail -f ~/Dropbox
~/Dropbox/foo.sh
~/DropboxUID.sh
Попробуйте следующее:
echo "$(ps -ceo pid=,comm= | awk '/firefox/ { print $1; exit }')"
Команда ps
производит вывод следующим образом: с PID в первом столбце и с исполняемым именем (только) во втором столбце:
bookworm% ps -ceo pid=,comm=
1 launchd
10 kextd
11 UserEventAgent
12 mDNSResponder
13 opendirectoryd
14 notifyd
15 configd
... который awk
обрабатывает, печатает первый столбец (pid) и выходит после первого совпадения.
Вы можете попробовать это
pid=$(ps -o pid=,comm= | grep -m1 $procname | cut -d' ' -f1)
Почему бы вам не запустить TOP и использовать параметры для сортировки по другим показателям, отличным от PID? Например, самый высокий используемый PID из CPU/MEM?
top -o cpu < --- сортирует все процессы с использованием ЦП