在bash脚本中退出ssh会话后,保持进程在远程计算机上运行

时间:2018-01-26 12:23:20

标签: linux bash ssh

我有一个bash脚本,我通过ssh登录到远程机器并运行iperf,然后注销并在本地执行其他操作。我希望iperf在bash脚本注销后继续运行。我尝试过nohup,disown和setsid,但是当我在bash脚本中使用它们时,它们似乎无法工作。我也试过在另一个脚本中运行iperf,这个脚本也没有用。

这里是使用nohup示例的脚本部分:

bad input shape (1, 10)

1 个答案:

答案 0 :(得分:2)

您需要将stderr ssh root@10.101.10.35 'iperf -s -B 192.168.99.1 < /dev/null > /tmp/iperf_combined.log 2>&1 &' stdin重定向到其他地方而非您的终端,如下所示:

/dev/null

stdout取自stderr(未输入任何内容)

/tmp/iperf_combined.logssh转到ssh -T root@10.101.10.35 << EOF iperf -s -B 192.168.99.1 < /dev/null > /tmp/iperf_combined_1.log 2>&1 & iperf -s -B random_ip2 < /dev/null > /tmp/iperf_combined_2.log 2>&1 & EOF

该进程将在远程计算机上运行,​​直到您手动终止它或直到脚本/命令将自行退出。

编辑(作为对海报评论的回复):

如果要在同一ssh会话中运行多个命令,可以使用:

-T      Disable pseudo-tty allocation.

根据psqudo-tty手册页:

jQuery.noConflict();

(function ($) {
    $(document).ready(function() {
        //Vertically center graphic on page load
        setPositionOfBannerText();

        //Check screensize to see if graphic needs vertically centered again
        $(window).resize(setPositionOfBannerText);

        function setPositionOfBannerText() {
            console.log("setting banner position");//this shows on in console on page load consistently
            var bannerHeight = $('.container-hero-subpage').height();
            var bannerTextHeight = $('.Banner-Text').height();
            $('.Banner-Text').css('margin-top', (bannerHeight - bannerTextHeight) / 2);
        }
    });
}(jQuery));

关于 <div class="container container-hero-subpage" style="background-image: url(pick an image)"> <div class="subpage-banner-text-container"> <img class="Banner-Text" src="pick an image"> </div> </div> here

的详细说明