Запуск неинтерактивной команды ssh в фоновом режиме немедленно приостанавливает задание

(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, если программа возвращается слишком быстро. Сама программа, которую я хочу запустить, длится несколько минут.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
470
1

Ответы 1

Используйте 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.

Поправил свой ответ

JGK 16.10.2018 12:14

позволь мне попробовать завтра. Спасибо

doraemon 16.10.2018 12:34

не должен ли -T уже подразумеваться, когда я указываю команду для запуска? Также, как я понимаю, -f должен быть таким же, как и & в конце, за исключением случаев, когда требуется пароль. Здесь я уже установил ключи ssh, поэтому пароль для входа на сервер не требуется.

doraemon 24.10.2018 05:05

Другие вопросы по теме