screen
エラーが発生したときに対話できるように実行を続ける長期実行コマンドがあります。しかし、私は他のシェルスクリプト(GNU並列性に似たものを実装する)を通してそれを起動できるようにしたいので、screen -m -D mycommand
それを使用していますが、うまくいきます。ただどのようにして得るのか分からないようです。終了ステータス - 宿題の再起動に失敗することは非常に重要です。
screen
子プロセスの終了ステータスを返す方法はありますか?テストケースで遊ぶには:
screen -mD sh -c "exit 1"
echo $?
# prints 0; would like something that prints 1
答え1
このフラグを試してみてください-L
。
-L:Windowsの自動出力ロギングをオンにするように画面に指示します。
screenlog.0
私にとってこれは、次の画面を実行すると、すべての出力を記録する作業ディレクトリに呼び出されるファイルを生成します。
screen -mDL sh -c 'your_command || echo $?'
または多分
screen -mDL sh -c 'your_command; echo $?'
その後、ファイルの最後の行に終了コードがあることを確認できます。おそらく全体の結果は次のようになります。
screen -mDL sh -c 'your_command; echo $?' && tail -1 screenlog.0