2016-11-02 21 views
2

При печати процессы, я получаю:Разница в счет с ps | туалет

$ ps --no-headers 
12961 pts/0 00:00:00 bash 
16676 pts/0 00:00:00 ps 

Итак, их всего два процесса. Однако, когда я это делаю:

$ ps --no-headers | wc -l 
3 

Любая идея, почему?

ответ

3

Ваш процесс wc является третьим. Таким образом, подсчет правилен в обоих случаях, и все работает так, как ожидалось. Процесс подачи труб начинается сразу после входа, а не после того, как ps закончил и выплюнул его выход.

Если вы не хотите, чтобы это произошло, вы можете использовать временный файл.

ps --no-headers > /tmp/foo 
wc -l /tmp/foo 

будет снова производить два.

+0

Спасибо, это то, что я подозревал, но я очень новичок в команде bash и трубопроводах. –

 Смежные вопросы

  • Нет связанных вопросов^_^