Если я запускаю следующую команду из командной строки, он работает, как ожидалось: -Вызов команды Баша с -c и централизованной строкой для AWK
ps -eo pid,command | grep -v bash | grep syslogd | awk '{print $1}'
Выход только PID процесса SyslogD. Согласно страницам man для bash, использование аргумента -c позволяет передавать строку команд. Итак, я попытался это: -
/bin/bash -c "ps -eo pid,command | grep -v bash | grep syslogd | awk '{print $1}'"
Вместо печати только Pid процесса SyslogD, путь к SyslogD также напечатал: -
19 /usr/sbin/syslogd
Может кто-нибудь объяснить, почему это и если он можно вызвать команду с помощью bash таким образом, чтобы она действовала так же, как при непосредственном вызове команд и только распечатке pid процесса?
Как и в сторону, правильный способ написать это 'ps -eo pid, команда | awk '!/bash/&&/syslogd/{print $ 1}' '. См. Также http://partmaps.org/era/unix/award.html#grep – tripleee
@ отличное имя (!) И спасибо; O) – TheDarkKnight