script如何導出stderr - Linux

Dinah avatar
By Dinah
at 2011-10-28T04:04

Table of Contents

我想將stderr的訊息額外導到檔案,
也就是說error訊息除了輸出到螢幕之外
,還要輸出到檔案。

如果是stdout的話,可以使用tee來達成,
但stderr要怎麼做呢?

--
Tags: Linux

All Comments

Donna avatar
By Donna
at 2011-10-31T13:36
2>tee
啊, 好像不太對 ...
Franklin avatar
By Franklin
at 2011-10-31T18:17
如果可以接受stderr和stdout同一檔案,那就是 2>&1 再 |
Callum avatar
By Callum
at 2011-11-02T19:17
myprogram 2>&1 | tee output-file
如果不行,那就要效法上次網友貼的 gdb 大法
Vanessa avatar
By Vanessa
at 2011-11-07T06:47
上一行的不行,是指不能接受 out err 同一檔案
Mia avatar
By Mia
at 2011-11-10T04:52
剛才想到,不用 gdb 也可以做
James avatar
By James
at 2011-11-10T06:43
myprogram 2>output-file ; tail -f output-file
Jessica avatar
By Jessica
at 2011-11-11T21:14
f(){ echo 1>&3; ls abc 2>&1; }; f 3>&2 把stdin/err對調
Dorothy avatar
By Dorothy
at 2011-11-12T10:40
ls exist nonexist 3>&1 1>&2 2>&3 同上,接下來可用tee
Aaliyah avatar
By Aaliyah
at 2011-11-14T02:19
b大的方法不合我用,順序應該會不對
k大的方法,我要試試能不能用
Harry avatar
By Harry
at 2011-11-14T16:52
所謂順序不對是什麼意思?
Ivy avatar
By Ivy
at 2011-11-16T02:41
我猜是tail會漏掉一些快速印出的較早內容.那就改一下
Caroline avatar
By Caroline
at 2011-11-17T22:58
last的參數,讓它能印出所有一開始內容就好
Thomas avatar
By Thomas
at 2011-11-22T20:25
打錯, 是 tail 的參數
Olga avatar
By Olga
at 2011-11-24T17:29
你的意思是如果只有警告,tail 不會結束,而你希望make完都
一律停止?
Bethany avatar
By Bethany
at 2011-11-27T01:53
警告是從stdout出來還是stderr? 如果是前者那簡單,如果是
Skylar Davis avatar
By Skylar Davis
at 2011-12-01T12:51
從stderr(跟error訊息一起)出來,那就變成需要一個軟體
filter. 把 error 分離出來.
Frederic avatar
By Frederic
at 2011-12-02T18:53
我懂了,看到你第一次編輯回言,警告也是從stderr出來.
那只有寫個軟體filter了.
Zanna avatar
By Zanna
at 2011-12-02T20:17
沒寫過filter,暫時不打算這麼做,先看看k大的方法行
不行
Dora avatar
By Dora
at 2011-12-06T01:18
k大的方法一樣是在OS層面處理,你的問題是Ap應用層面(把
所需的error訊息特別過濾出來),應該是一樣不行.
Madame avatar
By Madame
at 2011-12-08T13:09
filter也沒什麼特別, a | b | c 的 b 就叫 filter
你把error/warning的文字範例提供一下,說不定馬上有人可以
George avatar
By George
at 2011-12-10T03:08
用 grep/sed/awk 等工具立刻組一個給你
Donna avatar
By Donna
at 2011-12-10T04:21
可是你前面不是說警告也走 stderr 出來?還是我誤解了?
Aaliyah avatar
By Aaliyah
at 2011-12-14T20:34
還是搞了半天,你只想把stdout, stderr 的內容照時間順序合
Noah avatar
By Noah
at 2011-12-14T21:57
併顯示並且log? 如果真的是這樣,那解法不用這麼複雜.
Annie avatar
By Annie
at 2011-12-17T20:10
就用傳統的 2>&1 把 stdout dup 給 stderr 就好.
Olga avatar
By Olga
at 2011-12-21T11:27
myprogram 2>&1 | tee output-file
Queena avatar
By Queena
at 2011-12-23T11:54
上面的方法因為要在整個log中找error發生點
所以才會希望另外產生一個只存stderr訊息的檔案
Tracy avatar
By Tracy
at 2011-12-28T04:43
這樣可以方便找error的發生點
Heather avatar
By Heather
at 2011-12-31T09:40
那就綜合各方法如下
rm err-file ; touch err-file
tail -f err-file &
myprogram 2>>err-file | tee out-file
Isla avatar
By Isla
at 2012-01-05T04:31
cat out-file err-file > single-out-err-file
Yuri avatar
By Yuri
at 2012-01-08T22:13
如果你make時螢幕訊息不重要,那更簡單
myprogram > out-file 2>err-file
再用上述的 cat 命令合併就好了
Edward Lewis avatar
By Edward Lewis
at 2012-01-12T10:26
上面的方法是我目前在用的(我只差把檔案合成一個)
Andrew avatar
By Andrew
at 2012-01-15T21:13
問題是這樣合出來的log,順序不對
Harry avatar
By Harry
at 2012-01-20T19:39
會沒辦法知道發生error時stdout輸出什麼
Una avatar
By Una
at 2012-01-24T00:12
要順序對,要用我推文 17:01 的那個方法
Elizabeth avatar
By Elizabeth
at 2012-01-24T14:39
所以我理想中是產生一個正常順序的完整log(包括
stdout 和stderr),且有額外一份只存stderr的log
Hedwig avatar
By Hedwig
at 2012-01-25T09:47
然後假如make時間不會很久,平常先用一般方法產生err-file
發生錯誤時,立刻再執行一次 17:01那個方法,兩次來比對
Eden avatar
By Eden
at 2012-01-25T16:47
總之我試試看,先謝謝bitlife大力幫忙
Genevieve avatar
By Genevieve
at 2012-01-30T03:59
你講的這個需求,如果 make 有支援 log4c (log4j的c版)才有
希望了.
不客氣,希望有用就好.
Bethany avatar
By Bethany
at 2012-02-01T14:50
我要編譯的是android....編一次大約要50分鐘XD
Delia avatar
By Delia
at 2012-02-04T01:12
所以K大的方法,如果真的可以把stdout和err調換
配合tee應該可以做到
Liam avatar
By Liam
at 2012-02-08T06:52
看來用程式把 error 以 pattern 來 grep/sed/awk 抓出來
比較有希望.
Oscar avatar
By Oscar
at 2012-02-12T06:05
把stdout,stderr 的descriptor互換,沒有改變什麼啊?
Wallis avatar
By Wallis
at 2012-02-12T09:35
現在的問題是只一次 make,你要一次產生單一時序輸出檔,又
有一個單純只有 stderr 的檔,那是基本上相斥的事.
Delia avatar
By Delia
at 2012-02-15T20:58
tee可以把stdout的資料分流到stdou和檔案
Caitlin avatar
By Caitlin
at 2012-02-20T04:28
事實上,我剛熊熊才想到 17:01 那行根本是脫褲子放X. XD
Olga avatar
By Olga
at 2012-02-22T20:19
一般程式一開始 stdout 和 stderr 都只向終端機.
tee 只是讓你看畫面兼log至檔案.現在問題是stdout和stderr
Todd Johnson avatar
By Todd Johnson
at 2012-02-23T01:27
一開始是一體的. 你要分開它們,就不能一起tee
Puput avatar
By Puput
at 2012-02-24T20:35
因為stdout和stderr一開始是都指向tty/pty,所以你掉換還是
同一個東西,會tee到的內容還是一樣. XD
Ingrid avatar
By Ingrid
at 2012-02-26T20:41
了解...那你的意思是tee是抓不到stderr的資訊
即使我把fd的輸出換過來?
Audriana avatar
By Audriana
at 2012-02-28T03:56
我想了一下. 是有可能... 因為 pipe 只針對 stdin/stdout
Carol avatar
By Carol
at 2012-02-28T21:45
不過,再想一下,還是怪怪的. 只能等你試看看了.
整個麻煩就在於你同時需要合流和分流. 調換stdout/stderr
Edward Lewis avatar
By Edward Lewis
at 2012-03-03T00:25
是會讓 tee 能從它自己的 stdin 取得 make 的 stdout (包
含error/warning,因為out/err有swap過)
Mia avatar
By Mia
at 2012-03-06T21:10
好啊,星期一時再試試看
Sandy avatar
By Sandy
at 2012-03-07T06:59
但是因為經過pipe,就分流了,所以我懷疑b.sh就算抓到全部內
容,時序也會亂掉.更何況我不確定b.sh是否能抓到全部的log
Frederic avatar
By Frederic
at 2012-03-09T06:01
簡單講,只有(out,err)合流,才會保證有正確的時序
似乎很難一次做兩個相反目的的工作.
Jacky avatar
By Jacky
at 2012-03-12T12:28
你要不要貼一下wanring/error範例,用filter搞不好還容易些
Odelette avatar
By Odelette
at 2012-03-13T07:37
這倒是個問題,就算順序亂掉了,我也不一定能發現
Leila avatar
By Leila
at 2012-03-14T23:13
我17:01的那一行,在(out,err)合流的前提下,又不是脫X放X了
Lauren avatar
By Lauren
at 2012-03-18T00:58
真弄不出來的話,也只是照現在的清況繼續用而已
Sandy avatar
By Sandy
at 2012-03-21T16:34
那行確保out,err即使app的fd不同,但用同一個OS的內部fd
Adele avatar
By Adele
at 2012-03-25T02:06
filter就再看看吧,老實說發生error的訊息會長什麼樣
我現在也不是很確定
Charlie avatar
By Charlie
at 2012-03-26T09:13
那麼我建議你用 17:01 那行,確保時序一定正確.
Elma avatar
By Elma
at 2012-03-30T19:17
等你測試好了,再回篇新的(舊的這篇可能洗出畫面了),我也有
興趣知道結果.

