我在管理我工作的服务器时使用screen执行我的命令行任务。我通常运行小命令(主要是文件系统任务),但有时我运行更广泛的任务(如 DBA)。
这些任务的输出对我来说很重要。由于我将 Ubuntu 和 OS X(都是终端 Windows)用于我的任务,但我需要使用屏幕,因此滚动不可用,因此任何长输出(认为来自选择的 500 行表)对我来说都是不可见的。鼠标滚轮是不可能的。
当我说“滚动对我来说是不可见的”时,我的意思是:

我在考虑两种选择:
暂停(想想paginate)某个命令的输出。当输出开始时,它会让我阅读正在发生的事情,然后我按“Enter”,然后输出继续,直到没有更多显示。
在屏幕内滚动。但我不知道这是否可能。
当然,我不知道这些选项是否真的可行。如果是,如何实现?其他替代方案将受到欢迎。
从vi,如果您发出命令:sp,屏幕将分成两个“视图”,允许您从同一终端编辑多个文件。
同样,有没有办法在同一个终端中打开多个 shell?
我正在远程 Debian Jessie 服务器上工作。我启动了一个屏幕会话,开始运行一个脚本,然后由于网络超时而断开连接。
现在我再次登录并想恢复会话。
这是我在列出屏幕时看到的:
$ screen -ls
There are screens on:
    30608.pts-8.myserver    (11/03/2015 08:47:58 AM)    (Attached)
    21168.pts-0.myserver    (11/03/2015 05:29:24 AM)    (Attached)
    7006.pts-4.myserver (10/23/2015 09:05:45 AM)    (Detached)
    18228.pts-4.myserver    (10/21/2015 07:50:49 AM)    (Detached)
    17849.pts-0.myserver    (10/21/2015 07:43:53 AM)    (Detached)
5 Sockets in /var/run/screen/S-me.
Run Code Online (Sandbox Code Playgroud)
我似乎同时被两个屏幕所吸引。
现在我想恢复我之前运行的会话,以查看我的脚本的结果:
$ screen -r 30608.pts-8.myserver
There is a screen on:
    30608.pts-8.OpenPrescribing (11/03/2015 08:47:58 AM)    (Attached)
There is no screen to be resumed matching 30608.pts-8.myserver.
Run Code Online (Sandbox Code Playgroud)
为什么我不能重新连接?
我在另一个屏幕上有同样的问题:
$ screen -r 21168.pts-0.myserver
There is a screen on:
    21168.pts-0.OpenPrescribing (11/03/2015 …Run Code Online (Sandbox Code Playgroud) 浏览我发现的有关 tmux 的问题(我通常使用 GNU Screen)。我的问题是它们各自的优缺点。尤其是我找不到太多关于 tmux 的信息。
我在 SSH shell 上有一个正在运行的程序。我想暂停它并在我回来时能够取消暂停它的执行。
我想到的一种方法是将其所有权转移到屏幕外壳,从而使其在那里运行。
是否有不同的方式进行?
我不小心从现有的屏幕会话中附加到了第二个 GNU 屏幕会话,并且无法分离或向内部屏幕发出命令。我记得之前想过如何做到这一点,但完全忘记了,并希望将其作为参考。
一种方法是通过screen -dr从外壳执行操作来分离内部屏幕,但是从屏幕本身内部执行此操作的组合键是什么?
有没有办法为 unix 屏幕会话指定一个特定的名称?例如,假设我多次运行同一个程序,每个程序都有不同的参数,我想知道哪个是哪个。
当我键入时,screen -r我希望看到:要恢复的屏幕列表,或消息“没有要恢复的屏幕”。
今天,我看到有一个屏幕,但我仍然收到没有要恢复的屏幕的消息:
[root@server chiliNUT]# screen -r
There is a screen on:
        27863.pts-1.server     (Attached)
There is no screen to be resumed.
[root@server chiliNUT]# screen -rx 27863
[detached]
[root@server chiliNUT]# screen -r
There is a screen on:
        27863.pts-1.server     (Attached)
There is no screen to be resumed.
Run Code Online (Sandbox Code Playgroud)
为什么它报告屏幕已连接?我只是在上面的行([detached])上将其分离
不知何故,我设法关闭了一个屏幕窗口而没有屏幕“注意到”它,所以会话仍然被标记为attached. 这会阻止我重新连接到此会话。我能做什么?
me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.
Run Code Online (Sandbox Code Playgroud)
[更新]
最后我发现,会话并没有丢失,而是第一个会话的ID是0. 第二个会话具有 ID 1。