2

私はUbuntu9.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時より前に開始されました。私は通常、次のように入力します。

    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 に答える