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

Linux認(rèn)證

13923776320 免費(fèi)試聽 在線客服

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

杭州Linux技巧培訓(xùn)機(jī)構(gòu)哪家好

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

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

杭州Linux技巧培訓(xùn)機(jī)構(gòu)哪家好


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


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


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


▌基礎(chǔ)


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

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


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


熟悉bash的作業(yè)管理,如: &, Ctrl-Z, Ctrl-C, jobs, fg, bg, kill, 等等。當(dāng)然,你也要知道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)缺點(diǎn)), chown, chmod, du (如果你想看看磁盤的大小 du -sk *), df, mount。當(dāng)然,原作者忘了find命令。


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


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


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


▌日常


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


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


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


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

示例:

1

2

3

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

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


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


使用 pgrep 和 pkill 來找到或是kill 某個(gè)名字的進(jìn)程。 (-f 選項(xiàng)很有用).


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


使用 nohup 或 disown 如果你要讓某個(gè)進(jìn)程運(yùn)行在后臺(tái)。


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


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


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

1

2

3

# do something in current dir

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

# continue in original dir


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

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

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

  • 一個(gè)計(jì)算表達(dá)式: i=$(( (i 1) % 5 ))。

  • 一個(gè)序列: {1..10}。

  • 截?cái)嘁粋€(gè)字符串: ${var%suffix} 和 ${var#prefix}。 示例: if var=foo.pdf, then echo ${var%.pdf}.txt prints “foo.txt”.


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


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


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


使用 man ascii 來查看 ASCII 表。


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


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


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


如果你要處理XML,使用 xmlstarlet


對(duì)于 Amazon S3, s3cmd 是一個(gè)很方便的命令(還有點(diǎn)不成熟)


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


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

1

2

3

4

5

6

TCPKeepAlive=yes

ServerAliveInterval=15

ServerAliveCountMax=6

StrictHostKeyChecking=no

Compression=yes

ForwardAgent=yes


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


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


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


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


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

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


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


使用 shuf 來打亂一個(gè)文件中的行或是選擇文件中一個(gè)隨機(jī)的行。


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


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


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


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


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


對(duì)于文本文件轉(zhuǎn)碼,你可以試一下 iconv?;蚴窃囋嚫鼜?qiáng)的 uconv 命令(這個(gè)命令支持更高級(jí)的Unicode編碼)


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


咨詢電話【詹老師】:17706505315

了解更多的杭州Linux認(rèn)證課程>>>>杭州Linux認(rèn)證培訓(xùn)

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


熱門機(jī)構(gòu)推薦
Linux認(rèn)證

免費(fèi)體驗(yàn)課開班倒計(jì)時(shí)

11: 41: 09

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

咨詢電話:13923776320

本周熱門資訊

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

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

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

申請(qǐng)?jiān)嚶犆~

QQ:929158207
加盟合作:0755-83654572