web-dev-qa-db-ja.com

Nohup.outファイルを作成せずに、ターミナル出力を保持するにはどうすればよいですか?

Nohupアプリケーションを次のようにリダイレクトする場合:

Nohup bash -c "printf \"command\n\"" &> /dev/null

Nohup.outファイルは作成されませんが、コマンドを実行した端末にも出力がありません。コマンドからの端末出力を保持し、Nohup.outファイルを作成しない方法は?

3
user

これを試して、

コンソールとNohup.outファイルの両方でSTDOUTSTDERRを取得するには、Nohupコマンドを実行する前に次のコマンドを実行します。

exec >  >(awk '{ print $0; fflush();}' | tee -a Nohup.out)
exec 2>  >(awk '{ print $0; fflush();}' | tee -a Nohup.out >&2)
Nohup bash -c "printf \"command\n\"" &

編集:

Nohup.outを作成しない場合は、これを試してください

exec >  >(awk '{ print $0; fflush();}')
exec 2>  >(awk '{ print $0; fflush();}')
Nohup bash -c "printf \"command\n\"" &

これにより、コンソールにSTDOUTSTDERRが表示されている間はNohup.outは作成されません。

上記の行をスクリプトに入れて、バックグラウンドで実行します。

2
ss_iwe

次のように実行できます

Nohup process & tail -f Nohup.out

または、teeを使用します。これは、必要なことを正確に実行するために使用されます:標準入力から読み取り、標準出力とファイルに書き込みます

Nohup process 1>&2 | tee Nohup.out &

1
Chen A.