nohupを使用してstdoutをファイルにリダイレクトすると機能しません。

nohupを使用してstdoutをファイルにリダイレクトすると機能しません。

バックグラウンドでCプログラムを実行しようとしています。また、プログラムの標準出力を保存したいと思います。

ただし、nohupは、次のことを試みた場合にのみ、stderr出力をlogfile.txtにリダイレクトします。

nohup ./GetTempValues 11 4 > logfile.txt 2>&1 &

ここで、11と4は私のプログラムに渡す必要があるパラメータ、最後のパラメータはバックグラウンドで&プログラムを実行するために使用されるパラメータです(GetTempValuesは私のプログラムです)。

ベストアンサー1

GetTempValuesもともと標準出力が生成されると確信していますか?あなたの構文が「私に適している」からです。

$ nohup perl test.pl >logfile.txt 2>&1 &
[1] 20964
$ cat logfile.txt 
this goes to stderr
this goes to stdout
[1]+  Done                    nohup perl test.pl > logfile.txt 2>&1

test.plどこ

print STDOUT "this goes to stdout\n";
print STDERR "this goes to stderr\n";

PS:あなたの例では、2>&1STDERRをSTDOUTにリダイレクトする必要はありません。nohup「標準エラーが端末の場合は、標準出力と同じ場所に渡されます。」nohupマニュアルページ)。

おすすめ記事