我广泛使用屏幕程序。它减少了每天花在设置会话上的时间,对我帮助很大。但是,现在我有 >8 个屏幕 - 有时我会忘记我所在的屏幕。有没有办法找到我正在使用的屏幕会话的名称。 screen -ls 将列出所有屏幕会话。
有没有办法从所有当前活动的屏幕会话中分离出来 - 例如在一天结束时。
答案1
曾几何时,我使用这个简单的 shell 脚本作为 cron 作业,正如你所说,归根结底。
#!/bin/sh
screen -ls \
| awk '/\(Attached\)/{print $1}' \
| while read line ; do
screen -D $line ;
done
screen -D
(电源分离)也会向screen的父进程发送HANGUP信号(通常是关闭含有终端)。如果您愿意,可以使用-d
(分离)。
正如@doon 注意到的,你可以用来echo $STY
知道你在哪个屏幕。
答案2
比 andcoz' 稍微可靠的版本:
#! /bin/sh -
tab=$(printf '\t')
screen -ls |
while IFS=$tab read -r session time state; do
[ "$state" = "(Attached)" ] && screen -D "$session"
done
如果您在会话名称中使用制表符或换行符,它仍然不起作用。