这两天突发奇想,是不是可以把iperf3始终挂在后台,这样可以随时测试vps的速度。考虑过nohup和screen,后来决定用screen
6.1 安装screen

yum install screen

创建新的窗口

screen -S iperf

进入到screen的窗口,输入命令,xxx改为自己的端口

iperf3 -s xxx

按alt+a+d组合,将screen窗口离线,出现detached提示,说明已经后台运行中,只要不重启,应该就会一直运行

6.2 可以建立自启脚本,这样重启后也会运行,不过我没有过多研究
6.3 后续维护
screen -ls 查看目前信息

There is a screen on:
        8798.iperf       (Attached)
1 Socket in /var/run/screen/S-root.

其中8798是进程号,iperf就是创建的窗口名,之后我们用screen -r 8798或者screen -r test进入screen,重新连接会话,将任务调取至前台,若还是光标闪烁,表示任务未执行完成。但出现There is no screen to be resumed matching 8798.的提示,表示任务已经执行完成。但是有终端在连接会话。此时我们可以使用命令exit退出screen会话
6.4 杀死会话窗口
如果想关掉一个多余的窗口,有3种方法:

1)kill -9 threadnum 例如在上面的2637,kill -9 2637 即可杀死线程,当然就杀死了窗口

2)使用Ctrl a +k 杀死当前窗口和窗口中运行的程序

3)使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序

6.5 清除死去的窗口
当窗口被杀死后,再用screen -ls 可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口screen -wipe #自动清除死去的窗口

这样的窗明几净了~

同理还有nohup
用法:

nohup command > myout.file 2>&1 &

在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。
使用 jobs -l查看任务。
使用 fg %n 关闭。
6.6 有时候使用screen的时候,用Ctrl+a d暂时离开当前session时,想要用screen -r name重新连接该session时发现连不上,提示There is no screen to be resumed matching xxx。
输入screen -ls命令,发现有session处于Attached状态

解决办法:利用 screen -d xxx即可恢复。这时候再用 screen -r连接,就可以进入这个session了

评论已关闭