Joh*_*ino 111 command-line gnu-screen
我有一个程序在屏幕下运行。事实上,当我从会话中分离并检查 netstat 时,我可以看到程序仍在运行(这正是我想要的):
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
Run Code Online (Sandbox Code Playgroud)
现在我想重新连接到运行该进程的会话。所以我启动了一个新终端,然后输入 screen -r
$ screen -r
There are several suitable screens on:
5169.pts-2.teamviggy (05/31/2013 09:30:28 PM) (Detached)
4872.pts-2.teamviggy (05/31/2013 09:25:30 PM) (Detached)
4572.pts-2.teamviggy (05/31/2013 09:07:17 PM) (Detached)
4073.pts-2.teamviggy (05/31/2013 08:50:54 PM) (Detached)
3600.pts-2.teamviggy (05/31/2013 08:40:14 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Run Code Online (Sandbox Code Playgroud)
但是我怎么知道哪个会话是运行我创建的那个进程的呢?
现在我遇到的其中一份文件说:
“当你使用一个窗口时,输入 Ca A 给它一个名字。这个名字将用于窗口列表中,当你开始使用很多窗口时,它会帮助你记住你在每个窗口中所做的事情。 ”
问题是当我进入一个新的屏幕会话时,我尝试按 control+a A 并且没有任何反应。
Pau*_*aul 115
这里涉及两个级别的“列表”。首先,您在单个会话中有“窗口列表”,这就是 ctrl-A A 的用途;其次,有一个“会话列表”,它是您在问题中粘贴的内容,也可以使用screen -ls
.
您可以使用-S
参数自定义会话名称,否则它将使用您的主机名 (teamviggy),例如:
$ screen
Run Code Online (Sandbox Code Playgroud)
(ctrl-A d 分离)
$ screen -S myprogramrunningunderscreen
Run Code Online (Sandbox Code Playgroud)
(ctrl-A d 分离)
$ screen -ls
There are screens on:
4964.myprogramrunningunderscreen (05/31/2013 09:42:29 PM) (Detached)
4874.pts-1.creeper (05/31/2013 09:39:12 PM) (Detached)
2 Sockets in /var/run/screen/S-paul.
Run Code Online (Sandbox Code Playgroud)
作为奖励,您可以使用-S
稍后传递给的名称的明确缩写来重新连接:
screen -r myprog
Run Code Online (Sandbox Code Playgroud)
(我重新连接到myprogramrunningunderscreen
会话)
小智 66
我有一个screen -r
无法重新连接的情况。添加-d
标志,使其看起来像这样
screen -d -r
Run Code Online (Sandbox Code Playgroud)
为我工作。它分离了之前的屏幕并允许我重新连接。有关更多信息,请参阅手册页。
小智 18
一个简单的方法是简单地重新连接到任意屏幕
screen -r
Run Code Online (Sandbox Code Playgroud)
然后,一旦您运行 screen,您就可以通过点击Ctrl-A "
(即 control-A 后跟双引号)来获取所有活动屏幕的列表。然后,您可以一次选择一个活动屏幕并查看它们正在运行的内容。当然,为屏幕命名会更容易识别正确的屏幕。
只是我的两分钱
当我需要在多个集群中的多台机器上工作时,我倾向于使用以下组合:
screen -S clusterX
Run Code Online (Sandbox Code Playgroud)
这将创建新的屏幕会话,我可以在其中构建环境。
screen -dRR clusterX
Run Code Online (Sandbox Code Playgroud)
这是我随后用来重新附加到该屏幕会话的内容。漂亮的一点是,如果会话附加到其他地方,它会分离其他显示。此外,如果由于某种奇怪的原因没有会话,比如有人在我不知道的情况下重新启动了我的服务器,它会创建一个。最后。如果存在多个会话,则使用第一个会话。
不久前,此技巧对https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions表示赞赏。
编辑:
这里还有一些man screen
关于神秘参数的有用解释
-d -r Reattach a session and if necessary detach it first.
-d -R Reattach a session and if necessary detach or even create it
first.
-d -RR Reattach a session and if necessary detach or create it. Use
the first session if more than one session is available.
-D -r Reattach a session. If necessary detach and logout remotely
first.
Run Code Online (Sandbox Code Playgroud)
还有更多,-D
所以一定要检查man screen
归档时间: |
|
查看次数: |
326519 次 |
最近记录: |