6

これは私が達成しようとしているものです:

  • コマンド/プロセスをバックグラウンドで実行し、その出力をバックグラウンド プロセスのプロセス ID にちなんで名付けられた一時ファイルにリダイレクトします。
  • 例:
    • top & // このバックグラウンド プロセスのプロセス ID は 1123 です
    • top の出力は、ファイル 1123.temp に保存する必要があります。

これは可能ですか?本当にバックグラウンドで実行するには、バックグラウンド プロセスとしてマークする前にリダイレクトを行う必要があるのではないでしょうか? または、これを回避するためのテクニックはありますか?

4

2 に答える 2

6

一時ファイルにリダイレクトしてから、mvそのファイルを必要な名前にリダイレクトできます。

process > /tmp/process.log &
mv /tmp/process.log /tmp/$!.log

$!以前にバックグラウンド処理されたプロセスの pid です。mv は単にそのファイルの名前を変更することに注意してください。書き込みが中断されることはありません。

于 2012-11-21T11:42:48.470 に答える
2

execコマンドを bash で実行すると、現在のプロセス (bash を実行しているプロセス) が実行中のプロセスに置き換えられます。だから何か

bash -c "exec top > ${BASHPID}.temp" &

動作するはずです。

于 2012-11-21T11:43:02.840 に答える