前端開發人員必會的Linux命令

本文並不是一份完整的 Linux 實用命令列表,如果你的預期是這樣的,那這篇文章可能就要讓你失望了。

本文主要針對於 FEer 們。作為前端,一開始我們總是和 HTML/JavaScript/CSS 三大塊打交道,但是久而久之,我們就會接觸更多的內容,比如服務的部署。而這一塊對於我們的要求會更全面,其中對 Linux 指令就有很多要求。如果你想要部署服務,而又沒有成熟的工具或平臺可以藉助,需要完全自己來操作的話,你就

需要準備好部署服務需要的所有檔案、登入指定的伺服器、釋出指定檔案、啟動服務、伺服器啟動不成功時候進行除錯以及服務維護過程中進行問題的排查

。本文就將從這一條線講起,分享在工作中所積累的一些實用指令。

別看指令簡單,熟練使用後,你將會收穫:“哇,牛 B!”。

下面會從三個部分來講述相關的 Linux 命令,第一部分是服務部署前的準備,第二部分是登入伺服器部署,第三部分是問題排查相關。

一、部署前準備

前端的業務部署,簡單說起來就是把編譯好的靜態檔案準備好,放到伺服器就行。不簡單的,我們也從這種簡單的說起 。

通常情況下,我們會將編譯後的檔案以及服務啟動相關的檔案放到一個目錄裡,然後將其壓縮打包好。我們會比較高頻的使用以下幾個命令。

1。 mkdir 建立打包目錄

mkdir可以用來建立目錄,要求命令執行使用者有當前目錄的寫許可權,且建立的目錄不能已存在。如果建立的目錄已存在會給予提示,但不會報錯。如我們建立一個output目錄,提示如下。

前端開發人員必會的Linux命令

mkdir建立已存在目錄

mkdir的命令格式如下:mkdir [選項] <目錄名>。比較有用的引數是-p/——parent,該引數可以是一個路徑名。如果路徑中的某些目錄上不存在,加上此選項後,可以自動建立尚不存在的目錄,可以一次建立多個目錄。

如下,帶有引數 p 和不帶的對比:

前端開發人員必會的Linux命令

mkdir 引數p帶不帶對比

可以看出帶有引數 p 的命令會自動建立不存在的目錄。

2。 cp 複製內容

準備好了打包目錄之後,我們就需要複製我們需要的內容了。這時候就需要用到cp命令了。cp命令可以將原始檔複製到目標檔案,或者將多個原始檔複製到目標檔案。

命令格式如下:cp [選項] <原始檔> <目錄>。我覺得比較有用的引數有以下幾個:

-n/——no-clobber: 不要覆蓋已存在檔案,與下面的-i互斥使用。(經測試,cp的預設行為是覆蓋,至少 mac 是這樣的 )。

-i/——interactive: 覆蓋前詢問

-r: 遞迴複製,用於複製目錄

-f/——force: 強行復制檔案或內容,不論目的檔案或目錄是否已存在

-u/——update:只有在原始檔比目標檔案新時才複製

一般我們會有兩種操作,一種是複製目錄下的所有內容,一種是複製單個檔案。

如下我們將www目錄下的內容整體複製到output目錄,並且複製了單個檔案nginx。conf:

