程序能否检测到它正在分离的屏幕中运行?

Joa*_*ner 10 gnu-screen

我在相当弱的硬件上的屏幕会话中运行交互式诅咒程序。大多数时候,屏幕是分离的。这个程序有没有办法检测到这种情况,并且基本上停止在屏幕上绘画?

Mic*_*zek 8

有一个名为 irssi 的脚本screen_away,它根据屏幕是否连接来设置您的离开状态。它是这样工作的:

在屏幕内运行的每个 shell 都会将STY环境变量设置为套接字名称。您可以运行screen -ls以获取存储所有套接字的路径:

$ screen -ls

There are screens on:
        11824.pts-24.mmrozek    (Attached)
        2306.ssh        (Detached)
        6615.chat       (Attached)
3 Sockets in /var/run/screen/S-mmrozek.
Run Code Online (Sandbox Code Playgroud)

检查 上的执行位/var/run/screen/.../$STY。如果设置了,则附加屏幕;否则它是分离的。您可以从上面的输出中看到我的三个屏幕中的两个附加了,这里设置了相应的执行位:

$ ls -l /var/run/screen/S-mmrozek/

total 0
prwx------ 1 mmrozek mmrozek 0 Oct  5 13:04 11824.pts-24.mmrozek
prw------- 1 mmrozek mmrozek 0 Sep 23 23:45 2306.ssh
prwx------ 1 mmrozek mmrozek 0 Oct  5 12:43 6615.chat
Run Code Online (Sandbox Code Playgroud)

您也可以继续检查screen -ls包含 的行的输出$STY,看看它是否以(Attached)or结尾(Detached),但这需要screen一遍又一遍地运行