这两天突发奇想,是不是可以把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了
评论已关闭