刪除某些特定檔案問題

James avatar
By James
at 2011-10-28T02:36
大家好 有個刪除檔案的問題想請教各位先進 我手上有一些以座標命名的檔案 ex. data_37.0625_-89.1875 (空白是底線 可是打不出來) 然後我有個txt檔列出我所需要的座標 我只要其中某些座標檔案而不是全部 請問我該如何刪除其他不要的檔案 我想說是否可以檢查檔案名稱是否match座標資料 ...

關於XMing 全螢幕的問題

Olga avatar
By Olga
at 2011-10-27T22:00
想請問一下 現在用XMing設定成全螢幕開啟 不過開啟的Tool 裡面的title bar都會不見 , 所有的視窗都沒辦法拖拉 請問要做什麼設定才有辦法將title bar顯示出來呢? 先謝謝回答的人! PS:一定要在全螢幕下開啟. - ...

創立的目錄捷徑不能開

Queena avatar
By Queena
at 2011-10-27T18:06
用ln -s創立了一目錄的捷徑,在這目錄下可以用這捷徑進入 接著用mv將此捷徑移到,home/username下 此捷徑的檔名從藍色變成紅色 當要嘗試進去時,會顯示沒有這目錄存在 看了一下權限是777,權限沒問題 但搬移之後卻進不去了 我試著在Ubuntu圖形介面下make link在移動到home/use ...

用wubi安裝ubuntu11.10 備份問題

Vanessa avatar
By Vanessa
at 2011-10-27T13:03
請問版上大大 我用光碟裡的wubi安裝ubuntu11.10 第一次 設定好磁碟位置及密碼 完成設定魔法師階段 然後就重新啟動 進入win7 跟 ubuntu的選項 我選ubuntu後 他開始進行各項設定 然後 進度一直停留在 and#34;即將 ...

openwebmail安裝後,沒登入畫面

Daph Bay avatar
By Daph Bay
at 2011-10-27T10:25
我的環境是ubuntu,依以下教學安裝openwebmail之後, http://www.nowtaxes.com.tw/node/1147 我在瀏覽器上打 (在VM裡的ip) http://192.168.134.131/openwebmail/ 結果出現的頁面長的很像以下網址 http://ope ...