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



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



ps -ef -o pid,time,comm


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



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


любые советы ценятся о том, как сделать это правильно, Спасибо

640   5  

5 ответов:

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

pidof name

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

ps -p $(pidof name)

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

ps -o pid -C bash

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

pgrep bash
ps -fC PROCESSNAME

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

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

ps aux | grep simple-scan

пример:

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

извините, очень поздно на вечеринку, но я добавлю здесь, что если вы хотите захватить процессы с именами, идентичными вашей строке поиска, вы можете сделать

pgrep -x PROCESS_NAME

-x          Require an exact match of the process name, or argument list if -f is given.
             The default is to match any substring.

это чрезвычайно полезно, если ваш исходный процесс создал дочерние процессы (возможно, зомби при запросе), которые префикс имени исходного процесса в своем собственном имени, и вы пытаетесь исключить их из своих результатов. Есть много демонов UNIX, которые делают это. Мой пример ninja-dev-sync.

Comments

    Ничего не найдено.