Выполнение команды в новом ударе окружает процесс

Я озирался, поскольку я думал бы, что это будет довольно общим вопросом, но ничто, кажется, не работает на меня.

В основном я пробую к SSH в устройство (Raspberry Pi) для выполнения процесса. Процесс node ./bin/www. Я записал a publish.sh сценарий, который делает несколько вещей перед этим, но когда я выполняю команду ssh user@hostname "cd <my-location>;node ./bin/www это соответственно запускает процесс в моей текущей оболочке удара.

То, что я надеюсь делать, открывают новую оболочку удара для выполнения той команды, поскольку тот процесс запустит веб-сервер.

Я пытался перенести мой ssh команда в bash -c 'ssh ...' но это все еще работает в том же окне оболочки что publish.sh сценарий был начат в. Я делаю что-то не так? Что точно я должен сделать в своем сценарии оболочки для выполнения команды в новом процессе оболочки удара?

Спасибо!

2
задан 8 March 2016 в 19:12

2 ответа

Можно использовать ssh с -n опция как,

ssh -Xn user@hostname <command> <argument>

, Использование -X является дополнительным для передачи X11. В Вашем случае,

ssh -n user@hostname node ./bin/www

Пример: Для открытия текстового файла (file.txt) в удаленной машине с gedit,

ssh -Xn user@hostname gedit file.txt

От man ssh

-n      A common trick is to use this to run X11 programs on a remote machine.  For example,
         ssh -n shadows.cs.hut.fi emacs & will start an emacs on shadows.cs.hut.fi, and the X11 connection will be
         automatically forwarded over an encrypted channel.  The ssh program will be put in the background.
6
ответ дан 2 December 2019 в 01:36

Сделать эту оболочку использования:

ssh -t master 'bash -ic "{ cd <my-location>; node ./bin/www ;} &"'

Немного строгое использование disown (nohup может использоваться также):

ssh -t master 'bash -ic "{ cd <my-location>; node ./bin/www ;} & disown"'
  • -t выделит псевдо TTY для включения управления заданиями

  • bash -i, сделает оболочку интерактивной, иначе соединение с ведущим устройством будет закрыто

В случае, можно уйти без команды, группирующейся {}:

ssh -t master 'bash -ic "cd <my-location>; node ./bin/www &"'
1
ответ дан 2 December 2019 в 01:36

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

Похожие вопросы: