首頁 培訓網(wǎng) 最新資訊 熱門問答

Linux認證

13923776320 免費試聽 在線客服

您的位置: 杭州培訓網(wǎng) > Linux認證培訓資訊 > 杭州Linux技巧培訓機構(gòu)哪家好

杭州Linux技巧培訓機構(gòu)哪家好

來源:教育聯(lián)展網(wǎng) | 發(fā)布時間: | 編輯:佚名

我覺得挺好的,總結(jié)得比較好,把其轉(zhuǎn)過來,并加了一些自己的理解。 首先,我想告訴大家,在Unix/Linux下,**有效率技巧的不是操作圖形界面,而是命令行操作,因為命令行意味著自動化。如果你看過《你可能不知道的Shell》以及《28個Unix/Linux的命令行神器》你就會知道Linux有多強大,這個強大完全來自于命令行,于是,就算你不知道怎么去做一個環(huán)保主義的程序員,至少他們可以讓你少熬點夜,從而有利于你的身體健康和性生活。

杭州Linux技巧培訓機構(gòu)哪家好


我覺得挺好的,總結(jié)得比較好,把其轉(zhuǎn)過來,并加了一些自己的理解。


首先,我想告訴大家,在Unix/Linux下,**有效率技巧的不是操作圖形界面,而是命令行操作,因為命令行意味著自動化。如果你看過《你可能不知道的Shell》以及《28個Unix/Linux的命令行神器》你就會知道Linux有多強大,這個強大完全來自于命令行,于是,就算你不知道怎么去做一個環(huán)保主義的程序員,至少他們可以讓你少熬點夜,從而有利于你的身體健康和性生活。


下面是一個有點長的列表,正如作者所說,你并不需要知道所有的這些東西,但是如果你還在很沉重地在使用Linux的話,這些東西都值得你看一看。 (作者注:如果你想知道下面涉及到的命令的更多的用法,你一定要man一點。對于一些命令,你可以需要先yum或apt-get來安裝一下,如果有什么問題,別忘了Google。如果你要Baidu的話,我僅代表這個地球上所有的生物包括微生物甚至細菌病毒和小強BS你到宇宙毀滅)


▌基礎(chǔ)


學習 Bash 你可以man bash來看看bash的東西,并不復雜也并不長。你用別的shell也行,但是bash是很強大的并且也是系統(tǒng)默認的。(學習zsh或tsch只會讓你在很多情況下受到限制)

學習 vim 。在Linux下,基本沒有什么可與之競爭的編譯輯器(就算你是一個Emacs或Eclipse的重度用戶)。你可以看看《簡明vim攻略(小編注:點擊“閱讀原文”,即可閱讀此文章)和 《Vim的冒險游戲》以及《給程序員的Vim速查卡》還有《把Vim變成一個編程的IDE》等等。


了解 ssh。明白不需要口令的用戶認證(**ssh-agent, ssh-add),學會用ssh翻墻,用scp而不是ftp傳文件,等等。你知道嗎?scp 遠端的時候,你可以按tab鍵來查看遠端的目錄和文件(當然,需要無口令的用戶認證),這都是bash的功勞。


熟悉bash的作業(yè)管理,如: &, Ctrl-Z, Ctrl-C, jobs, fg, bg, kill, 等等。當然,你也要知道Ctrl \(SIGQUIT)和Ctrl C (SIGINT)的區(qū)別。


簡單的文件管理 : ls 和 ls -l (你**知道 “l(fā)s -l” 的每一列的意思), less, head, tail 和 tail -f, ln 和 ln -s (你知道明白hard link和soft link的不同和優(yōu)缺點), chown, chmod, du (如果你想看看磁盤的大小 du -sk *), df, mount。當然,原作者忘了find命令。


基礎(chǔ)的網(wǎng)絡管理: ip 或 ifconfig, dig。當然,原作者還忘了如netstat, ping, traceroute, 等


理解正則表達式,還有g(shù)rep/egrep的各種選項。比如: -o, -A, 和 -B 這些選項是很值得了解的。


學習使用 apt-get 和 yum 來查找和安裝軟件(前者的經(jīng)典分發(fā)包是Ubuntu,后者的經(jīng)典分發(fā)包是Redhat),我還建議你試著從源碼編譯安裝軟件。


▌日常


在 bash 里,使用 Ctrl-R 而不是上下光標鍵來查找歷史命令。


在 bash里,使用 Ctrl-W 來刪除**后一個單詞,使用 Ctrl-U 來刪除一行。請man bash后查找Readline Key Bindings一節(jié)來看看bash的默認熱鍵,比如:Alt-. 把上一次命令的**后一個參數(shù)打出來,而Alt-* 則列出你可以輸入的命令。


回到上一次的工作目錄: cd – (回到home是 cd ~)


使用 xargs。這是一個很強大的命令。你可以使用-L來限定有多少個命令,也可以用-P來指定并行的進程數(shù)。如果你不知道你的命令會變成什么樣,你可以使用xargs echo來看看會是什么樣。當然, -I{} 也很好用。

示例:

1

2

3

find . -name \*.py | xargs grep some_function

cat hosts | xargs -I{} ssh root@{} hostname


pstree -p 可以幫你顯示進程樹。(讀過我的那篇《一個fork的面試題》的人應該都不陌生)


使用 pgrep 和 pkill 來找到或是kill 某個名字的進程。 (-f 選項很有用).


了解可以發(fā)給進程的信號。例如:要掛起一個進程,使用 kill -STOP [pid]. 使用 man 7 signal 來查看各種信號,使用kill -l 來查看數(shù)字和信號的對應表


使用 nohup 或 disown 如果你要讓某個進程運行在后臺。


使用netstat -lntp來看看有偵聽在網(wǎng)絡某端口的進程。當然,也可以使用 lsof。


在bash的腳本中,你可以使用 set -x 來debug輸出。使用 set -e 來當有錯誤發(fā)生的時候abort執(zhí)行??紤]使用 set -o pipefail 來限制錯誤。還可以使用trap來截獲信號(如截獲ctrl c)。


在bash 腳本中,subshells (寫在圓括號里的) 是一個很方便的方式來組合一些命令。一個常用的例子是臨時地到另一個目錄中,例如:

1

2

3

# do something in current dir

(cd /some/other/dir; other-command)

# continue in original dir


