ref: https://wiki.bash-hackers.org/howto/redirection_tutorial
本篇是個 Linux 相關的教學文,專注於透過視覺化的方式來教學到底 shell 上常常使用的 >, 2>&1 等差異是什麼。
舉例來說,你能不能清楚的說出下列兩種用法的差異,實際上 fd 到底會怎麼運作?
1. > file 2>&1
2. 2>&1 > file
亦或是某些 shell script 常看到 exec 2>log 到底是什麼意思?
本篇文章解釋得非常清除,透過 /dev/pts 這種 pseudo terminal 為起點,將 0(stdin), 1(stdout), 2(stderr) 三個 fd 給視覺化呈現。
基於這個概念開始探討下列不同指令實際上 fd 會有什麼變化
# Simple Redirections
">" 應該是最為簡單也最廣為人知的用法,command > file 的方式將輸入(stdout)給導入檔案(file)。
那加上數字後會有什麼變化呢? 譬如 command 1>file, command 3>file ?
下一個不能不知的就是 pipe 的概念,透過 pipe 能夠組合出各種指令來解決問題,到底 pipe(|) 的過程中這些 fd 是什麼變化?
# More On File Descriptors
另外一個很常被問到的用法就是,有沒有辦法將 stderr 跟 stdout 一起輸出?
這時候可能就會看到 1>&2 2>&1 等各種答案,那到底這些語法的背後是什麼意思?
非常推薦所有人都仔細閱讀這篇文章重新複習/學習這類型操作的底層變化。
linux log指令 在 矽谷牛的耕田筆記 Facebook 的精選貼文
ref: https://cmdchallenge.com/#/hello_world
今天分享的是一個有趣的 Command Line Interface(CLI) 挑戰,該挑戰主要是基於 Linux bash 的環境有一系列的指令挑戰
挑戰內容基本上都不會太困難,一開始都是非常基礎的 Linux 指令操作,後面會需要使用 grep, sed, awk, find 等不同指令的組合來完成任務。
大部分的題目都會基於一些情境,譬如想要針對 httpd server 底下的 log 進行過濾,計算符合某些內容的行數等等
每道題目除了自行挑戰外也可以看一下別人的解決方案,不過解決方案中有一些是作弊的內容,譬如直接針對題目用 echo 輸出之類的,就滿搞笑的。
我認為這類型的挑戰有兩個值得去玩看看的理由
1. 測試自已是否能夠解決每一個問題,順便看一下自己的解決方式跟別人的比起來如何,有時候會有一些意想不到的指令與用法可以讓整個寫法更為簡潔
2. 如果有面試需求的時候,可以考慮從這邊找一些相關題目,看看面試者對於 shell script 的熟悉度,同時互相討論每個解法的好壞處。
歡迎愛寫 shell script 的人都寫一遍看看
linux log指令 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
ref: https://medium.com/100-days-of-linux/how-to-deal-with-too-many-open-files-log-storm-c617ba84143b
本文是一個經驗分享文,作者分享其 HTTP Server 遇到 599: Network Connection Timed out Error 錯誤時的除錯經驗。
作者發現到該錯時,趕緊檢查 Server 的錯誤訊息然後得到了下列內容
HTTP: Accept error: accept tcp [::]:
這個錯誤訊息非常明確,告知該 Server 開啟太多檔案了,導致沒有辦法繼續處理後續的網路請求。
不過對於不熟悉 Linux 系統設計的使用者來說這個錯誤訊息就不夠明顯,實際上 Linux 系統內所有的網路 Socket 底層都是一個又一個檔案結構(FD),所以該錯誤訊息也可以解釋為該 Server 開啟了過多的 Socket ,已經超過系統設定上限。
作者使用下列指令來找到當前開啟的 Socket(FD) 數量
lsof -u
為了解決這個問題,作者認為有兩個方向可以去嘗試
1. 提高整個 Server 能夠開啟的 Socket 數量上限
2. 確保 Server 將所有卡住沒使用的 Socket 都清除收回
後半部分文章作者介紹如何使用 ulimit 這個指令來觀察系統當前的設定,包含soft limit 以及 hard limit 兩種類型的差別,如何針對 socket 的部分來調高設定。
對於這方面有興趣的讀者可以閱讀一下,本篇文章滿短的,很快就可以消化完畢
linux log指令 在 [問題] 不輸出sudo 指令的log - 看板Linux - 批踢踢實業坊 的推薦與評價
最近工作上遇到了一個問題想請教看看有沒有人知道這個能不能解
是這樣的,Linux 的版本是 CentOS 6.9
然後因為有一些在背景執行的 shell script 會有 sudo 指令的操作
所以 log 的一直不斷的增加,經過排查後發現這些 sudo 都會被錄到
/var/log/sudo.log
/var/log/messages
這兩個檔案,等於是重複記錄了兩次,現在我希望只把 sudo 的 log
記錄到 /var/log/sudo.log 這個檔案就好,而不要到 /var/log/messages
想請問應該怎麼做呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.104.128.122 (日本)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1559557318.A.ECC.html
... <看更多>