このコマンドの出力をリダイレクトしたいと思いますfirefox &
。追加する&
と、バックグラウンドでコマンドを実行し、それを使用すると受信されることがわかります[number of process in background] [PID]
。
firefox & > firefoxFile
ところで開いてみるfirefoxFile
と空いていました。見つかりません[number of process in forground] [PID]
。
答え1
あなたが書いたコメントに
バックグラウンドプロセスのpidと数を見つけたいです。
これはどうですか?
firefox &
pid=$!
echo "The PID for the background process is $pid" >&2
PIDがあれば、もちろん、必要なファイルにその値を書き込むことができます。
答え2
シェルがbash [1]の場合は、次のことを試すことができます。
exec 3>&2 2>firefoxFile; firefox & exec 2>&3-
ここでは、シェル(例:bash)は[jobnum] pid
バックグラウンドジョブ通知を印刷します。標準エラー、Firefoxではありません。この組み合わせは一時的にstderrをファイルにリダイレクトし、firefoxFile
そのファイルに通知をキャプチャします。そしてFirefox は、ライフタイム中に stderr に何でも記録します。
[jobnum] Done firefox
バックグラウンドジョブが終了すると、印刷されるbashはキャプチャされません。
あなたのコマンドはfirefox & > file
2つのコマンドに解析されます1. firefox &
(firefox
バックグラウンドで実行されます)と2. > file
(何も書かずに切り捨てられますfile
。) これは確かにあなたが望むものではありません。
[1]読むことができますこここのトリックが他のシェルでは機能しない理由は、stderrがからリダイレクトされる可能性がありますが、そのプロンプトとタスクzsh
通知zsh
はstderrに記録されず、この目的のために特別に開かれた現在の端末を指す他のfdに書き込まれるためです。
答え3
正確ではありませんが、ほぼ似ています。もう少し追加してくださいsed
。
firefox &
jobs -l | grep -E "\[[0-9]+\]\+" > firefoxFile