对懒人而言,screen 很简单(三板斧)
我们在终端运行程序时,退出终端或者终端异常断掉,这时候由于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).
想了解更多或者用出更多花样的,看手册吧。
懒人的宗旨,够用即可!
O 哥,俺觉得 tmux 更好用 :D
感谢分享
tmux+tmux ressurect plugin
https://github.com/tmux-plugins/tmux-resurrect
我现在后台运行基本都用screen,ctrl a+d也是要记住的,另外我用
就可以恢复连接。
用了screen,再也不愁退出终端导致的后台程序退出了。
我都直接关窗口
Ctrl a+d 只是偶尔用😊
我倒是经常用,因为还要继续干其他事 😁
没有什么是再开一个窗口解决不了的😀
虽然我不是处女座,但是有处女情结,哈哈
还可以:
后台运行避免不了SIGHUP信号,所以1,2的回复都是错的
3,已回赞
奇怪了,我一直就是认为 & 和 bg 是可以的,今天查了一下:
说了其实是可以通过 disown 这个命令实现同样的 nohup...
但是很奇怪是我并没有运行第三步,实际上一直都没有问题。难道我开了两个窗口,只要有一个开着就没事?
挖矿必备技能 :)
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