2011年3月14日 星期一

如何同時輸出資料到log file跟螢幕上

Liberate will output messages into stdout and stderr.  Be sure to capture both into a file for later review.
Batch Mode  (This is the recommended mode)

Example:
Unix> ${ALTOSHOME}/bin/liberate  char.tcl  |&  tee  char.log


autoCharDrivers 1>>log/autoCharDrivers.zlog 2>&1

2 為Console標準錯誤
1 為Console標準輸出

此為 Unix 的標準 , Windows 也有遵循 POSIX 可以通用.

所以呢 !!!!
如果你執行 
perl xxx.pl 2>&1 
就是把 標準錯誤 重新導向到 標準輸出 , 讓你可以一起看到這兩者輸出 .

通常呢 !!!!
如果你執行 
perl xxx.pl 2>&1 > debug.log
執行完畢後 , 你可以從 debug.log 檔案中看到所有的 標準錯誤 標準輸出

perl xxx.pl 1>out.log 2>err.log
則 out.log 為標準輸出 , err.log 為標準錯誤 .

">" : 一般資訊到log  錯誤資訊留在螢幕
">&"  : stdout 及 stderr 重導向到檔案(command >& file)

UNIX 系統中的垃圾桶,專門供你處理不必要輸出訊息 :“/dev/null”
例:ps axu | grep cron | grep -v grep >& /dev/null


傳送指令
  1. 標準輸入(stdin) :代碼為 0 ,使用 < 或 <<
  2. 標準輸出(stdout):代碼為 1 ,使用 > 或 >>
  3. 標準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>>
下達 2>&1:標準輸出與標準錯誤輸出同時寫入同一個檔案 

[csie@linux ~]$ find /home -name testing > list 2> list  <==目前系統這寫法也可以
## 習題:請問上面命令的執行結果為何?
[csie@linux ~]$ find /home -name testing > list 2>&1     <==正確寫法

沒有留言:

張貼留言

標籤