I'm attempting to create an ssh tunnel, spin it off into a background process, and write a pid file which I can later use to kill it. I CAN run ssh with
-f, but then I don't have a handle on its PID.
However, when I attempt to run the script below via nohup or setsid, control is never returned to the shell from which I attempt to daemonize the script.
#!/bin/sh while getopts ":v" flag; do case $flag in v|verbose) verbose=1;; :) echo "option -$lastflag requires an argument"; exit 1;; esac lastflag="$flag" shift $((OPTIND - 1)); OPTIND=1 done ssh -p '2222' -nNL '5984:localhost:5984' 'email@example.com' & pid=$! sleep 2; ps -p $pid >/dev/null 2>&1 || exit 1 echo $pid > "var/couchdb-tunnel.pid" wait
nohup script.sh setsid script.sh
How I do convince ssh (I assume) to let go of the terminal? Is there some other way I can accomplish what I want?