screen是一个linux下实现多屏操作的工具,可以实现会话保持。说得通俗些,举个例子:假设你通过终端1登录了服务器A,在上面执行了一个耗时很长的sftp下载任务,并放到了后台。然后上面执行了一个耗时很长的awk脚本,前台执行。同时通过终端2登录了服务器B,在上面执行了一个vi命令,在编辑文件。

然后,你在关浏览器时一不小心把终端关了,然后三个任务同时都将被中断。因为关闭终端将触发SIGHUP信号,默认行为是终止程序。放在后台也一样,除非用nohup命令指定忽略SIGHUP信号。

screen能解决这些问题,首先即便中途各种异常退出物理终端,任务亦不会终止;其次不用开多终端,一个物理终端可以挂多个屏幕,通过简单的命令进行切换。通过~/.screenrc来控制其行为。

我的配置:

hardstatus alwayslastline '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W} %c %{g}]'
startup_message off   # default: on
msgwait 1
altscreen on
bindkey -k k5 title #设置每个屏幕的名称
bindkey -k k3 prev  #翻到前一个屏幕
bindkey -k k4 next  #翻到后一个屏幕

秦光跃
144 声望7 粉丝

万物之始,大道至简,衍化至繁