У меня есть скрипт на сервере. Если я запускаю его на сервере локально, то проблем нет.
<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