Что |
символ означает в sudo ps -ef | grep processname
команде?
Также может кто-нибудь объяснить, пожалуйста, эту команду? Я использовал эту команду только для получения PID и уничтожения этого процесса, но я также видел, sudo ps -ef | grep processname | grep -v grep
и у меня сложилось впечатление, что -v grep
это похоже на убийство предыдущего сгенерированного PID для grep
. Если это так, как это работает?
command-line
bash
process
Аамир
источник
источник
sudo
бежатьps -ef
. Также обычная хитрость, чтобы избежать третьей команды, заключает в себе символ имени процесса в квадратных скобках:ps -ef | grep [p]rocessname
ps -ef | grep '[p]rocessname'
grep [p]rocessname
, вы говорите оболочке искать файл в текущем каталоге с именемprocessname
и заменять шаблон именем этого файла. Если именованный файл неprocessname
существует, оболочка может передать шаблон буквально в grep. Но это зависит от ваших настроек. Так что ваша версия сломается , если файл с именемprocessname
существует , или если любой из следующих вариантов оболочки включенfailglob
,nullglob
,nocaseglob
.Ответы:
Сначала он запускается
sudo ps -ef
и передает вывод второй команде.Вторая команда фильтрует все строки, содержащие слово «имя процесса».
ps -ef | grep processname | grep -v grep
перечисляет все строки, содержащиеprocessname
и не содержащиеgrep
.В соответствии с
man grep
В соответствии с
man ps
Вы можете комбинировать параметры
-ef
средствами так же, как-e -f
.Фактически
ps -ef | grep processname
перечислите все вхождения процесса, названногоprocessname
.источник
ps -ef
делает именно ??| grep processName
в терминале, мы также получаем вывод grep, который сам по себе является процессом, поэтому -v убивает этот выводЭто называется
pipe
. Это дает выходные данные первой команды как входные данные для второй команды.В вашем случае это означает:
результат
sudo ps -ef
подается как входgrep processname
sudo ps -ef
:Здесь перечислены все запущенные процессы. Введите
man ps
термин для получения дополнительной информации.grep processname
Итак, этот список процессов подается в grep, который просто ищет программу, определенную
programname
.пример
Печатая
sudo ps -ef | grep firefox
в моем терминале возвращает:источник
-v grep
функционирует ..grep -v
используется. Отфильтровать последнюю строку.grep -v
Фильтрует OUT строки, содержащие шаблон.Я попытаюсь ответить на это прямым практическим ответом:
Труба
|
позволяет делать потрясающие вещи в оболочке! Это единственный оператор, который я считаю наиболее полезным и мощным.как насчет подсчета файлов в каталоге? просто:
ls | wc -l
..направить вывод параметраls
towc
wit-l
для строкили подсчет строк в файле?
Что делать, если я хочу что-то искать? 'grep' может искать вхождения строк:
вы просто перенаправляете вывод команды слева от канала в команду справа от канала.
еще один уровень: как часто что-то происходит в файле?
Вы можете использовать | почти для всего :)
источник
grep -c "aRandomStringYouWantToSearchFor" "someFile"
;-)kill $(ps aux | awk '/someString/ { print $2}' | sed -n '1p')
нет, потому что это не будет служить цели вообще.Другие ответы уже ответили на ваш главный вопрос, но я бы хотел ответить и на это;
В общем, уничтожение процесса часто является излишним и оставляет ресурсы, выделенные процессом, в грязном состоянии, его часто можно просто прекратить ;
Кроме того, просто используйте,
pkill
чтобы убить / завершить процесс.pkill
поддерживает указание точного имени процесса или регулярного выражения:источник
kill -9
если вы не знаете, что никакой другой сигнал не будет работать. См. Также iki.fi/era/unix/award.html#killkill
делает. Указание-9
является дополнительной и чаще всего катастрофической дополнительной опцией.kill
, ясно и просто. Если не принимать-9
во внимание ни одну терминологию, ваш ответ не должен советовать людям использовать эту опцию, если вы не указали грубую оговорку.