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

<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 ответ1

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .