如何查找正在处理的屏幕会话

如何查找正在处理的屏幕会话

我广泛使用屏幕程序。它减少了每天花在设置会话上的时间,对我帮助很大。但是,现在我有 >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

如果您在会话名称中使用制表符或换行符,它仍然不起作用。

相关内容