引用するここ壁紙セッションでスクリプトを実行し、それ自体を閉じることに関連しています。
screen -dmS myscreen bash -c 'command1; command2;'
ユーザーに通知できるように、screen myscreenの実行が完了したことをデフォルトの端末にどのように通知しますか?それ以外の場合は、自動的に完了して閉じます。
答え1
を呼び出すと、screen -dm
現在のシェルに関係なく別のセッションが開始されます。新しいセッションは現在のシェルのサブセッションではないため、ある種の使用確認ループを使用して直接状態を調べる必要があります。
1つのオプションは、出力を調べてscreen -ls myscreen
「...でソケットが見つかりません」と比較することです(現在実行中......に画面があります...(分離済み)...に1つのソケットがあります...」の出力で構成されています)。 「コントラスト...」)これは単一の「myscreen」セッションのみを実行すると仮定します。
while ! screen -ls myscreen | grep -q 'No Sockets found in'; do sleep 1; done
このscreen -ls
コマンドは、単にソケットディレクトリの内容を分析することで直接確認できます。ソケットファイルは通常$SCREENDIR
テストされたシステムです。に配置されますSCREENDIR=/var/run/screen
。次のループは、1つ以上のファイルがワイルドカードと一致する限り成功し、そのファイルがもう存在しない場合に終了します。
while ls /var/run/screen/S-"$LOGNAME"/*.myscreen > /dev/null 2>&1; do sleep 1; done
これはまだ「myscreen」という画面セッションのみが開始されたという前提に依存します。
同じ名前で複数のセッションを開始できる場合は、各セッションに対応するPIDを選択するときにさらに注意する必要があります。