後端工程師的第一堂課 (23) : Linux 常用指令
這是篇共 30 篇的後端領域入門系列文章,預計 1 -2 週新增 1 個新文章。
在後端領域有許多資源在告訴我們怎麼寫好 Python, Golang, Java, PHP … 等各種程式語言。但卻很少告訴我們怎麼學會 Web 後端領域 的知識。
希望你可以透過這篇文章,搭配你正熟悉中的某門任何程式語言,讓你順利入門 Web 後端 :)
【後端工程師的第一堂課】全系列: https://medium.com/@johnliutw/list/da301cc31b15
此篇筆者想介紹許多常用的 Linux 指令,希望讀者能學會應用,並熟悉這些指令,讓自己在 google 查各種系統指令時,能知道自己下的指令到底能做到哪些事 :)
文件操作
grep
grep 可以不用打開文件,就能查詢檔案內的文字,
因為有些 log 檔很大,如果一個一個開很吃效能。
$ grep “被搜尋的文字名稱” 你的檔案名稱
第二行就是搜到文字結果的位置
搜尋字詞前面如果加前綴詞 -i
,則是不區分大小寫的模式
$ grep -i “被搜尋的文字名稱” 你的檔案名稱
diff
Diff 可以簡單比較兩個檔案的差異,讓你發現不一樣之處。
$ diff 被比較的檔案 比較的檔案
輸出的結果會用— — —
這個符號區分,
上半部是第一個檔案不同的部分,下半部則是第二個檔案不同的部分。
vim
vim 是一個非常古老的編輯器,可以在純文字作業系統的介面,開啟檔案編輯內容。
$ vim 要被編輯的檔案
指令下完後,出現的畫面:
vim 的操作方式比較特別,推薦可以參考此篇五倍龍哥分享的 vim 教學:
檔案操作
rm
rm 是用來刪除檔案的指令
$ rm 要被刪除的檔案
rm 後面加個 -r 的前綴詞,就是指要刪除資料夾,與裡面全部內容
$ rm -r 要被刪除的資料夾
cp
cp可以複製檔案,有些服務的server設定檔會提供一個sample檔案,讀者就可以直接複製整個檔案。
$ cp 要被複製的檔案 複製好後的檔案名稱
mv
mv 可以重新命名一個檔案
$ mv 要被改名的檔案 新的檔案名稱
find
find 指令可以在你執行指令的目錄下,做全域搜尋,找指定的檔案,並回傳路徑
$ find -iname “要被搜尋的檔案名稱”
cat
cat 指令可以在電腦裡面快速查看某個檔案的內容,速度是用 vim 開檔案的好幾倍快,因此如果只是查看檔案,而不是要編輯,可以使用 cat 處理
$ cat “要查看的檔案名稱”
系統操作
ps
ps 指令可以看當下運行的程序(process),以及他對應的 ID (PID),
使用情境像是,確認我下指令 run 的軟體有沒有真的 run 起來。
$ ps
像我上面就運行了一個本地的 web server (31061) 和不同透過 terminal 執行的服務。
如果要看包含應用程式以及各種細項的話,就這樣寫:
$ ps -ef
這邊就可以搭配 grep 指令,尋找自己想要的服務的 id 喔:
$ ps ef | grep ‘ruby’
上面指令中的 |
則是所謂的 pipeline,可以幫助兩個指令的接力合作,像是該示範指令的意思就是說將 ps ef
指令執行結果儲存下來,並且幫做基本資料,傳送給 grep 'ruby'
,來搜尋目前執行的服務中,有沒有含有 ruby 這個值!
kill
找到想要的 pid 後,也可以使用 kill 程序強迫把該程序關閉。
$ kill -9 程序的pid
像下面的例子,就是使用 kill 指令,刪除 python 的程序。
chmod
chmod 這個指令是權限的意思,有些程序需要較高的編輯、建立、刪除等權限,因為就像一般 windows 作業系統一樣,一個 Linux 也可能有多個使用者,因此,此指令用到的機率非常高。
$ chmod 設定的權限 檔案名稱
下面的範例,是讓該檔案變成任何使用者皆有所有的權限
關於權限的相關細節,歡迎參考鳥哥的教學:
網路傳輸
curl
curl 指令常用來抓取某個網頁,或下載檔案。
$ curl 你要抓取的網址
ping
ping 是用來測試連接到一個網頁的連線狀況
$ ping 要測試的網址
如果想用中止呢,就按 ctrl + c 就可以了( Mac 使用者是 command + c)~
apt-get
apt-get 是專門給 ubuntu, debian 等 Linux 系統使用的套件下載軟體,
$ apt-get 動作 要被做此動作的套件
像下面的範例就是安裝 python ,輸入指令後,就會幫我自動安裝 python
ssh
ssh 是用來遠端連線,這是非常常用到的指令,因為公司的產品經常部署在雲端的機器上,要連到雲端的機器,大都要透過 ssh 方式連接進去。
$ ssh 你要連結的機器位置
下面範例中,我透過 ssh 指令連到一台叫做 pig_test
的機器:
此為我透過其他指令 alias
,來設定機器位置的縮寫,其完整格式應為:
ssh {user_name}@{ip} -p {port}
例如: ssh root@120.0.0.1 -p 22