Я создаю один из сценария оболочки, В котором, я должен отфильтровать процесс кроме собственного процесса grep. Если я использую:
echo "step1"
psout=`ps -aux | grep 'deluged'| grep '58846'`
echo "step2"
echo $psout
...
затем остановитесь, средства сценария step2 не отображаются! и $psout, выходной пробел. Я не делаю почему.
Если я пробующий использование за И и кроме цвета:
$ ps -aux | grep -e 'deluged' -e '58846' -v "color"
grep: color: No such file or directory
Если я пытающийся использовать Связку ключей:
ps -aux | grep -e "[d]eluged"."58846"
Blank OUTPUT
Короче говоря, Как найти процесс с единственным grep с И и кроме собственного процесса grep?
Вы сказали в комментариях, что Вы хотите знать, существует ли процесс или нет. Используйте pgrep -f 'deluge'
для этого. Или альтернативно pgrep -f 'deluge.*58846'
pgrep специально предназначен, чтобы просто дать Вам pid, если процесс будет существовать, и постарайтесь не анализировать проблемы с grep и PS, Если процесс не будет существовать, то у Вас будет пустой вывод
, можно также использовать sudo netstat -tulpan
и использовать grep, чтобы видеть, ли номер порта среди открытых
Можно использовать ps aux | grep processname | grep -v 'grep'
, первое grep
выбирает все строки, содержащие processname, второе grep
удаляет grep-строка от вывода
Проблема состоит в том, что -v
не кроме опции, это на самом деле означает, что соответствия инвертируются. Таким образом, Вы распечатаете все строки, которые не соответствуют 'затопленный' и '58846'.
сообщение об ошибке сгенерировано, поскольку -v
не принимает аргументы, таким образом, эти grep
команда пытается управлять на файле "цветом".
Для достижения желаемого результата необходимо использовать pgrep
команда, переданная по каналу к grep вместо этого:
pgrep -a 'deluged' | grep -e '58846'
Это произведет строку включая PID и полную команду для затопленного процесса с номером 58846 в команде.
, Если Вы хотите, чтобы переменная psout
содержала 0, или какая-либо другая выбранная строка, если команда успешна затем:
psout=$((pgrep -a deluged | grep 58846) > /dev/null && echo "0")
echo $psout
0