前言
之前我想在我的服务器上执行一个长时间运行的任务,我使用x &挂在后台,并使用nohup x &请求shell结束后不清理命令,并且为防止父进程结束,又使用了setsid x &置父程序id为1。SSH会话被终止,但我再次连上去时使用jobs并没有出现我之前的程序。
所幸,我发现了linux上的screen程序,非常好用。
介绍
“Screen or GNU Screen is a terminal multiplexer.“也就是说Screen是一款终端复用器。我们可以开始一个screen会话,然后在里面可以打开任意数量的虚拟终端。在Screen中运行的进程将在其窗口不可见时继续运行,即使断开SSH连接。
至于安装就很简单,在Centos上只需要运行:
sudo yum install screen
使用
对于screen你需要命名,以区分你的任务。
screen -S session_name
而使用:
screen -ls
则可以查看screen session的id,以便后面的使用。
使用:
screen -r id
则重新进入之前创建的session里面。
具体命令
我们进入screen session后,可以使用 Ctr+a 然后 ?查看screen的命令:
非常的清晰
一般我们会使用:
detach:ctrl+a d
kill: ctrl+a k
history: ctrl+a { }
clear:ctrl+a C
windowslist:ctrl+a " 列出所有窗口。
split: ctrl+a S 将当前区域水平分割成两个区域。
other: ctrl+a ctrl+a 在当前窗口和以前窗口之间切换。
而0-9在screen里面则可以跳转到session窗口。
screen 设置
当screen开始时,它会从/etc/screenrc和~/.screenrc读取它的设置参数。我们可以根据这两个文件更改默认screen设置。
如果没有~/.screenrc
的话,可以创建,用来自定义配置。
以上就是screen的介绍和使用内容。
结束
当我们想要kill一个screen的时候,可以直接用这个命令:
screen -S session_name -X quit
此外,深入的学习请点击screen指南