远程使用服务器资源的时候,运行任务通常都是提交给集群统一调度。但有时候也会选择本地化执行,如果这个任务需要运行很长的时间,一般会使用nohup命令将任务挂后台运行,这样即使在任务没有结束时退出服务器也不会影响任务继续在后台运行。
那如何任务没有打包成脚本,不方便nohup挂后台,而是在交互式使用一些工具,比如用R/python控制台处理数据,这时如果遇到突发情况导致链接断开,那得有多无语!那有没有办法可以避免这样的尴尬呢?答案是肯定的,这个时候就轮到screen命令闪亮登场了。
screen是一个全屏窗口管理器,简单来说,它不像nohup将任务挂后台运行,而是虚拟一个会话 (好像一个bash终端) 来运行任务,在这个虚拟会话里又可以开打多个窗口 (如上图所展示) 来运行不同的任务。最重要的是虚拟的会话可以像nuhup一样防止挂断,并且可以手动在会话与原先的bash界面来回切换。用这个命令运行交互式的程序,就不用担心意外的断开了,因为可以随时可以恢复之前的会话,除非服务器崩了。
开启会话,可以起个名字,方便管理:
screen -S <session name> [cmd [args]]
退出会话 (detach回到bash),字符a不能少,否则会话直接被关闭:
ctrl + a +d
恢复会话:
screen -r <session name>
关闭会话:
screen -S <session name> -X quit
其他复杂的功能这里就不介绍了。






网友评论