Я хочу выполнить скрипт start.sh на удаленном сервере, который запускает это:
nohup node server.js &
Наивно, я вызываю SSH следующим образом:
ssh myserver <<EOF
./start.sh &
EOF
запускает скрипт, но оставляет сеанс подключенным. Я хочу следовать этому шагу с помощью других команд в скрипте, так что это не хорошо.
Как я могу использовать SSH на удаленном компьютере, запустить команду nohup в фоновом режиме, а затем отключиться? Я полагаю, что сам я мог бы поставить процесс SSH на задний план, но это кажется неправильным.
Почему бы не просто tmux или экран и не сделать с ним? Например:
$ tmux new -s SessionNameHere
$ nohup /path/to/your/script.sh
Это практично, если это то, что будет непрерывным циклом или займет некоторое время. Вы можете отключиться от сеанса, и он останется активным.
Более короткая форма:
ssh host "(command 1; command 2; ...) &>/dev/null &"
Похоже, что сам bash выполняет отсоединение от терминала, поэтому нет необходимости в nohup. Я запускаю Ubuntu 14.04 x86_64, bash 4.3.11.