screen “セッション”を一括して削除する方法

screenコマンドでsessionをたくさん作った後に削除するときにめんどくさいなと思ったので

screenセッションを一括で削除するには、シェルからscreenセッションをリストアップし、それらを終了するコマンドを実行することになります。screenセッションを終了するには、そのセッション内でexitコマンドを使用するか、Ctrl-aの後にkを押してセッションを強制終了します。

一括でscreenセッションを削除するには、以下のシェルコマンドを使用できます。このコマンドは、実行中の全てのscreenセッションを探し、それぞれに対してscreen -X -S [セッションID] quitを実行してセッションを終了します。

screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs -I {} screen -X -S {} quit

このコマンドの解説は以下の通りです:

  • screen -ls: 実行中のscreenセッションをリストアップします。
  • grep Detached: 「Detached」状態のセッションのみをフィルタリングします(オプションで、全てのセッションを終了したい場合はこの部分を省略します)。
  • cut -d. -f1: screen -lsから得られる出力を.で区切り、最初のフィールド(セッションID)を抽出します。
  • awk '{print $1}': 抽出した行から最初のカラム(セッションID)だけを表示します。
  • xargs -I {} screen -X -S {} quit: 抽出した各セッションIDに対してscreen -X -S [セッションID] quitコマンドを実行し、セッションを終了します。

このコマンドは非常に強力なので、実行する前にどのセッションが終了されるのかを確認することをお勧めします。また、必要に応じてgrepの部分を調整して、特定のセッションだけを終了するようにフィルタリングすることも可能です。

 

コメント