我是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 :(得分: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.name。
所以你可以使用/ pipe到awk
(或awk -F"," '{print $1}'
再次仅在括号中提取时间戳)来解析括号内的时间..记住,screen -ls
总是最后列出最早的屏幕!
我还没弄明白如何自己做时间标准过滤,如果可以的话,我将来会编辑这个...好运好友!
答案 1 :(得分:1)
您可以使用-X参数将命令发送到屏幕。所以你可以通过说“screen -S 22649.pts-28.moe -X quit”从命令行关闭一个屏幕。
要按时间选择屏幕,我猜你必须运行一个脚本来比较时间。
就个人而言,我会在python中使用os.popen()和time.strptime()。
答案 2 :(得分:1)
点之前的数字(示例中为22649
)是屏幕进程的PID。只需杀死它(kill 22649
)