Я озирался, поскольку я думал бы, что это будет довольно общим вопросом, но ничто, кажется, не работает на меня.
В основном я пробую к SSH в устройство (Raspberry Pi) для выполнения процесса. Процесс node ./bin/www
. Я записал a publish.sh
сценарий, который делает несколько вещей перед этим, но когда я выполняю команду ssh user@hostname "cd <my-location>;node ./bin/www
это соответственно запускает процесс в моей текущей оболочке удара.
То, что я надеюсь делать, открывают новую оболочку удара для выполнения той команды, поскольку тот процесс запустит веб-сервер.
Я пытался перенести мой ssh
команда в bash -c 'ssh ...'
но это все еще работает в том же окне оболочки что publish.sh
сценарий был начат в. Я делаю что-то не так? Что точно я должен сделать в своем сценарии оболочки для выполнения команды в новом процессе оболочки удара?
Спасибо!
Можно использовать 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.
Сделать эту оболочку использования:
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 &"'