(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
, если программа возвращается слишком быстро. Сама программа, которую я хочу запустить, длится несколько минут.
Используйте 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.
позволь мне попробовать завтра. Спасибо
не должен ли -T
уже подразумеваться, когда я указываю команду для запуска? Также, как я понимаю, -f
должен быть таким же, как и &
в конце, за исключением случаев, когда требуется пароль. Здесь я уже установил ключи ssh
, поэтому пароль для входа на сервер не требуется.
Поправил свой ответ