Я хочу передать результат команды как значение аргумента следующей команды.Я знаю, что есть xargs
и канал |
, но это не очень помогает.
Я хочу запустить команду tail -f --pid=$REMOTE_PID logs
, где REMOTE_PID - PID программы, которая выполняется на Удаленный сервер. Он записывает цифры от 1 до 30 в файл журнала и sleep(1)
.Поэтому я хочу, чтобы одновременно отображались цифры, поступающие из файла журнала на локальном компьютере. Все это делается в сценарии, а не вручную !!
Вот что я сделал до сих пор, но не могу получить правильный PID.В первой команде я ставлю &, чтобы освободить оболочку, чтобы я мог запустить следующую команду
ssh user@host 'nohup sh showdigits.sh' &
ssh user@host 'PID=`pgrep -f showdigits.sh` && tail --pid=$PID -f logs'
Эти команды работают, но я получаю несколько PID, прежде чем выбрать правильный:
tail: не может открыть '8087' для чтения: нет такого файла или каталога
tail: не может открыть '8109' для чтения: нет такого файла или каталога
==> logs <== <br>1
2
3
...
Я попробовал другой код:
ssh user@host 'nohup sh showdigits.sh' &
ssh user@host "ps -ef | awk '/[s]howdigits.sh/{print $2}' > pid && tail --pid=`cat pid` -f logs"
Я получаю эту ошибку:
cat: pid: Нет такого файла или каталога
tail:: неверный PID
Я хочу иметь только один PID скрипта showdigits.sh
и передать его в tail.Может быть, есть более простое решение?
Спасибо