Объединить две команды в одну команду

Как я могу объединить эти две команды ps aux | head -n1 ; ps aux | grep vlc в одну команду? Я попытался использовать команду tee (ps aux | tee >(head -n1) >(grep vlc)), но это не сработало!

1
задан 16 September 2015 в 12:04

4 ответа

Вы можете ps напечатать только идентификаторы процесса vlc с помощью -C.

Из man ps:

   -C cmdlist
          Select by command name.  This selects the processes whose
          executable name is given in cmdlist.

Пример:

$ ps u -C vlc
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
sylvain  12586  0.1  0.3 1076848 60908 ?       Sl   20:10   0:00 /usr/bin/vlc
8
ответ дан 23 May 2018 в 17:26

Использовать подстановку bash и cat:

cat <(ps aux | head -1) <(ps aux | grep '[v]lc')

Шаблон замещения процесса <() заменяет вывод команды внутри него как файла. cat будет просто конкатенировать файлы как обычно.

Пример:

$ cat <(ps aux | head -1) <(ps aux | grep '[v]lc')
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
chayan   26031  2.3  0.4 1098532 38556 pts/31  Sl   20:45   0:00 vlc
7
ответ дан 23 May 2018 в 17:26
  • 1
    Это делает то же самое, что и в вопросе OP, но добавляет бесполезный cat. – Dennis Williamson 16 September 2015 в 01:35
  • 2
    Вы делаете это наоборот, чем OP. Я думаю, что очевидно, что ОП хотел запустить только один экземпляр источника данных - ps aux. – pabouk 16 September 2015 в 19:14

Я бы использовал

ps aux | grep -E '^USER|vlc'

, вы можете добавить | grep -v grep, чтобы исключить строку grep

6
ответ дан 23 May 2018 в 17:26
  • 1
    я предлагаю искать что-то уникальное, например %MEM, %CPU, а не USER, поскольку USER сам является допустимым именем пользователя .. – heemayl 15 September 2015 в 17:52

Просто скажите ps, чтобы показывать только вывод для vlc:

$ ps -P $(pgrep vlc)
PID PSR TTY      STAT   TIME COMMAND
6728   2 pts/0    Sl     0:00 vlc

pgrep перечисляет PID любых процессов, имя которых соответствует указанному шаблону. Переключатель ps -P позволяет вам указывать информацию только для определенных PID. Объединение двух дает вам заголовок ps и только те строки, которые вам интересны.

6
ответ дан 23 May 2018 в 17:26

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

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