我经常在一个屏幕内打开 5 个以上的屏幕来监视服务器,并且在系统重新启动后重新设置它们有点烦人。通常有 1 个顶级进程和一些用于查看日志文件的尾部。
有没有办法让屏幕自动打开多个屏幕,并在每个屏幕中执行某些命令?
我最近继承了一些系统管理任务,并尝试使用屏幕来解决我的问题。按照前一个人留下的方式,有四个屏幕会话正在运行,其中一些会话中有两个或三个窗口正在运行。
看来他没有使用任何特定的约定,所以我问你:是让每个进程都在自己的屏幕会话中更好,还是将类似的进程分组到单个屏幕中的窗口中更好?或者完全不同的东西?
我最近更新了服务器上的屏幕,出于某种原因,以普通用户身份登录时,我无法再创建屏幕会话。如果我运行 sudo screen 它就可以了。
这可能是某个地方的权限错误,但我找不到它。
任何帮助将不胜感激。
更新:
我在 Ubuntu Server 9.04 中使用 apt-get upgrade 升级了屏幕,我刚刚删除并清除了它,然后重新安装。它仍然允许我以 root 用户身份创建一个屏幕,但会以普通用户身份创建一个空白屏幕。我尝试从源代码构建,并在执行过程中产生了大量错误(太多无法在此处发布)。有趣的是,我可以创建一个屏幕,但是当我去的时候,我在屏幕上创建了另一个屏幕(外壳?),它是空白的。尝试在 4.0.3 上从源代码构建
我经常启动一个屏幕会话,发出“:multiuser on”命令,然后发出“:acladd someuser”。
有什么方法可以通过单个 shell 命令获得一个屏幕会话以自动启动这两个命令吗?
谢谢!
man screen:
Screen is a full-screen window manager that multiplexes a physical ter?
minal between several processes (typically interactive shells). Each
virtual terminal provides the functions of a DEC VT100 terminal and, in
addition, several control functions from the ISO 6429 (ECMA 48, ANSI
X3.64) and ISO 2022 standards (e.g. insert/delete line and support for
multiple character sets). There is a scrollback history buffer for
each virtual terminal and a copy-and-paste mechanism that allows moving
text regions between windows. …Run Code Online (Sandbox Code Playgroud) 我在屏幕上运行 perl 脚本(我可以登录并检查调试输出)。脚本逻辑中的任何内容都不能杀死它。
我是仅有的两个可以访问服务器的人之一,另一个人发誓不是他(我们都有很多钱可以继续顺利运行)。我没有理由相信某些黑客已经设法获得了一个 shell 或类似的东西。我几乎没有理由怀疑主机操作的管理员(带宽/cpu 方面,这个脚本非常轻量级)。
Screen 继续运行,但在 perl 脚本的输出结束时,我看到“Killed”并且它已回落到提示。我如何去测试什么是该死的东西?
我检查了 crontab,里面没有任何东西可以杀死随机/非随机进程。任何日志文件中都没有任何提示。它将运行 2 到 8 小时,看起来(在我家里的 Mac 上,它可以运行 24 小时以上没有问题)。服务器正在运行 Ubuntu 版本,如果重要的话,我可以查一下。
我有一个正在运行的屏幕会话,我想退出,但我不能,因为当我尝试重新连接时,我收到一条错误消息,说它无法打开我的终端。我确信我可以杀死守护进程或其他什么,但我需要学习“正确”的方式,以及实际发生的事情。
daniel@DELIRIUM:~/server1/bin/plugins$ screen -list
There is a screen on:
1424.pts-0.DELIRIUM (06/23/2011 01:18:14 PM) (Detached)
1 Socket in /var/run/screen/S-daniel.
daniel@DELIRIUM:~/server1/bin/plugins$ screen -r 1424
Cannot open your terminal '/dev/pts/0' - please check.
Run Code Online (Sandbox Code Playgroud)
另外,什么是插座?你越能把它弄糊涂就越好。
我是屏幕新手,我正在尝试弄清楚如何从会话中分离并稍后重新连接。到目前为止,我已经尝试过:
$screen
C-a z (within screen to detach)
$screen -r
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但是当我C-a z再次分离时,我看到 2 个屏幕进程正在运行:
$ps
PID TTY TIME CMD
33145 ttys000 0:00.06 -bash
33176 ttys000 0:00.01 screen
33407 ttys000 0:00.01 screen -r
Run Code Online (Sandbox Code Playgroud)
如果我再次分离并重新连接,我会得到另一个屏幕过程,等等......
那么,如何在不产生新进程的情况下重新连接到屏幕会话?
谢谢!
我有一个 ssh 脚本,它在远程系统上使用 ssh 密钥转发来在更远程的系统中执行操作。
我必须在屏幕会话中运行脚本,以便我可以从中分离。但是需要存在通过 ssh-key-forwarding 授予远程系统的授权。至少在脚本完成之前。
任何想法如何去做?
[这继续我之前的问题我怎么知道我是否在 linux“屏幕”内运行?]
作为标题,我可以吗?
我试过了,screen -S mysess但它会创建一个新屏幕而不是更改当前屏幕的名称。
我也试过screen -X 'sessionname haha',但没有效果。它只是在终端底部显示一个反色条说
-X: unknown command 'sessionname haha'
Run Code Online (Sandbox Code Playgroud)

gnu-screen ×10
linux ×4
automation ×1
debian ×1
kill ×1
mac-osx ×1
perl ×1
socket ×1
ssh ×1
ssh-agent ×1
ssh-keys ×1
ubuntu ×1
ubuntu-11.04 ×1
unix ×1