Linuxscript如何導出stderr - LinuxDinah · 2011-10-28Table of ContentsPostCommentsRelated Posts我想將stderr的訊息額外導到檔案, 也就是說error訊息除了輸出到螢幕之外 ,還要輸出到檔案。 如果是stdout的話,可以使用tee來達成, 但stderr要怎麼做呢? -- LinuxAll CommentsDonna2011-10-312>tee啊, 好像不太對 ...Franklin2011-10-31如果可以接受stderr和stdout同一檔案,那就是 2>&1 再 |Callum2011-11-02myprogram 2>&1 | tee output-file如果不行,那就要效法上次網友貼的 gdb 大法Vanessa2011-11-07上一行的不行,是指不能接受 out err 同一檔案Mia2011-11-10剛才想到,不用 gdb 也可以做James2011-11-10myprogram 2>output-file ; tail -f output-fileJessica2011-11-11f(){ echo 1>&3; ls abc 2>&1; }; f 3>&2 把stdin/err對調Dorothy2011-11-12ls exist nonexist 3>&1 1>&2 2>&3 同上,接下來可用teeAaliyah2011-11-14b大的方法不合我用,順序應該會不對k大的方法,我要試試能不能用Harry2011-11-14所謂順序不對是什麼意思?Ivy2011-11-16我猜是tail會漏掉一些快速印出的較早內容.那就改一下Caroline2011-11-17last的參數,讓它能印出所有一開始內容就好Thomas2011-11-22打錯, 是 tail 的參數Olga2011-11-24你的意思是如果只有警告,tail 不會結束,而你希望make完都一律停止?Bethany2011-11-27警告是從stdout出來還是stderr? 如果是前者那簡單,如果是Skylar Davis2011-12-01從stderr(跟error訊息一起)出來,那就變成需要一個軟體filter. 把 error 分離出來.Frederic2011-12-02我懂了,看到你第一次編輯回言,警告也是從stderr出來.那只有寫個軟體filter了.Zanna2011-12-02沒寫過filter,暫時不打算這麼做,先看看k大的方法行不行Dora2011-12-06k大的方法一樣是在OS層面處理,你的問題是Ap應用層面(把所需的error訊息特別過濾出來),應該是一樣不行.Madame2011-12-08filter也沒什麼特別, a | b | c 的 b 就叫 filter你把error/warning的文字範例提供一下,說不定馬上有人可以George2011-12-10用 grep/sed/awk 等工具立刻組一個給你Donna2011-12-10可是你前面不是說警告也走 stderr 出來?還是我誤解了?Aaliyah2011-12-14還是搞了半天,你只想把stdout, stderr 的內容照時間順序合Noah2011-12-14併顯示並且log? 如果真的是這樣,那解法不用這麼複雜.Annie2011-12-17就用傳統的 2>&1 把 stdout dup 給 stderr 就好.Olga2011-12-21myprogram 2>&1 | tee output-fileQueena2011-12-23上面的方法因為要在整個log中找error發生點所以才會希望另外產生一個只存stderr訊息的檔案Tracy2011-12-28這樣可以方便找error的發生點Heather2011-12-31那就綜合各方法如下rm err-file ; touch err-filetail -f err-file &myprogram 2>>err-file | tee out-fileIsla2012-01-05cat out-file err-file > single-out-err-fileYuri2012-01-08如果你make時螢幕訊息不重要,那更簡單myprogram > out-file 2>err-file再用上述的 cat 命令合併就好了Edward Lewis2012-01-12上面的方法是我目前在用的(我只差把檔案合成一個)Andrew2012-01-15問題是這樣合出來的log,順序不對Harry2012-01-20會沒辦法知道發生error時stdout輸出什麼Una2012-01-24要順序對,要用我推文 17:01 的那個方法Elizabeth2012-01-24所以我理想中是產生一個正常順序的完整log(包括stdout 和stderr),且有額外一份只存stderr的logHedwig2012-01-25然後假如make時間不會很久,平常先用一般方法產生err-file發生錯誤時,立刻再執行一次 17:01那個方法,兩次來比對Eden2012-01-25總之我試試看,先謝謝bitlife大力幫忙Genevieve2012-01-30你講的這個需求,如果 make 有支援 log4c (log4j的c版)才有希望了.不客氣,希望有用就好.Bethany2012-02-01我要編譯的是android....編一次大約要50分鐘XDDelia2012-02-04所以K大的方法,如果真的可以把stdout和err調換配合tee應該可以做到Liam2012-02-08看來用程式把 error 以 pattern 來 grep/sed/awk 抓出來比較有希望.Oscar2012-02-12把stdout,stderr 的descriptor互換,沒有改變什麼啊?Wallis2012-02-12現在的問題是只一次 make,你要一次產生單一時序輸出檔,又有一個單純只有 stderr 的檔,那是基本上相斥的事.Delia2012-02-15tee可以把stdout的資料分流到stdou和檔案Caitlin2012-02-20事實上,我剛熊熊才想到 17:01 那行根本是脫褲子放X. XDOlga2012-02-22一般程式一開始 stdout 和 stderr 都只向終端機.tee 只是讓你看畫面兼log至檔案.現在問題是stdout和stderrTodd Johnson2012-02-23一開始是一體的. 你要分開它們,就不能一起teePuput2012-02-24因為stdout和stderr一開始是都指向tty/pty,所以你掉換還是同一個東西,會tee到的內容還是一樣. XDIngrid2012-02-26了解...那你的意思是tee是抓不到stderr的資訊即使我把fd的輸出換過來?Audriana2012-02-28我想了一下. 是有可能... 因為 pipe 只針對 stdin/stdoutCarol2012-02-28不過,再想一下,還是怪怪的. 只能等你試看看了.整個麻煩就在於你同時需要合流和分流. 調換stdout/stderrEdward Lewis2012-03-03是會讓 tee 能從它自己的 stdin 取得 make 的 stdout (包含error/warning,因為out/err有swap過)Mia2012-03-06好啊,星期一時再試試看Sandy2012-03-07但是因為經過pipe,就分流了,所以我懷疑b.sh就算抓到全部內容,時序也會亂掉.更何況我不確定b.sh是否能抓到全部的logFrederic2012-03-09簡單講,只有(out,err)合流,才會保證有正確的時序似乎很難一次做兩個相反目的的工作.Jacky2012-03-12你要不要貼一下wanring/error範例,用filter搞不好還容易些Odelette2012-03-13這倒是個問題,就算順序亂掉了,我也不一定能發現Leila2012-03-14我17:01的那一行,在(out,err)合流的前提下,又不是脫X放X了Lauren2012-03-18真弄不出來的話,也只是照現在的清況繼續用而已Sandy2012-03-21那行確保out,err即使app的fd不同,但用同一個OS的內部fdAdele2012-03-25filter就再看看吧,老實說發生error的訊息會長什麼樣我現在也不是很確定Charlie2012-03-26那麼我建議你用 17:01 那行,確保時序一定正確.Elma2012-03-30等你測試好了,再回篇新的(舊的這篇可能洗出畫面了),我也有興趣知道結果.Related Posts刪除某些特定檔案問題關於XMing 全螢幕的問題創立的目錄捷徑不能開用wubi安裝ubuntu11.10 備份問題openwebmail安裝後,沒登入畫面
All Comments