在 bash 中,注意那里有很多的變量展開。如:

  • 檢查一個變量是否存在: ${name:?error message}。

  • 如果一個bash的腳本需要一個參數(shù),也許就是這樣一個表達式 input_file=${1:?usage: $0 input_file}。

  • 一個計算表達式: i=$(( (i 1) % 5 ))。

  • 一個序列: {1..10}。

  • 截斷一個字符串: ${var%suffix} 和 ${var#prefix}。 示例: if var=foo.pdf, then echo ${var%.pdf}.txt prints “foo.txt”.


** <(some command) 可以把某命令當成一個文件。示例:比較一個本地文件和遠程文件 /etc/hosts: diff /etc/hosts <(ssh somehost cat /etc/hosts)


了解什么叫 “here documents ,就是諸如 cat <<EOF 這樣的東西。


在 bash中,使用重定向到標準輸出和標準錯誤。如: some-command >logfile 2>&1。另外,要確認某命令沒有把某個打開了的文件句柄重定向給標準輸入,**實踐是加上 “</dev/null”,把/dev/null重定向到標準輸入。


使用 man ascii 來查看 ASCII 表。


在遠端的 ssh 會話里,使用 screen 或 dtach 來保存你的會話。(參看《28個Unix/Linux的命令行神器》)


要來debug Web,試試curl 和 curl -I 或是 wget 。我覺得debug Web的利器是firebug,curl和wget是用來抓網(wǎng)頁的,呵呵。


把 HTML 轉(zhuǎn)成文本: lynx -dump -stdin


如果你要處理XML,使用 xmlstarlet


對于 Amazon S3, s3cmd 是一個很方便的命令(還有點不成熟)


在 ssh中,知道怎么來使用ssh隧道。** -L or -D (還有-R) ,翻墻神器。


你還可以對你的ssh 做點優(yōu)化。比如,.ssh/config 包含著一些配置:避免鏈接被丟棄,鏈接新的host時不需要確認,轉(zhuǎn)發(fā)認證,以前使用壓縮(如果你要使用scp傳文件):

1

2

3

4

5

6

TCPKeepAlive=yes

ServerAliveInterval=15

ServerAliveCountMax=6

StrictHostKeyChecking=no

Compression=yes

ForwardAgent=yes


如果你有輸了個命令行,但是你改變注意了,但你又不想刪除它,因為你要在歷史命令中找到它,但你也不想執(zhí)行它。那么,你可以按下 Alt-# ,于是這個命令關(guān)就被加了一個#字符,于是就被注釋掉了。


數(shù)據(jù)處理


了解 sort 和 uniq 命令 (包括 uniq 的 -u 和 -d 選項).


了解用 cut, paste, 和 join 命令來操作文本文件。很多人忘了在cut前使用join。


如果你知道怎么用sort/uniq來做集合交集、并集、差集能很大地促進你的工作效率。假設有兩個文本文件a和b已解被 uniq了,那么,用sort/uniq會是**快的方式,無論這兩個文件有多大(sort不會被內(nèi)存所限,你甚至可以使用-T選項,如果你的/tmp目錄很?。?/span>

1

2

3

4

5

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 差集


了解和字符集相關(guān)的命令行工具,包括排序和性能。很多的Linux安裝程序都會設置LANG 或是其它和字符集相關(guān)的環(huán)境變量。這些東西可能會讓一些命令(如:sort)的執(zhí)行性能慢N多倍(注:就算是你用UTF-8編碼文本文件,你也可以很安全地使用ASCII來對其排序)。如果你想Disable那個i18n 并使用傳統(tǒng)的基于byte的排序方法,那就設置export LC_ALL=C (實際上,你可以把其放在 .bashrc)。如果這設置這個變量,你的sort命令很有可能會是錯的。


了解 awk 和 sed,并用他們來做一些簡單的數(shù)據(jù)修改操作。例如:求第三列的數(shù)字之和: awk ‘{ x = $3 } END { print x }’。這可能會比Python快3倍,并比Python的代碼少三倍。


使用 shuf 來打亂一個文件中的行或是選擇文件中一個隨機的行。


了解sort命令的選項。了解key是什么(-t和-k)。具體說來,你可以使用-k1,1來對**列排序,-k1來對全行排序。


Stable sort (sort -s) 會很有用。例如:如果你要想對兩例排序,先是以第二列,然后再以**列,那么你可以這樣: sort -k1,1 | sort -s -k2,2


我們知道,在bash命令行下,Tab鍵是用來做目錄文件自動完成的事的。但是如果你想輸入一個Tab字符(比如:你想在sort -t選項后輸入<tab>字符),你可以先按Ctrl-V,然后再按Tab鍵,就可以輸入<tab>字符了。當然,你也可以使用$’\t’。


如果你想查看二進制文件,你可以使用hd命令(在CentOS下是hexdump命令),如果你想編譯二進制文件,你可以使用bvi命令(http://bvi.sourceforge.net/ 墻)


另外,對于二進制文件,你可以使用strings(配合grep等)來查看二進制中的文本。


對于文本文件轉(zhuǎn)碼,你可以試一下 iconv。或是試試更強的 uconv 命令(這個命令支持更高級的Unicode編碼)


如果你要分隔一個大文件,你可以使用split命令(split by size)和csplit命令(split by a pattern)。


系統(tǒng)調(diào)試


如果你想知道磁盤、CPU、或網(wǎng)絡狀態(tài),你可以使用 iostat, netstat, top (或更好的 htop), 還有 dstat 命令。你可以很快地知道你的系統(tǒng)發(fā)生了什么事。關(guān)于這方面的命令,還有iftop, iotop等(參看《28個Unix/Linux的命令行神器》)


要了解內(nèi)存的狀態(tài),你可以使用free和vmstat命令。具體來說,你需要注意 “cached” 的值,這個值是Linux內(nèi)核占用的內(nèi)存。還有free的值。


Java 系統(tǒng)監(jiān)控有一個小的技巧是,你可以使用kill -3 <pid> 發(fā)一個SIGQUIT的信號給JVM,可以把堆棧信息(包括垃圾回收的信息)dump到stderr/logs。


使用 mtr 會比使用 traceroute 要更容易定位一個網(wǎng)絡問題。


如果你要找到哪個socket或進程在使用網(wǎng)絡帶寬,你可以使用iftop 或 nethogs。


Apache的一個叫 ab 的工具是一個很有用的,用quick-and-dirty的方式來測試網(wǎng)站服務器的性能負載的工作。如果你需要更為復雜的測試,你可以試試 siege。


如果你要抓網(wǎng)絡包的話,試試 wireshark 或 tshark。


了解 strace 和 ltrace。這兩個命令可以讓你查看進程的系統(tǒng)調(diào)用,這有助于你分析進程的hang在哪了,怎么crash和failed的。你還可以用其來做性能profile,使用 -c 選項,你可以使用-p選項來attach上任意一個進程。


了解用ldd命令來檢查相關(guān)的動態(tài)鏈接庫。注意:ldd的安全問題


使用gdb來調(diào)試一個正在運行的進程或分析core dump文件。參看我寫的《GDB中應該知道的幾個調(diào)試方法


學會到 /proc 目錄中查看信息。這是一個Linux內(nèi)核運行時記錄的整個操作系統(tǒng)的運行統(tǒng)計和信息,比如: /proc/cpuinfo, /proc/xxx/cwd, /proc/xxx/exe, /proc/xxx/fd/, /proc/xxx/smaps.


如果你調(diào)試某個東西為什么出錯時,sar命令會有用。它可以讓你看看 CPU, 內(nèi)存, 網(wǎng)絡, 等的統(tǒng)計信息。


使用 dmesg 來查看一些硬件或驅(qū)動程序的信息或問題。


咨詢電話【詹老師】:17706505315

了解更多的杭州Linux認證課程>>>>杭州Linux認證培訓

了解更多的杭州培訓課程>>>>杭州培訓網(wǎng)


熱門機構(gòu)推薦
Linux認證

免費體驗課開班倒計時

11: 41: 09

稍后會有專業(yè)老師給您回電,請保持電話暢通

咨詢電話:13923776320

本周熱門資訊

全國分站 熱門機構(gòu)

北京Linux認證培訓 上海Linux認證培訓 廣州Linux認證培訓 深圳Linux認證培訓 杭州Linux認證培訓 蘇州Linux認證培訓 南京Linux認證培訓 天津Linux認證培訓 佛山Linux認證培訓 南寧Linux認證培訓 長沙Linux認證培訓 重慶Linux認證培訓 太原Linux認證培訓 青島Linux認證培訓 寧波Linux認證培訓 鄭州Linux認證培訓 西安Linux認證培訓 廈門Linux認證培訓 武漢Linux認證培訓 成都Linux認證培訓 無錫Linux認證培訓 濟南Linux認證培訓 昆明Linux認證培訓 貴陽Linux認證培訓 揚州Linux認證培訓 徐州Linux認證培訓 珠海Linux認證培訓 合肥Linux認證培訓 長春Linux認證培訓

珠海達內(nèi)教育武漢達內(nèi)教育石家莊達內(nèi)教育鄭州達內(nèi)教育

申請試聽名額

已有10254人申請免費試聽

01電話咨詢 | 13923776320

QQ:929158207
加盟合作:0755-83654572

今日已有25人申請,本月限額500