首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重新附加和关闭列表中的多个屏幕会话

如何重新附加和关闭列表中的多个屏幕会话
EN

Stack Overflow用户
提问于 2009-09-28 07:44:47
回答 3查看 5.1K关注 0票数 2

我是Ubuntu 9.04的用户。给定屏幕会话列表,如下所示:

代码语言:javascript
复制
9076.pts-30.moe (09/27/2009 11:30:08 PM)    (Attached)
8778.pts-24.moe (09/27/2009 11:29:46 PM)    (Detached)
8674.pts-0.moe  (09/27/2009 11:29:25 PM)    (Attached)
22649.pts-28.moe    (09/27/2009 11:51:46 AM)    (Detached)
22543.pts-24.moe    (09/27/2009 11:50:56 AM)    (Detached)
22228.pts-16.moe    (09/27/2009 11:49:59 AM)    (Detached)

如何根据时间标准关闭多个屏幕?例如,下午12:00之前启动的所有屏幕我通常会键入:

代码语言:javascript
复制
    screen -dr 22649.pts-28.moe
    exit
    ...

并手动关闭每一个,但这很繁琐。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-28 08:05:12

您可以使用-X参数将命令发送到屏幕。所以你可以通过命令行说"screen -S 22649.pts-28.moe -X quit“来关闭屏幕。

要按时间选择屏幕,我猜您必须运行一个脚本来比较时间。

就我个人而言,我会在python中使用os.popen()和time.strptime()。

票数 1
EN

Stack Overflow用户

发布于 2012-01-03 04:53:00

下面是我如何删除所有分离的屏幕:

代码语言:javascript
复制
screen -ls | grep Detached | awk -F" " '{print $1}' | xargs -I{} screen -X -S {} kill

如果你想强行杀死所有屏幕,只需将上面的grep Detached改为grep tached即可。至少对我来说一直都是有效的!

对于时间标准,你可以从这个开始:

代码语言:javascript
复制
screen -ls | grep Detached | awk -F " " '{print $2,$3,$4","$1}'

这将打印类似以下内容:

代码语言:javascript
复制
(01/03/2012 02:10:42 AM),4504.test2
(01/03/2012 02:10:12 AM),4445.test1
(01/03/2012 02:02:58 AM),4333.test0

其中第一组是时间戳,用逗号分隔,是PID.name。

因此,您可以再次使用/ awk来解析括号中的时间(或者使用awk -F"," '{print $1}'来精确地提取括号中的时间戳)。记住,screen -ls总是在最后列出最早的屏幕!

我自己还没有想好如何做时间标准过滤,如果可以的话,我会在将来编辑这篇文章。祝你好运,伙计!

票数 4
EN

Stack Overflow用户

发布于 2009-09-28 08:05:35

点之前的数字(在您的示例中为22649)是屏幕进程的PID。干掉它(kill 22649)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1485877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档