Идентификатор процесса с использованием ps aux

Вы не можете использовать bash, вы можете сделать это с помощью diff с --brief и --recursive:

$ diff -rq dir1 dir2 
Only in dir2: file2
Only in dir1: file1

В man diff включены обе опции:

-q, --brief сообщают только, когда файлы отличаются -r, --recursive рекурсивно сравнивать любые найденные подкаталоги
8
задан 17 November 2011 в 20:51

3 ответа

grep - это сам grepping. Попробуйте что-то вроде:

ps aux |grep [n]etbeans

, поэтому grep не показывает себя на выходе

13
ответ дан 25 May 2018 в 16:45
  • 1
    Это работает, но это не очень приятно. Вы также можете сделать ps aux | grep netbeans | grep -v grep. Но вместо этого используйте pgrep. – Martin Ueding 17 November 2011 в 21:11
  • 2
    @queueoverflow pgrep было бы неплохо, но оно соответствует только имени процесса. Первый шаблон может соответствовать любому столбцу ps. (Например, что-то работает под python или java, pgrep не будет grepping правильной вещи. То же самое с pkill и так далее ..) – Izkata 18 November 2011 в 01:06

Потому что это PID для процесса grep, который поставлен в очередь для запуска после ps aux.

4
ответ дан 25 May 2018 в 16:45
  • 1
    @ ovangle- blink Я никогда не думал об этом! : D спасибо! – P Ramesh 17 November 2011 в 21:04
  • 2
    Фактически, grep работает уже , когда выполняется ps aux. По мере запуска ps aux его вывод отправляется в исполняемый экземпляр grep в качестве входа. Если оболочка еще не выполнила grep, она не появлялась на выходе ps. – Eliah Kagan 3 March 2013 в 09:28

Никогда не используйте ps вместе с grep.

Скорее используйте killall netbeans, pkill netbeans, чтобы убить его. Для идентификатора процесса pgrep netbeans.

Подробнее о ps и grep.

3
ответ дан 25 May 2018 в 16:45
  • 1
    Это самый бесполезный совет, который я когда-либо слышал. Пока люди знают, как будет выглядеть процесс grep в выводе ps (он начинается с «grep»), тогда нет никакой опасности использовать эти два вместе. Я понимаю совет о том, чтобы не использовать kill в скрипте, но это не относится к делу. – ovangle 17 November 2011 в 21:25
  • 2
    И я думаю, что pgrep хуже, потому что он просто просит вас «убить $ (pgrep vi *)» или что-то невероятно опасное. – ovangle 17 November 2011 в 21:36
  • 3
    Это также самый бесполезный ответ на этой странице, как pgrep, pkill и т. Д., Только совпадение имени процесса - все, что интерпретируется (java, python, bash и т. Д.), Можно отличить только от других то же имя процесса с помощью ps. – Izkata 18 November 2011 в 02:57
  • 4
    @Izkata - использование -f для pgrep и pkill будет соответствовать всей командной строке. Иногда бывает полезно, когда вы пытаетесь сопоставить материал под интерпретаторами, как вы упоминаете. Это также хороший способ застрелить себя в ноге, так как он с радостью уничтожит все, что ссылается на ваш рисунок в любой точке своей командной строки :) – roadmr 19 November 2011 в 03:45

Другие вопросы по тегам:

Похожие вопросы: