Получение значения PID по SSH, не работает до выхода

#linux #bash #ssh #pid

#linux #bash #ssh #pid

Вопрос:

Я хотел бы начать mbuffer в режиме прослушивания на удаленном сервере, поэтому я

 ssh -f root@10.10.10.46 'mbuffer -4 -v 0 -q -I 8023 > /tmp/mtest amp; echo $!'
  

и он выводит PID число, которое я хотел бы сохранить $pidValue , но если я это сделаю

 pidValue=$(ssh -f 10....)
  

затем он не завершается, пока mbuffer процесс не завершится.

Вопрос

Как мне получить значение PID из mbuffer процесса?

Комментарии:

1. Я понимаю, что ваш процесс mbuffer создает его. Если нет, вам нужен способ получить его из процесса. переменная bash $$ здесь вам не поможет, может быть, есть способ создать основу для процесса и получить PID оттуда. fgrep или аналогичный, вероятно, слишком ненадежен, поскольку сложнее определить конкретный процесс, на который вы хотите сослаться, в случае, если он был запущен несколько раз. daemontools может предложить что-то полезное, но мне придется самому посмотреть справочную страницу

2. использование coproc тоже может быть способом: coproc mbuffer -4 -v 0 -q -I 8023; echo $COPROC_PID — это кажется немного излишним, но снижение сложности с помощью функционального неоптимального решения предпочтительнее, чем отсутствие решения, ИМХО

Ответ №1:

перед запуском процесса, который использует удаленный PID, отправьте удаленный файл в локальное хранилище, откуда вы будете обращаться с ним по своему усмотрению.

кажется, что эта конструкция:

 read -r var < <(ssh remote "echo test; sleep 5") ; echo $var
  

может дать вам результаты раньше, но это может зависеть от удаленного процесса, который вы запускаете. Попробуйте это.