cp -r www/* output/www/;cp nginx。conf output/;

3。 tar 壓縮和解壓檔案

準備好檔案之後,接下來我們就可以打包壓縮檔案了。

tar 可以用來壓縮和解壓檔案。準備階段,我們只需要用到 tar 的壓縮功能,部署時會用到解壓功能。為了方便,放在一起講述。tar 的命令格式如下:tar [選項] <打包檔名> <檔案>。

比如 output 目錄的壓縮和解壓可以如下操作:

// 壓縮cd outputtar -zcvf 。。/output。tar。gz *;// 解壓tar -zxvf 。。/output。tar。gz;

其中壓縮和解壓只有一個引數之差,下面我們來看一下這幾個引數吧。

-z: 支援 gzip 解壓檔案

-c: 建立新的壓縮檔案

-v: 顯示操作過程

-f: 指定壓縮檔案

-x: 從壓縮的檔案中提取檔案

好了,上面我們說了部署前的整個準備過程中,我覺得最常用的三個命令。除了這些之外,可能還有一些你也會用到,如touch建立檔案、rm刪除檔案或目錄等,這些相信大家都用過。如果有需要可以回顧或者學習一下,這裡就不廢話了。

接下來讓我們看看部署階段會用到哪些命令。

二、部署階段

多數情況下,我們說的部署都不是本機部署,而是遠端部署,這時候我們常常會用到scp和ssh兩個命令。下面我們就一一學習一下吧。

1。 scp 遠端加密複製

scp(secure copy 的縮寫)是 Linux 系統下基於 ssh 登陸進行安全的遠端檔案複製命令。

利用這一命令,我們就可以將打包好的檔案複製到遠端伺服器,如下:

scp output。tar。gz verymuch@10。xx。xx。xx:~/;

這裡解釋一下,程式碼中最後的~/是指伺服器的個人目錄。

如果需要複製整個目錄,則新增-r引數即可,與cp類似。

由於scp是基於ssh實現的。下面我們再來看看ssh命令。

2。 ssh 登入遠端伺服器

將打包好的內容複製到遠端伺服器後,我們就需要登入遠端伺服器,解壓檔案,然後起服務了,具體怎麼起服務就看大家各自的服務了。

ssh可以用來登入遠端伺服器,其命令格式如下:ssh @。如:ssh verymuch@10。xx。xx。xx。如果本地使用者名稱和登入伺服器使用者名稱一樣,則使用者名稱可以省略。

此外,ssh預設使用的是22埠,如果特殊需要修改埠,可以透過-p引數修改,如下:ssh -p @

其中,ssh 登入時會用到最常用的免密登入,具體可檢視

Linux/Mac下SSH無密碼登入伺服器配置

三、問題排查階段

經過上面的兩個階段,如果順利的話,我們的服務應該部署成功了。但是如果大家真的自動部署過的話,往往會發現,能一次成功的很少,經常會出現各種問題。這時候我們就需要排查問題了。下面我們要說的命令就和排查問題息息相關。

1。 ping和telnet

首先部署完之後,我們訪問服務會發現可能無法訪問。這時,我們可以先透過ping指令確定與目標機器的連通性。下面分別是正常連通和不連通的效果。正常連通會收到返回值,不連通會收到超時提醒。

前端開發人員必會的Linux命令

正常連通

前端開發人員必會的Linux命令

不連通超時提醒(隨意的ip)

如果確認了與目標機器可以連通,但是仍然無法訪問,則可以透過telnet確認我們服務的埠是否可訪問。如下,確認80和8080埠是否正常,正常和非正常提示如下。

前端開發人員必會的Linux命令

埠正常可訪問

前端開發人員必會的Linux命令

埠不可訪問

如果不正常會一直在 Tring。。。。

如果埠不可用,可以透過下面的netstat來檢視下埠的使用情況。

2。 netstat

netstat可以用於顯示與 IP、TCP、UDP 和 ICMP 協議相關的統計資料。

這裡我們可以用來檢視埠的使用情況。如透過netstat -apn檢視所有埠的使用情況。

前端開發人員必會的Linux命令

埠使用情況

如果想要搜尋指定埠,可以結合grep一起使用,如netstat -apn | grep 8380。

透過檢視埠的佔用情況和開放狀態,可以判斷服務未啟動成功的原因。如果被佔用,可以考慮更換一個埠。

其中上面所有到的三個引數分別含義如下:

-a/-all: 顯示所有連線中的 Socket

-n/–numeric: 直接使用 IP 地址,而不透過域名伺服器

-p/–programs: 顯示正在使用 Socket 的程式識別碼和程式名稱。這個很有用,顯示出當前埠的程序,可以便於我們kill掉 。

3。 ps 檢視程序狀態

透過我們的不懈努力,我們的服務應該已經能正常跑起來了。就讓它自己跑著吧,走咯。

別,等等,少年別走。你還有下面兩個命令需要了解一下。

要知道,機器的執行也是會出故障的,雖然我們的服務正常跑起來了,但是難保它不會出問題。所以當得知我們的服務出問題了的時候,我們可以透過ps來檢視對應程序的狀態,確定是否是程序掛了。

使用這一命令時,我們也可以結合grep來查詢,如ps aux | grep node。js,透過起服務的指令碼來查詢效率會高很多。

如果你查詢之後發現程序不在,那就重啟一下就可以了,so easy。

5。 tail -f 檢視日誌

最後,如果我們的服務執行正常,但是有部分功能出錯了。這時就需要動手查執行日誌了。一般情況下,我們都會將系統執行的日誌輸出到某個檔案。可以透過以下命令來檢視日誌tail -f logs。這一命令會動態更新新增加的日誌內容,非常適合用來除錯。