SSH 注销后保持进程处于活动状态

Tho*_*mas 5 ssh gnu-screen

我试图测量无线 802.11s 网状连接上两台计算机之间的带宽、数据包丢失、延迟和抖动。

我正在尝试制作一个(我的第一个)bash 脚本,它可以执行以下操作:

  1. 通过 SSH 连接到另一台计算机并开始从服务 ( ptpdtcpdumpiperf)记录数据。
  2. 在我自己的计算机上启动相同的进程并开始记录数据。
  3. 一旦iperf我自己的电脑上传输结束后,它应该SSH到远程计算机并杀死服务。

这个想法是在 for 循环中运行这三个步骤,这会增加 iperf 为每次迭代传输的包大小并记录结果数据。

我知道如何通过ssh host@adress process.

然而,我对如何通过 SSH 和注销启动多个进程一无所知,因为一旦我注销,这些进程就会终止。我看过screennohup命令,但不知道如何在脚本中使用它们。

提前致谢!

编辑:

感谢到目前为止的所有帮助。

我现在让 nohup 开始工作,正如人们指出的那样,这很简单。所以现在我得到了:ssh host@adress nohup ./script.sh > /dev/null 2>&1 &在我的主电脑上的脚本中。这会在远程电脑上启动一个脚本就好了,然后注销 SSH。下一个问题是如何在远程 pc 上作为 sudo 执行脚本,因为 tcpdump 需要这样做。

尝试ssh host@adress **sudo** nohup ./script.sh > /dev/null 2>&1 &不起作用。

有任何想法吗?

编辑2:

如果有人遇到同样的问题,我找到了如何解决这个问题的指南:

http://www.pantz.org/software/ssh/using_ssh_and_sudo_instead_of_root_for_remote_commands.html

Iva*_*ica 7

使用screen.

一些有用的快捷键:

  • ctrl+a+c: 创建一个新的“窗口”
  • ctrl+a+n:转到下一个“窗口”
  • ctrl+a+p:转到上一个“窗口”
  • ctrl+a+d:分离会话(它继续运行)

分离后,用于screen -r恢复会话。还有screen -x如果屏幕会话没有分离,而是以其他方式进入后台(或者实际上仍在另一个终端上运行)。


qwe*_*eet 5

--helpnohup;

Usage: nohup COMMAND [ARG]...
  or:  nohup OPTION
Run COMMAND, ignoring hangup signals.
Run Code Online (Sandbox Code Playgroud)

只需&在您的nohup <whatever you want to run>命令中添加一个。这意味着除非你特意杀死衍生的nohup进程,否则它永远不会消失。

您可以使用screenor完全跳过 nohup tmux,我听说即使到远程主机的连接已断开,它也会保持进程运行(这是它相当棒的优势之一)。我不知道如何做到这一点,所以你需要在下载后通过man screen/来自己阅读man tmux


Hen*_*nes 2

您可以在程序前面添加nohup.

例如nohup myprogram &。这将启动程序并将所有输出发送到名为 nohup.out 的文件。当您注销时,它还会捕获 sigHUP。

另一个解决方案是运行screentmux