2

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

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 PM 之前启动的所有屏幕。我通常会输入:

    screen -dr 22649.pts-28.moe
    exit
    ...

并手动关闭每一个,但这很乏味。提前致谢。

4

3 回答 3

4

以下是我如何杀死所有分离的屏幕:

screen -ls | grep Detached | awk -F" " '{print $1}' | xargs -I{} screen -X -S {} kill

如果你想强行杀死所有屏幕,只需将grep Detached上面更改为grep tached. 至少对我有用!

对于时间标准,您可以从以下开始:

screen -ls | grep Detached | awk -F " " '{print $2,$3,$4","$1}'

这会打印出类似的内容:

(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总是最后列出最早的屏幕!

我还没有弄清楚如何对自己进行时间标准过滤,如果可以的话,我将来会编辑它.. 祝你好运哥们!

于 2012-01-02T20:53:00.407 回答
1

您可以使用 -X 参数将命令发送到屏幕。因此,您可以通过说“screen -S 22649.pts-28.moe -X quit”从命令行关闭屏幕。

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

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

于 2009-09-28T08:05:12.073 回答
1

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

于 2009-09-28T08:05:35.070 回答