запускать неинтерактивную команду ssh в фоновом режиме немедленно приостанавливает работу - PullRequest
0 голосов
/ 13 сентября 2018

(1) Я могу выполнить следующую команду и получить вывод успешно

ssh server hostname

(2) Если я запускаю его в фоновом режиме (не для фона hotname, а для фона ssh)

ssh server hostname &

и не делай ничего, кроме ожидания, я могу получить вывод

(3) Однако, если до его завершения я набираю любую клавишу на терминале, задание немедленно переходит в состояние ожидания

[ZSH] suspended (tty input)    ssh server hostname
[BASH] Stopped                 ssh server hostname

В чем причина и как ее решить?

Я просто использую hostname в качестве примера. Вместо этого вы можете попробовать использовать sleep 5, если программа возвращается слишком быстро. Реальная программа, которую я хочу запустить, длится несколько минут.

1 Ответ

0 голосов
/ 13 сентября 2018

Используйте ssh -T -f server hostname в качестве страницы руководства:

-f requests ssh to go to background just before command execution.
This is useful if ssh is going to ask for passwords or
passphrases, but the user wants it in the background.  This
implies -n.  The recommended way to start X11 programs at a
remote site is with something like ssh -f host xterm.
If the ExitOnForwardFailure configuration option is set to “yes”,
then a client started with -f will wait for all remote port for-
wards to be successfully established before placing itself in the
background.

-T Disable pseudo-tty allocation.
...