我正在尝试创建一个ssh隧道,将其转换为后台进程,并编写一个pid文件,我以后可以使用它来杀死它.我可以用-f运行ssh,但是我没有处理它的PID.
但是,当我尝试通过nohup或setsid运行下面的脚本时,控件永远不会返回到我尝试守护脚本的shell.
#!/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' 'blah@foo.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
我如何说服ssh(我假设)放开终端?还有其他方法可以实现我想要的吗?