stderrを端末に送信しながらnohupを使用する方法

stderrを端末に送信しながらnohupを使用する方法

nohupは自動的にstderrをstdoutにリダイレクトしますが、それを端末(進行状況が表示される場所)に送信したいと思います。どうすればいいですか?

ベストアンサー1

方向を変えてください。たとえば、stderrに1行、stdoutに1行を印刷する次のスクリプトを使用します。

#!/bin/sh
echo stderr >&2
echo stdout

今実行してnohup標準エラーをファイルにリダイレクトすると、期待どおりに動作します。

$ nohup a.sh 2>er
$ cat er
nohup: ignoring input and appending output to ‘nohup.out’
stderr

nohupをリダイレクトしているので、標準エラー自体も含まれていますnohup。標準出力でも同じことができます。

nohup a.sh > foo

デフォルトでは、出力をリダイレクトしない場合にのみnohup使用されます。nohup.out


標準エラーを端末に印刷するには、次を使用できます。プロセスリダイレクトstderrを介して渡されましたtee

$ nohup a.sh 2> >(tee)
nohup: ignoring input and appending output to ‘nohup.out’
stderr

おすすめ記事