Я пытаюсь получить команду ps aux, отображающую только реальный процесс ssh-agent. Я заметил, что в некоторых дистрибутивах у меня появляются нежелательные процессы, такие как цвета команд и тому подобное. Мне нужно сделать это, потому что мне нужно убедиться, что реальный процесс ssh-agent запущен в сценарии (не беспокойтесь, у меня уже есть цикл для этого...).
Итак, я понял, что мне нужно использовать что-то подобное в моей тестовой программе:
#!/bin/bash
ps aux | grep ssh-agent | grep -v grep | awk '{print $12}'
Мой вопрос: будет ли работать awk $12 на любой среде unix/linux, использующей bash, с любыми версиями bash?
Кроме того, если я удалю «grep -v grep» и сделаю это:
ps aux | grep ssh-agent | awk '{print $12}'
вывод:
ssh-agent
ssh-agent
В настоящее время:
ps aux | grep ssh-agent
вывод:
foo 18153478 0.0 0.0 536 844 - A Apr 25 0:00 ssh-agent
foo 31260886 0.0 0.0 252 264 pts/0 A 22:38:41 0:00 grep ssh-agent
Это означает, что пробел между «grep ssh-agent» интерпретируется командой awk как разделитель. Можно ли это преодолеть? Я уже пытался использовать разделитель табуляции, но это не так. Кажется, что разделителем команды являются простые символы пробела. Можно ли применить разделители табуляции для вывода команды «ps»?
Есть идеи?
pgrep ssh-agent
или вам действительно нужна информация, которую вам предоставитps
? - person timss   schedule 10.05.2013ps aux | grep -f <(pgrep ssh-agent)
(: - person Rubens   schedule 10.05.2013grep [s]sh-agent
или аналогичного, чтобы предотвратить самосопоставление, тем самым избегаяgrep -v grep
. - person martin clayton   schedule 10.05.2013-o
дляps
, вы можете использовать его для форматирования вывода, чтобы получить то, что вам нужно. - person martin clayton   schedule 10.05.2013