2011年5月26日 星期四

[Unix] awk: Too many open files @ FreeBSD

之前用 awk 練習,[Unix] 簡易分析 Squid 產生的 log @ FreeBSD,結果最近跑的時候開始碰到這個問題:Too many open files,一時之間還以為是自己程式的 bug,最後發現是 awk 裡有用到 pipe 等相關開檔動作,做完要記得 close 就行了。


簡易範例:


awk  ' { data[$1]++ } END { for( d in data ) { cmd = "wc -l /tmp/file";  cmd | getline result ;  close( cmd );   print result;   }   }'


由於是跑迴圈,資料多筆時就會碰到 Too many open files 的問題,只要把每個 pipe 或 file 相關的動作都有 close 掉就能解決囉。


沒有留言:

張貼留言