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
の部分を調整して、特定のセッションだけを終了するようにフィルタリングすることも可能です。
コメント