对懒人而言,screen 很简单(三板斧)

in #screen6 years ago

我们在终端运行程序时,退出终端或者终端异常断掉,这时候由于SIGHUP信号会导致我们的程序退出。


(图源 :https://en.wikipedia.org/wiki/GNU_Screen)

为了让终端退出(或断掉)后,程序能正常运行,一般情况我都使用nohup来运行程序,但是nohup有个问题,它将输出内容输出到nohup文件中,而这个文件还不是实时更新的,这样当一些问题发生时,我想看到实时的输出信息,那是看不到的。

当然,这个问题可以通过在程序中启用日志等方式解决,但是终归是多了一些麻烦,懒人表示拒绝费劲的方案。

那这时候,就该screen闪亮登场了!没错,screen就是懒人用于解决上述问题的极佳方案。

简介 & 安装

以下是我对screen 的理解。

screen 可以为在你的终端(A)上你虚拟出一个终端(V),你在这个终端(V)上进行操作、运行程序,终端(A)退出或断掉后,终端(V)不受影响,程序会继续运行。你可以通过重新登陆终端(A)来回到终端(V)上。

好吧,有点拗口,也未必准确,不过大致就是这样啦。

安装screen 很简单,我的系统(Ubuntu)下,执行下列指令即可:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screen

简单用法

可以通过如下命令查询帮助信息
screen --help

或者查看手册
man screen

但是其实没必要记那么多啦,我认为几个足矣

创建虚拟终端

直接键入
screen

或者使用
screen -S xxx
为虚拟终端起个名字

这个终端看起来和原来shell一般无二哦,这时候我们就可以在里边执行程序喽。

列出虚拟终端

假设我们的终端链接突然关闭或者断掉,我们重新爬上来,那么怎么找回我们原来的窗口呢?

答案是使用如下指令:
screen -ls


这就是我刚刚创建的虚拟终端

恢复连接

好了,我们找到了我们之前创建的终端,那么如何连上去呢?

答案也是超级简单
对于上述虚拟终端而言,执行如下指令即可:
screen -r 1862.oflyhigh

一下子就连回来喽,还停止在之前的界面。

其它

有了上述三把板斧,对于我来讲已经足够用了。当然,有时候可能需要多个虚拟终端,但是用法和之前的介绍一般无二。

唯一遇到过一点问题的是,虚拟终端在那,死活连不上,仔细查了一下,虚拟终端显示Attached,但实际上我那个窗口已经崩溃掉了,screen没及时更新状态,导致我连不上。

这时候我们只需执行类似如下指令即可:
screen -D -r 1862.oflyhigh

指令解释如下:

-D (-r) Detach and logout remote (and reattach here).

想了解更多或者用出更多花样的,看手册吧。

懒人的宗旨,够用即可!

Sort:  

O 哥,俺觉得 tmux 更好用 :D

我现在后台运行基本都用screen,ctrl a+d也是要记住的,另外我用

screen -r 1862

就可以恢复连接。
用了screen,再也不愁退出终端导致的后台程序退出了。

我都直接关窗口
Ctrl a+d 只是偶尔用😊

我倒是经常用,因为还要继续干其他事 😁

没有什么是再开一个窗口解决不了的😀

虽然我不是处女座,但是有处女情结,哈哈

还可以:

  1. 命令后面加个 &
  2. 先前端运行 命令,然后 ctrl+z, 然后 bg 放到后台。(jobs 列出后台的程序,fg 把后台的程序调到前台)
  3. 已赞。

后台运行避免不了SIGHUP信号,所以1,2的回复都是错的
3,已回赞

奇怪了,我一直就是认为 & 和 bg 是可以的,今天查了一下:

挖矿必备技能 :)

cn blog very nice follow you and vote thanks..

screen is indeed powerful, thanks

没看到做什么的,但是感觉很厉害。

Congratulations @oflyhigh! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You got your First payout
Award for the total payout received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.23
TRX 0.12
JST 0.029
BTC 66705.81
ETH 3626.46
USDT 1.00
SBD 2.93