Подтвердить что ты не робот

Linux/Bash, используя ps -o для получения процесса по определенному имени?

Я пытаюсь использовать команду ps -o, чтобы получить только определенную информацию о процессах, соответствующих определенному имени. Тем не менее, у меня возникают некоторые проблемы, когда я пытаюсь использовать это даже для того, чтобы просто получить все процессы, например, он просто возвращает подмножество того, что вернет нормальный ps -ef (он не возвращает почти то же число результатов, чтобы он не возвращал все запущенные процессы)

ps -ef -o pid,time,comm

Я хочу попробовать что-то вроде этого (ниже), но включить ps -o, чтобы получить от него определенную информацию (только PID)

ps -ef |grep `whoami`| grep firefox-bin

Любые советы приветствуются, как это сделать должным образом, спасибо

4b9b3361

Ответ 1

Это даст вам PID процесса по имени:

pidof name

Что вы можете затем подключить к ps для более подробной информации:

ps -p $(pidof name)

Ответ 2

Это немного устарело, но я думаю, что вы хотите: ps -o pid -C PROCESS_NAME, например:

ps -o pid -C bash

EDIT: В зависимости от вида ожидаемого результата pgrep будет более элегантным. Это, насколько мне известно, является специфичным для Linux и приводит к аналогичной производительности, как указано выше. Например:

pgrep bash

Ответ 3

ps -fC PROCESSNAME

ps и grep - опасная комбинация - grep пытается совместить все на каждой строке (при этом все слишком распространено: grep -v grep hack). ps -C не использует grep, он использует таблицу процессов для точного соответствия. Таким образом, вы получите точный список с: ps -fC sh, который найдет каждый процесс с sh где-то на линии.

Ответ 4

Иногда вам нужно выполнить grep процесс по имени - в этом случае:

ps aux | grep simple-scan

Пример вывода:

simple-scan  1090  0.0  0.1   4248  1432 ?        S    Jun11   0:00