バックグラウンドジョブ実行時間の記録

バックグラウンドジョブ実行時間の記録

バックグラウンドで実行され、次のコマンドを使用してすべての出力をキャプチャするスクリプトがあります。

nohup bash -x test.sh < /dev/null > log.txt 2>&1 &

完了するまでにどれくらいの時間がかかりますか?timeエラーが発生した後に試してみると、次のようになります。bash -x

/usr/bin/time: /usr/bin/time: cannot execute binary file

使用しようとすると、acctプロセスが記録されていないか見つからないようです。

ベストアンサー1

[これはあなたの質問で明確ではないtoの出力timeに移動したいと仮定します。]log.txt

ただ使用しないでくださいnohup

nohup特別な操作を行わずに信号を無視し、stdoutとstderrをファイルにリダイレクトします - GNU coreutilsSIGHUPなどのいくつかのバリエーションでのみ標準入力を開いた場所からリダイレクトします。nohup/dev/nullただ書くモデル。

これはすべてシェルで簡単に実行できます。

{ trap '' HUP; time bash -x your_script args ... ; } > log.txt 2>&1 0>/dev/null &

または、より安全にするには、スクリプトから起動したり、コマンドをフォアグラウンドに戻したくない場合は、次のようにしますfg

(trap '' HUP; time bash -x your_script args ... 0>/dev/null &) > log.txt 2>&1

0>/dev/null(GNU nohupのこの機能をエミュレートしたくない場合は省略できます)。


もちろん、理解できない理由でnohupに魔法の属性を与える場合は、nohupを使用して最初の例の構文トリックを使用することもできます。

{ time nohup bash -x your_script args ... ; } > log.txt 2>&1 &

おすすめ記事