好奇開(kāi)發(fā)人員使用哪些Linux命令嗎? 有什么技巧呢? 讓我們帶你走進(jìn)程序開(kāi)發(fā)人員的日常工作吧。
端口轉(zhuǎn)發(fā)(Port forwarding)
有時(shí)候我需要連接到數(shù)據(jù)庫(kù),當(dāng)然我更喜歡使用我的GUI管理器(JetBrains DataGrip)來(lái)做這件事。但是,如果你公司的安全策略規(guī)定數(shù)據(jù)庫(kù)的端口不能公開(kāi),那么你可以執(zhí)行以下命令:
ssh -L{你PC端的端口號(hào)}:localhost:{數(shù)據(jù)庫(kù)端的端口號(hào)} root@{服務(wù)器IP地址}
下面這行命令將打開(kāi)你的筆記本電腦上的3308端口,并將所有內(nèi)容轉(zhuǎn)發(fā)到IP地址為192.168.1.2的服務(wù)器的3306端口上:
ssh-L3308:localhost:3306root@192.168.1.2
這里的localhost意味著數(shù)據(jù)庫(kù)正在偵聽(tīng)服務(wù)器(192.168.1.2)自身。你也可以鍵入一個(gè)不同的服務(wù)器IP地址,如192.168.3.77,這樣所有內(nèi)容都將通過(guò)192.168.1.2轉(zhuǎn)發(fā)到服務(wù)器192.168.3.77。
在VIM中編輯文件前忘記sudo,保存時(shí)需要sudo權(quán)限怎么辦?
你是否曾經(jīng)在編輯一些配置文件前,忘記了先sudo獲得權(quán)限?我有過(guò)很多這樣的經(jīng)歷。別緊張,這里有一個(gè)保存文件的技巧,只要在VIM中鍵入:
:w !sudotee %
在Linux控制終端上到達(dá)行首和行尾
如果你在Linux控制終端上寫(xiě)了一條很長(zhǎng)的命令,這時(shí)候你發(fā)現(xiàn)你忘記了在這行命令的開(kāi)始處鍵入sudo,你需要回到行首添上漏掉的sudo,然后,你還要回到行尾去添加一些參數(shù)。
你可以通過(guò)同時(shí)按下crtl + a移動(dòng)光標(biāo)到行首,同樣地,你也可以通過(guò)同時(shí)按下 crtl + e移動(dòng)光標(biāo)到行尾。
ll命令
鍵入ll而不是ls –la命令,可以讓你在一年中節(jié)省幾天敲鍵盤(pán)的時(shí)間。這個(gè)命令適用于大多數(shù)Linux服務(wù)器。
執(zhí)行以前執(zhí)行的命令
執(zhí)行上一個(gè)命令
想要再次執(zhí)行上一個(gè)命令,當(dāng)然可以按↑(向上箭頭)鍵。但你也可以直接敲鍵盤(pán)?。?。 以根用戶(hù)身份重復(fù)執(zhí)行上一個(gè)命令非常容易。就像下面這樣:
sudo ??!
如果要重復(fù)執(zhí)行以apt開(kāi)頭的上一個(gè)命令,直接鍵入!apt。
搜索歷史命令
要查找你執(zhí)行過(guò)的上一個(gè)包含/tmp的命令,可以按ctrl + r,并且鍵入/tmp。如果你還想得到下一個(gè)結(jié)果,可以再次按下ctrl + r。
要顯示所有執(zhí)行過(guò)的包含/tmp的命令,可以使用正則表達(dá)式搜索,命令如下:
history | grep “/tmp”
yes命令
如果你想對(duì)一個(gè)命令中出現(xiàn)的問(wèn)題都回答“是”,那么你可以用yes命令。例如:
yes | yum install curl
這個(gè)命令會(huì)對(duì)yum安裝過(guò)程中的所有問(wèn)題都回答“yes”。
如果你想回答“no”的話(huà),那么就用yes no, 命令如下:
yesno| yum install curl
警告:使用yes命令可能會(huì)產(chǎn)生一些意想不到的后果。比如說(shuō),你可能會(huì)意外地安裝10GB的依賴(lài)項(xiàng),或其他你不想發(fā)生的事情。
在后臺(tái)運(yùn)行一個(gè)長(zhǎng)時(shí)進(jìn)程時(shí),關(guān)閉終端窗口
如果你運(yùn)行一個(gè)腳本,需要3天的時(shí)間,那么你不需要一直打開(kāi)終端窗口。你可以使用nohup命令在后臺(tái)運(yùn)行它:
nohup wget http://large-files.com/10gb-super-movie.avi &
這樣的話(huà),wget命令就在后臺(tái)工作,它的輸出會(huì)保存到工作目錄下的nohup.out文件中。
查找是誰(shuí)占用了你最喜歡的端口
當(dāng)你試圖運(yùn)行nginx的時(shí)候,你發(fā)現(xiàn)已經(jīng)有一個(gè)apache在運(yùn)行,并且占用了你想要用的443端口,這讓你真的很惱火。
這時(shí)候,你需要知道是誰(shuí)正在使用這個(gè)端口。下面的命令可以告訴你哪個(gè)進(jìn)程正在偵聽(tīng)端口80:
$ netstat -tulpn | grep80tcp6 00 :::80 :::* LISTEN 10177/java
找到了,那個(gè)偵聽(tīng)80端口的是進(jìn)程10177?,F(xiàn)在你可以執(zhí)行下面的命令來(lái)找到更多的信息:
ps aux | grep 10177
讀取日志文件
每個(gè)人都知道,less是讀取日志文件的一種非常好的方法。但是你知道它也可以讀取一個(gè)用gzip壓縮過(guò)的日志而無(wú)需解壓縮嗎!
less /var/log/my-app/my-app.log.2015.12.14.gz
實(shí)時(shí)讀取日志文件
下面的命令將只顯示指定日志文件中包含“ERROR”字符的新行:
tail -f /var/log/my-app/my-app.log | grep ERROR
進(jìn)程排序
下面的命令是按CPU使用率排序,顯示最高的3個(gè)進(jìn)程:
ps aux --sort=-pcpu | head -n 4
下面的命令是按內(nèi)存使用率排序,顯示最高的3個(gè)進(jìn)程:
ps aux --sort=-rss | head -n 4
每隔X秒執(zhí)行一次命令
要每隔X秒打印命令的輸出,可以使用watch命令。下面的例子是每隔一秒打印一次date命令的輸出:
watch -n 1 dat
安靜模式
很多標(biāo)準(zhǔn)命令都有安靜模式或靜默模式,這個(gè)模式在你創(chuàng)建一個(gè)bash腳本時(shí)非常有用。在大多數(shù)情況下,只需要在命令后面添加-q或-s(如下)。詳細(xì)信息可以閱讀 --help或man輸出的內(nèi)容,或者上StackOverflow網(wǎng)站查找。
zip-qarchive.zipbig-file.jpg
輸出不可避免時(shí),有時(shí)候也必須忽略輸出(實(shí)際上在使用內(nèi)部腳本你總是需要這樣做),這時(shí)候你可以將輸出定向到/dev/null:
。/very-verbose.sh 1》/dev/null
讓crontab(自動(dòng)定時(shí))執(zhí)行的腳本創(chuàng)建日志文件
在crontab中輸入以下命令。 如果腳本執(zhí)行失敗,您也可以在生成的日志中搜索原因:
022 * * 1-5 /opt/scripts/send-report.sh 2》/var/log/scripts/report-error.log
評(píng)論
查看更多