Shell
在 shell 中,當我在後台執行程序時,我怎樣才能獲得“jobnumberj這bn在米b和rjob number磷一世D磷一世DPID’,重定向到一個文件?
我想重定向這個命令的輸出
firefox &
。我知道添加&
意味著我們將在後台執行命令,當我們使用它時,我們會收到[number of process in background] [PID]
. 這就是我所做的:firefox & > firefoxFile
但是當我打開時
firefoxFile
,我發現它是空的。我沒找到[number of process in forground] [PID]
。
如果你的 shell 是 bash
$$ 1 $$, 你可以試試:
exec 3>&2 2>firefoxFile; firefox & exec 2>&3-
[jobnum] pid
將後台作業通知列印到stderr是您的 shell(例如 bash),而不是 firefox。這個 kludge 臨時將 stderr 重定向到firefoxFile
文件,將通知以及firefox 在其生命週期內將寫入 stderr 的內容擷取到文件中。
[jobnum] Done firefox
當後台作業終止時,它不會擷取將列印的bash。您
firefox & > file
將被解析為兩個命令1.firefox &
(將firefox
在後台執行)和2.> file
(將截斷file
而不向其寫入任何內容)。這肯定不是你想要的。$$ 1 $$你可以在這裡閱讀為什麼這個技巧在其他 shell 中不起作用;雖然可以將 stderr 重定向到
zsh
,zsh
但不會將其提示和作業通知寫入 stderr,而是寫入指向目前終端的另一個 fd,專門為此目的打開。