Я хочу выполнить скрипт start.sh
на удаленном сервере, который выполняет это:
nohup node server.js &
Наивно я называю SSH так:
ssh myserver <<EOF
./start.sh &
EOF
Это запускает скрипт, но оставляет сеанс подключенным. Я хочу выполнить этот шаг с другими командами в сценарии, так что это не хорошо.
Как я могу SSH к удаленной машине, запустить nohup
команду в фоновом режиме, а затем отключить? Я полагаю, я мог бы поставить сам процесс SSH в фоновом режиме, но это не кажется правильным.
источник
> /dev/null
.> /dev/null 2>&1
это отбрасывать любой вывод stdout / stderr путем перенаправления на чёрную дыру lolnohup command2 >> /path/to/command2.log 2>&1 &
в терминале, а затем закрываю терминал, процесс теряется?Почему бы не просто tmux или screen и покончить с этим? Например:
Это практично, если это что-то, что будет постоянно зацикливаться или займет некоторое время, чтобы закончить. Вы можете отключиться от сеанса, и он останется активным.
источник
не работает в режиме демона, сохраняя сессию ssh подключенной. Ssh сессия вернется через 10 секунд, несмотря на то, что вы использовали nohup.
Причина в том, что удаленные stdout и stderr все еще подключены к вашему сеансу. Он поддерживает сессию ssh, nohup не помогает.
Этот:
возвращается немедленно. Он запускает удаленный процесс с nohup и немедленно выходит из сеанса ssh.
источник
Короче форма:
Похоже, что bash сам выполняет отсоединение от терминала, поэтому nohup не требуется. Я запускаю Ubuntu 14.04 x86_64, bash 4.3.11.
источник
nohup;
просто выводит жалобу на недостающие аргументы.command 1; command 2; ...
представляет сценарий OP хотят запустить. ОП также может использовать особый случай этого ответа:ssh myserver ./start.sh &>/dev/null &