I want to execute a script, start.sh
on a remote server which runs this:
nohup node server.js &
Naively, I call SSH like this:
ssh myserver <<EOF
./start.sh &
EOF
This starts the script, but leaves the session connected. I want to follow this step with other commands in a script, so that's no good.
How can I SSH to the remote machine, launch a nohup
command into the background, then disconnect? I suppose I could put the SSH process itself into the background, but that doesn't seem right.
Best Answer
You have already found the right way, here document.
Basically you can do it in either way:
Directly run the command{,s}
ssh user@host "nohup command1 > /dev/null 2>&1 &; nohup command2; command3"
OR
ssh user@host "$(nohup command1 > /dev/null 2>&1 &) && nohup command2 >> /path/to/log 2>&1 &"
Use Here document
The above 3 options should work for you.
In addition, take a look at the answer here: https://askubuntu.com/a/348921/70270