さまざまな出力にnohupとtimeを使用する

さまざまな出力にnohupとtimeを使用する

実行可能ファイルを実行mainし、すべての出力をにリダイレクトします。ジョブは非常に長いため、ジョブ全体を実行するためにも使用する必要があります。私は以下を試しました。これはすべてを。/dev/nulltimeruntime.outnohup

nohup time ./main &> /dev/null &> runtime.out &
runtime.outmain

答え1

timeこの目的に使用できるいくつかの点があります。

nohup time -o runtime.out ./main &> /dev/null &

setsidスクリプトが可能でttyが不要な場合は、よりよく「保護」し、nohup + &必要なときに信号を送り続けることができるので、代わりに使用したいと思います。HUP

setsid time -o runtime.out ./main </dev/null &>/dev/null

また、OPの質問のように、出力形式がbashの組み込みコマンドとは異なるtimeことに注意してください。必要に応じて同様の出力を提供するようです。/usr/bin/timetime/usr/bin/time --portability

答え2

数回の試行錯誤を経てインスピレーションを得ました。bash時にnohupを使う、私は次のことを思い出しました。

$ nohup bash -c 'time ./main &> /dev/null' > runtime.out &
[1] 23178
nohup: ignoring input and redirecting stderr to stdout
$ 
[1]+  Done                    nohup bash -c 'time ./main &> /dev/null' > runtime.out
$ cat runtime.out 

real    0m0.004s
user    0m0.002s
sys     0m0.002s

その後、にリダイレクトされstdout、ターミナルに印刷され、にリダイレクトされます。timeruntime.outstdoutnohupstdoutstderrmain/dev/null

答え3

これは正しいことをしているようです:

$ time > runtime.out nohup ./main &> /dev/null &

関連情報