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