原文地址:http://cloud.csdn.net/a/20120321/313378.html
Linux入門必備
- 了解bash:沒有必要鉆研長篇累牘的bash使用手冊,通過man bash學習即可。
- 了解vi:你在工作中也許會使用Emacs或Eclipse,但vi不可替代。
- 了解ssh:學習無密碼驗證的基礎知識。
- bash作業管理基礎知識:如使用&、Ctrl-C、fg、bg、Ctrl-Z、jobs和kill等。
- 文件管理命令:如硬鏈接和軟鏈接,權限等。
- 網絡管理命令:如ifconfig等。
- 如何使用正則表達式,如何使用grep、sed等。
- 學習使用apt-get和yum管理軟件包。
提升日常工作效率
- 在bash中,可以使用Ctrl+R命令搜索命令行歷史記錄。
- 在bash中,可以使用Ctrl+W刪除最后一個單詞,使用Ctrl+U刪除整行。
- 使用cd -命令返回之前的工作目錄,使用cd ..命令返回上層目錄。
- 學習如何使用xargs:
- $?find?.?-name?*.py?|?xargs?grep?some_function ?
- $?cat?hosts?|?xargs?-I{}?ssh?root@{}?hostnameX?
- 使用pstree -p命令查看進程樹。
- 了解不同的信號。例如,使用kill -STOP [PID]終止進程。詳細的信號列表可以在man 7 signal中查看。
- 如果你想讓進程永遠在后臺運行,可以使用nohup和disown命令。
- 使用netstat -lntp命令查看偵聽進程,并參考lsof命令。
- 在bash腳本中使用subshells對命令進行分組:
- #do?something?in?current?dir ?
- (cd?/some/other/dir;?other-command) ?
- #continue?in?original?dir?
- 字符串修剪(Trimming Strings):${var%suffix}和${var#prefix}。例如if var=foo.pdf then echo ${var%.pdf}.txt prints "foo.txt"。
- 命令的輸出可以當做文件使用。例如,比較本地和遠程的/etc/hosts文件:
- diff?/etc/hosts?<(ssh?somehost?cat?/etc/hosts)?
- 了解bash中的“here documents”。
- 了解標準輸出和標準錯誤重定向。
- 了解ASCII代碼表。可以在終端中運行man ascii命令作為參考。
- 當通過ssh遠程工作時,可以使用screen 或 dtach保存回話。
- 對Web開發者而言,curl、wget等命令非常實用。
- 將HTML頁面轉化文本文件:
- lynx?-dump?-stdin?
- 如果要掌握XML,xmlstarlet命令是非常好的工具。
- 了解ssh端口映射。
- 使用Alt+shift+3快捷鍵可以在行前添加注釋“#”。
數據處理
- 了解sort和uniq命令。
- 了解cut、paste和join命令。
- 了解如何對文本文件做交集、并集和差集:
- cat?a?b?|?sort?|?uniq?>?c?#?c?is?a?union?b ?
- cat?a?b?|?sort?|?uniq?-d?>?c?#?c?is?a?intersect?b ?
- cat?a?b?b?|?sort?|?uniq?-u?>?c?#?c?is?set?difference?a?–?b?
- 對文本文件的第二列做摘要,下面的代碼要比同樣的Python代碼更精煉、快速(3倍):
- awk?'{?x?+=?$2?}?END?{?print?x?}'?
- 了解字符串和grep命令。
- 文件分割:了解split(按大小分割)和csplit(按匹配分割)命令。
系統診斷
- 使用iostat、netstat、top和dstat命令查看磁盤、處理器和網絡的狀態。
- 使用free、vmstat等命令了解系統內存狀態。
- 使用mtr網絡診斷工具。
- 使用iftop、nethogs等工具查看占用帶寬的進程和帶寬。
- 使用ab工具快速洞悉Web服務器的性能。
- 以wireshark和tshark命令應對復雜網絡診斷。
- 學習如何使用strace,并用于診斷運行的進程。這對分析程序運行錯誤的原因,非常有幫助。
- 使用ldd命令查看共享庫文件。
- 了解如何使用gdb連接到運行中的進程,并進行堆棧跟蹤。
- 有關/proc的知識非常重要。
- 如何診斷已發生的錯誤?Sar命令是一種很好的選擇,它可以收集、保存并報告系統信息。