Запустите команду nohup по SSH, затем отключите

Я хочу выполнить скрипт start.sh на удаленном сервере, который запускает это:

nohup node server.js &

Наивно, я вызываю SSH следующим образом:

ssh myserver <<EOF
./start.sh &
EOF

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

Как я могу использовать SSH на удаленном компьютере, запустить команду nohup в фоновом режиме, а затем отключиться? Я полагаю, что сам я мог бы поставить процесс SSH на задний план, но это кажется неправильным.

1
задан 24 September 2013 в 03:53

2 ответа

Почему бы не просто tmux или экран и не сделать с ним? Например:

$ tmux new -s SessionNameHere
$ nohup /path/to/your/script.sh

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

3
ответ дан 24 May 2018 в 17:39
  • 1
    Не подходит для того, что я прошу, это единственная команда, которая может быть запущена на моем ноутбуке, которая будет подключаться, разворачивать команду, а затем отключать. – Steve Bennett 14 November 2014 в 02:24

Более короткая форма:

ssh host "(command 1; command 2; ...) &>/dev/null &"

Похоже, что сам bash выполняет отсоединение от терминала, поэтому нет необходимости в nohup. Я запускаю Ubuntu 14.04 x86_64, bash 4.3.11.

2
ответ дан 24 May 2018 в 17:39
  • 1
    Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутации , вы сможете прокомментировать любую запись . - Из обзора – David Foerster 28 February 2016 в 13:34
  • 2
    Кажется, это не работает. nohup; просто выводит жалобу на отсутствующие аргументы. – Steve Bennett 29 February 2016 в 08:32
  • 3
    @DavidFoerster, no Idea why, если command 1; command 2; ... представляет скрипт OP, который нужно запустить. OP также может использовать специальный случай этого ответа: ssh myserver ./start.sh &>/dev/null & – Alek_A 29 February 2016 в 14:31

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

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