Linux удаленно запускает скрипты, экран зависает и не возвращается к элементам управления

Linux удаленно запускает скрипты, экран зависает и не возвращается к элементам управления

У меня есть скрипт на сервере. Если я запускаю его на сервере локально, то проблем нет.

<user@server> ~ % restart_forms A 
forms [A] is Restarting
<user@server> ~ %

Однако, если я запущу его удаленно с клиента (другой машины Linux), то это будет выглядеть так:

<user@client> ~ % ssh server /path/restart_forms A
forms [A] is Restarting

Экран зависает и не возвращается к элементам управления; мне приходится каждый раз нажимать ctrl+c, чтобы завершить скрипт, а затем возвращаться к элементам управления.

Я знаю, что это, вероятно, связано с stdin, stdout и stderr. На данный момент я попытался запустить этот фон

<user@client> ~ % ssh server /path/restart_forms A &

Также пробовал

<user@client> ~ % ssh server /path/restart_forms A >/dev/null 2>&1 &

Все вышеперечисленное не работает и приводит к одной и той же проблеме. (Я не могу создать экран для запуска по некоторым деловым причинам)

Есть у кого-нибудь идеи? Спасибо.

Обновление: Когда я пробую ps -ef | grep restart_formsв клиенте, я вижу, что этот скрипт все еще выполняется в клиенте. Так быть не должно.

решение1

Если вам нужно запустить скрипт, который не завершается сам по себе, и вы хотите запустить его над чем-то вроде , sshлучше всего запустить его в сеансе screenили tmux, чтобы его терминал был отделен от того, который sshиспользует. Таким образом, sshбудет свободно выйти после вызова скрипта, и скрипт может продолжаться столько, сколько захочет.

Для этого сделайте следующее:

ssh <user>@<host> screen -d -m restart_forms A

Связанный контент