我試圖使用這樣的命令來跟蹤的處理的CPU使用率:bash中,嵌套命令和重定向
top -b -d 1 | grep myprocess.exe
接着,我想此重定向到一個日誌文件,例如
top -b -d 1 | grep myprocess.exe > output.log
現在,這實際上並沒有工作,因爲它認爲我grepping myprocess.exe的myprocess.exe
> output.log 而不是是否有人知道我能得到這個重定向工作?
我試圖使用這樣的命令來跟蹤的處理的CPU使用率:bash中,嵌套命令和重定向
top -b -d 1 | grep myprocess.exe
接着,我想此重定向到一個日誌文件,例如
top -b -d 1 | grep myprocess.exe > output.log
現在,這實際上並沒有工作,因爲它認爲我grepping myprocess.exe的myprocess.exe
> output.log 而不是是否有人知道我能得到這個重定向工作?
嘗試tee
:
top -b -d 1 | grep myprocess.exe | tee output.log
如果你想讓它顯示無輸出:
top -b -d 1 | grep myprocess.exe | tee output.log > /dev/null
它們與OP的命令有什麼不同? –
因此,T恤似乎不適合我。我得到和以前一樣的結果(例如output.log爲空)。 – user788171
對不起,但第二個例子與OP的第二個例子基本相同。第一個例子應該是解決方案。 –
現在,這實際上並沒有工作,因爲它認爲我grepping
myprocess.exe > output.log
代替myprocess.exe
W榮。一切都應該沒問題。第一個示例執行管道stdout
設置到您的終端(因此您會看到輸出,但沒有寫入文件)。第二個示例執行stdout
設置爲output.log
的流水線(因此您不會看到輸出,但它會在您的文件中正確顯示)。
如果您希望將輸出寫入兩者,則需要另一個流程,將上一個流水線的stdout
設置爲stdin
,然後將其複製。像:
previous_pipeline | tee output.log
tee
將在標準輸出上打印的內容沾到stdin
(所以對於stdout
,一切都和以前一樣),但還打開另一個文件(列爲CMDLINE ARG)和寫一份給它。
你爲什麼認爲這是'grep'ping重定向?重定向由'bash'解釋,並且不會導致進程名稱 – Kevin
'top -b -d 1 | grep postgres> output.log'在我的機器上運行(Ubuntu 10.04 LTS)。 –
也許這是真的,但它仍然不能解釋爲什麼在運行第二個命令時output.log爲空。 – user788171