加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在不使用-f的情况下让ssh在后台运行?

发布时间:2020-12-15 18:30:17 所属栏目:安全 来源:网络整理
导读:我正在尝试创建一个ssh隧道,将其转换为后台进程,并编写一个pid文件,我以后可以使用它来杀死它.我可以用-f运行ssh,但是我没有处理它的PID. 但是,当我尝试通过nohup或setsid运行下面的脚本时,控件永远不会返回到我尝试守护脚本的shell. #!/bin/sh while getopt
我正在尝试创建一个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(我假设)放开终端?还有其他方法可以实现我想要的吗?

您正在寻找的内置shell已被拒绝,它会重新启动后台作业以初始化,以便脚本可以退出,在后台安全地离开它们.您可能希望将输出重定向到/ dev / null(或日志文件),以避免在启动脚本后在shell中输出.
ssh hostname 'command' &>/dev/null &
disown

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读