Почему & ldquo; ps aux | grep x & rdquo; дать лучшие результаты, чем & ldquo; pgrep x & rdquo ;?

Есть действительно классная небольшая программа, которая помогает с этим, это называется «lxrandr»

Установить из программного обеспечения Ubuntu Software Center.

75
задан 28 June 2012 в 15:12

26 ответов

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 25 July 2018 в 18:16

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 31 July 2018 в 10:27

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 2 August 2018 в 00:30

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 4 August 2018 в 15:58

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 6 August 2018 в 00:37

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 7 August 2018 в 18:02

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 10 August 2018 в 06:50

ps aux включает полную командную строку (путь и параметры), в то время как pgrep просматривает только первые 15 символов имен исполняемого файла

ps aux возвращает полное командную строку каждого процесса, в то время как pgrep просматривает только имена исполняемых файлов.

Это означает, что вывод grepping ps aux будет соответствовать всему, что встречается в пути или параметры двоичного процесса: например, `

  • ps aux | grep php5 будет соответствовать /usr/share/php5/i-am-a-perl-script.pl
  • , но pgrep php5 не будет

Возьмите пример из моей системы - только мы будем использовать Python вместо php5:

  • ps aux | grep python дает нам:
izx       2348  0.0  0.7 514928 15644 ?        Sl   Jun24   0:00 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
izx       2444  0.0  0.9 547392 18864 ?        Sl   Jun24   0:01 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
root      2805  0.0  0.5  95436 12204 ?        S    Jun24   0:00 /usr/bin/python /usr/lib/system-service/system-service-d
izx       6272  0.0  2.9 664400 60320 ?        SNl  Jun24   1:16 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
  • Но pgrep python возвращает только 11729, который вы увидите из приведенного выше списка:
root     11729  0.0  0.9 180508 19516 ?        S    Jun25   0:00 python /usr/lib/software-properties/software-properties-dbus
62
ответ дан 15 August 2018 в 18:47
  • 1
    & quot; pgrep -l & quot; также усекает процесс до 15 символов, что, вероятно, является ошибкой, но так было всегда – Thorsen 28 June 2012 в 15:23
  • 2
    Ну, это в панели запуска, как вышестоящая ошибка с 2008 :) :) Команда top и ps truncate после 15 символов & quot; bugs.launchpad.net/ubuntu/+source/procps/+bug/295876 – Thorsen 28 June 2012 в 15:42
  • 3
    Ха, это объясняет это из комментария № 3: Это связано с тем, что некоторые процедуры проков получают имя команды из /proc/<pid>/stat, но не из /proc/<pid>/cmdline . Хорошо, @Thorsen, вы выиграли спрей от ошибок, это ошибка: P – ish 28 June 2012 в 15:57
  • 4
    Огромное спасибо. Согласно вашему ответу, pgrep - довольно неразумная команда, потому что она может в некоторых случаях игнорировать весь запущенный процесс (например, мой php5). Есть ли другая убедительная причина, по которой эта команда должна существовать? – xczzhh 28 June 2012 в 18:22
  • 5
    @xczzhh pgrep не является необоснованной командой. Работает хорошо и как задумано. Проблема в том, что вы просто упустили опцию, когда запускаете ее, вы не можете винить в этом pgrep. Использование ps aux | grep xxx ненадежно, поэтому нужны хаки, чтобы отфильтровать сам grep из выходных данных и может дать ложные срабатывания, как с ps aux | grep root. – jlliagre 2 August 2013 в 03:23

Команда ps aux | grep x дает «лучшие» результаты, чем pgrep x, по существу, потому что у вас отсутствует опция с последним.

Просто используйте параметр -f для pgrep для поиска в полном объеме командной строки, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки шаблонов, [ f11] просто не будет выбирать себя по дизайну.

Кроме того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выходе, pgrep не пострадает из этого недостатка.

Если вам нужны полные данные, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, который проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
64
ответ дан 25 May 2018 в 09:35
  • 1
    Также добавьте параметр -a (--list-full), если вы хотите увидеть полную командную строку, а не только pid. (У старого pgrep нет -a, сделал это на -fl .) – Beni Cherniavsky-Paskin 12 August 2014 в 13:51
  • 2
    Первоначальный вопрос задавал вопрос о различии, но это фактически дает тем из нас, кто пытается получить pgrep, чтобы хорошо сыграть в решении. +1 – 2rs2ts 26 June 2015 в 00:32
  • 3
    @ 2rs2ts Спасибо, я действительно отсутствовал, чтобы ответить на заданный вопрос. Исправлено. – jlliagre 26 June 2015 в 01:20
  • 4
    В некоторых случаях, когда программы изменяют /proc/self/cmdline как «описательный», pgrep -fa ruby не будут соответствовать, например. puma 3.3.0 (tcp://localhost:3000) [MIQ: Web Server Worker], в то время как "dumber" pgrep -a ruby будет. Не уверен, может ли последнее быть обмануто. – Beni Cherniavsky-Paskin 1 May 2016 в 15:47
  • 5
    @ BeniCherniavsky-Paskin Я предполагаю, что это мог быть комментарий к вопросу, поскольку он применяется как к pgrep, так и к ps. – Franklin Yu 7 July 2016 в 09:13
[F1]
1
ответ дан 25 May 2018 в 09:35
  • 1
    Это может ответить на вопрос, но, возможно, вы можете расширить свой ответ, чтобы объяснить, что делает эта команда в одной строке. – fossfreedom♦ 28 June 2012 в 23:46

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 25 July 2018 в 18:16
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 25 July 2018 в 18:16
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 31 July 2018 в 10:27

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 31 July 2018 в 10:27

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 2 August 2018 в 00:30
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 2 August 2018 в 00:30

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 4 August 2018 в 15:58
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 4 August 2018 в 15:58

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать приемы с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 6 August 2018 в 00:37
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 6 August 2018 в 00:37

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать приемы с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 7 August 2018 в 18:02
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 7 August 2018 в 18:02

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 10 August 2018 в 06:50
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 10 August 2018 в 06:50

Команда ps aux | grep x дает "лучшие" результаты, чем pgrep x, по сути, потому что у вас отсутствует опция с последним.

Просто используйте опцию -f для pgrep, чтобы найти полный командная строка, а не только имя процесса, которое является его поведением по умолчанию, например:

pgrep -f php5

В отличие от конструкции ps | grep, с которой вам нужно отфильтровать строку grep или использовать трюки с шаблонами, pgrep просто не выберет сам по себе.

Более того, если ваш шаблон появится в столбце ps USER, вы получите нежелательные процессы в выводе, pgrep не пострадает из этого недостатка.

Если вам нужны полные детали, а не только pids, вы можете использовать:

ps wup $(pgrep -f python)

, что проще и надежнее, чем

ps aux | grep python | grep -v grep

или

ps aux | grep p[y]thon
68
ответ дан 15 August 2018 в 18:47
  • 1
    Также добавьте опцию -a (--list-full), если вы хотите увидеть полную командную строку, а не только pid. (У более старой версии pgrep не было -a, делал это на -fl .) – Beni Cherniavsky-Paskin 12 August 2014 в 13:51
  • 2
    Первоначальный вопрос касался разницы, но на самом деле это дает тем из нас, кто пытается получить pgrep, хорошее решение. +1 – 2rs2ts 26 June 2015 в 00:32
  • 3
    @ 2rs2ts Спасибо, мне действительно не хватало, чтобы ответить на заданный вопрос. Исправлено сейчас. – jlliagre 26 June 2015 в 01:20
  • 4
    В некоторых случаях, когда программы изменяют /proc/self/cmdline на «описательный», pgrep -fa ruby не будет соответствовать, например. puma 3.3.0 (tcp://localhost:3000) [MIQ: Web Server Worker], в то время как «тупее» pgrep -a ruby будет. Не уверен, что последний может быть обманут. – Beni Cherniavsky-Paskin 1 May 2016 в 15:47
  • 5
    @ BeniCherniavsky-Paskin Полагаю, это мог бы быть комментарий к вопросу, поскольку он относится как к pgrep, так и к ps. – Franklin Yu 7 July 2016 в 09:13
diff <(ps aux|grep x) <(pgrep x) # :)
1
ответ дан 15 August 2018 в 18:47
  • 1
    Это может дать ответ на вопрос - но, возможно, вы можете расширить свой ответ, чтобы объяснить, что делает эта однострочная команда. – fossfreedom♦ 28 June 2012 в 23:46

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

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