Возможный дубликат:
grep -c дает противоречивые результаты

Я пытаюсь определить количество процессов, которые выполняются с помощью следующей командной строки:

ps aux | grep -c 'Xvfb :1'

Когда процесс "fiji:1" не запущен, я иногда получаю значение 0, а иногда значение 1. Запуск команды grep иногда считается, а иногда нет.

Запуск командной строки ниже дает последовательно нулевые процессы:

ps aux | grep 'fiji :1' | grep -v grep

Подобно добавлению grep -v grep , есть ли способ заставить "grep -c" подсчитать количество запущенных процессов минус команда grep?

ps aux | grep Xvfb gives this:

60293 17250 0.0 0.1 45052 7016 pts/4 S Sep30 0:02 Xvfb :4 -screen 0 1600x1200x16 
60293 17373 0.0 0.0 40704 2964 pts/0 S Sep30 0:02 Xvfb :5 -screen 0 800x600x16 
60293 29695 0.0 0.1 42996 6112 pts/6 S 13:00 0:00 Xvfb :3 -screen 0 1600x1200x16 
60293 31650 0.0 0.0 61160 756 pts/6 R+ 13:58 0:00 grep Xvfb

pgrep 'Xvfb :3' | wc -l не совсем работает, потому что возвращает 0, когда на самом деле запущен 1 процесс.

pgrep 'Xvfb' | wc -l возвращает 3, что правильно.

Я также попробовал pgrep 'Xvfb :3 -screen 0 1600x1200x16' | wc -l и он неправильно вернул 0.

Похоже, pgrep не нравится пробел в Xvfb :3?

0