2009-09-28 24 views
1

我是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之前啓動。我通常會輸入:

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

並手動關閉每一個,但這是乏味的。提前致謝。

回答

0

您可以使用-X參數向屏幕發送命令。所以你可以通過說「screen -S 22649.pts-28.moe -X quit」來從命令行關閉一個屏幕。

要按時間選擇屏幕,我想你必須運行腳本來比較時間。

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

1

點之前的數字(在您的示例中爲22649)是屏幕過程的PID。只要殺死它(kill 22649

2

以下是我殺死所有的分離屏幕:

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。名稱。

,所以你可以使用/管道awk(或awk -F"," '{print $1}'準確地僅提取時間戳,在括號內)再次解析括號內的時間..記住,screen -ls總是列出了最早的屏幕上!

我還沒有想出如何做自己的時間標準過濾,我將來編輯這個,如果我能......好運好友!

相關問題