Я пытаюсь сделать команду ps aux только реальным процессом ssh-agent. Я заметил, что на некоторых дистрибутивах появляется нежелательный процесс, например, цвета команд и т. Д. Мне нужно сделать это, потому что мне нужно убедиться, что реальный процесс ssh-agent запущен в скрипте (не беспокойтесь, у меня уже есть цикл для него ...).Bash generic "ps aux" процесс по строгому имени
Так я понял, что нужно использовать что-то подобное в моей тестовой процедуре:
#!/bin/bash
ps aux | grep ssh-agent | grep -v grep | awk '{print $12}'
Мой вопрос: Будет ли AWK $ 12 работы на любом/Linux окр UNIX с помощью Баша с любыми версиями Баша?
Кроме того, если удалить "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' вам даст? – timss
Или даже 'ps aux | grep -f <(pgrep ssh-agent) '(: – Rubens
Мне нужно только имя PID и процесс, вот и все. Тем не менее, я запускаю этот скрипт на разных unix/linux. Я просто протестировал pgrep на AIX и, конечно же, это не Я предпочел бы, чтобы он был как можно более общим, используя только чистый grep. – trox