檔案 程序 網路Linux常用命令

2022-07-08 14:42:23 字數 3090 閱讀 6993

linux 下有非常多的命令,我們可以通過這些命令在 shell 環境下與機器進行互動,那麼 linux 下有多少資源可以供我們排程呢?其實是非常多的,但所有資源都可以分為三大型別。

檔案:everything is file;

程序:檔案的執行形態;

網路:特殊的檔案。

檔案也可以理解為資料,在 linux 環境下有乙個很基本的設計原則,即 everything is file,所有的內容都是以檔案的形式來進行抽象的,比如:程序、網路、硬體等,都可以抽象成檔案,可以對其進行開啟、讀取、寫入等操作,所以檔案便是我們入門的第乙個知識點,檔案又可以分為這樣幾類常見的命令。

通過 df 或 df-h 命令,列印裝置上掛載了多少個磁碟裝置,以及磁碟裡還有多少可用空間。

ls 可以列印當前目錄下的所有檔案和目錄,你可以通過 ls 命令,把當前所有的目錄和檔案都列印出來了

ls 有乙個常用的引數叫 -l,-l 可以列印出每個檔案的基本資訊,比如第乙個檔案,這裡列印出了它的檔案許可權 -rw-r--r--、檔案歸屬 root、檔案大小,以及何時被建立等資訊。ls-l 在我們的日常工作中使用頻率比較高。

cd 命令進入某個目錄,進入目錄後,通過 ls 檢視目錄下所有檔案

使用 ls、cd 命令可以讓我們在不同目錄之間進行切換,切換之後還可以通過 pwd  命令獲取當前目錄所在的路徑。

我們可以使用三種方法閱讀檔案:

cat,它可以閱讀檔案並查詢檔案內容,但缺點就是一頁的內容非常長;

more,可以實現翻頁閱讀,缺點就是不夠靈活;

less,它既可以實現上下滑動,還可以實現左右移動,可以實現互動式閱讀,是三種閱讀方法中最強大的。

只能閱讀檔案是不能夠滿足需求的,我們需要有對檔案有進行編輯的能力。我們可以通過 vi 或 vim 實現這樣的能力,vi 是最早的乙個編輯器,vim 是後期的乙個變種,在很多系統上 vi 與 vim 是等價的。比如 vi readme.md,開啟之後你會發現有游標,可以隨意移動,也可以對內容進行修改。關於 vi 中的一些常用快捷鍵課後你可以自己搜尋掌握。閱讀完檔案後通過 :q 進行退出,還有乙個流式修改命令 sed

我們看到檔案許可權中有三組內容,第一組內容(rw)表示該檔案在當前使用者下的許可權,第二組內容(r)表示在同組下的許可權,第三組內容(r)表示不在同組下其他方的許可權。而 r 表示可讀,w 表示可寫,x 表示檔案可執行。

可以通過chmod 命令修改乙個檔案的許可權,也可以通過 chown 修改乙個檔案所歸屬的使用者或組

如果你不了解 linux 某些命令的用法,就可以通過 man 來檢視使用方法。 

關於檔案,你還可以通過 find 命令搜尋當前的目錄並列出所有檔案,也可以通過 find + name 的方式查詢具體檔案。

程序是乙個檔案的執行形態。如果乙個檔案是可執行檔案,比如setup.go,系統就可以通過 cpu 去排程它,通過解析器完成相應的操作。那我們如何知道到底有多少檔案是可以被排程的呢?

通過 ls-l 檢視所有檔案許可權,通過許可權位 x,可以看到哪些檔案是可以執行的或該檔案下有哪些檔案是可以執行的,所以許可權位 x 並不完全準確。比如 某些檔案,即使沒有許可權位 x,也可以通過解析器來執行它。

那麼用什麼命令可以檢視當前有多少個程序呢?通常我們使用top 或 ps 命令檢視當前程序。

列舉當前使用者下的所執行的命令

sleep 3,它可以讓當前程序視窗休眠 3 秒鐘,你可以看到它是乙個非常典型的程序。

linux 下有乙個基本的設計原則就是 everything is file,所以這裡的 sleep 也是乙個檔案,我們可以通過which 命令(which sleep)檢視它所在的目錄,當我們需要排程它的時候,就可以通過路徑或名字直接排程它。

輸入 sleep 300 命令後執行,然後我們開啟乙個新的視窗,並登入伺服器,然後使用 ps 檢視到當前的程序。

如果我們想要找到當前執行的 sleep 300 這個命令,可以通過 ps-ef 列舉出所有的程序,你可以看到剛才所寫的 sleep 300 命令,系統對它進行了排程,並最終形成了乙個程序。

我們可以通過ps -ef | less 命令檢視乙個程序的狀態,| 符號是乙個管道,這裡先記住怎麼用,後面的課時會進行詳細講解,你可以看到使用者的 uid,程序的 pid,父程序的ppid,以及程序開始的時間,執行引數等資訊。

當執行 top後,我們可以看到動態的互動介面上顯示了整個機器的乙個狀態,包括了負載情況,當前使用者,啟動時間,相關的任務樹,以及記憶體,程序的一些資料等,同樣也包含 pid、user、記憶體、共享記憶體,cpu 佔比等全部資訊。還可以對程序進行排序和查詢,所以top 是乙個非常實用的檢視程序的命令,如果某台機器出現問題時,第乙個輸入的命令通常就是 top,檢視哪個程序記憶體、cpu 佔比高來排查問題原因。

如果你想真正了解 linux,了解 shell,那麼推薦你把 ps 和 top 的幫助文件直接列印出來,全部看一遍。

當乙個檔案載入到 cpu 中被執行的過程中它就變成了乙個程序,有的時候程序之間需要通訊,這個時候就會開啟乙個 socket,socket 就是對外建立連線的乙個視窗,然後借助 tcp 協議進行通訊。但進行通訊之前首先需要程序開啟乙個埠,那我們如何檢視本地開啟了多少埠?這些埠又是由哪些程序開啟的呢?

(1)netstat -tlnp 命令檢視 tcp 協議程序埠,-t 指的是 tcp 協議,-l (listen)指哪幾個程序開啟了對外的鏈結,負責監聽埠,-n 指不需要解析遠端伺服器的名字,以加快執行速度,-p 指列印程序,我們看下執行效果,可以看到當前機器的第一條埠資訊開放了 22 埠,這時我就可以通過 ssh 登入這個伺服器,如果系統沒有開放任何埠,外部是無法進行任何操作的,也就是此時機器對外是完全封閉的。

(2)netstat -tnp

通過 netstat -tnp 獲取了本地機器上有多少個鏈結正在與外部進行通訊,屬於哪個程序你也可以看到,比如這條是阿里雲上的效能監控的乙個服務,它鏈結了某個遠端的 ip。

還有個需要你注意的點,mac 系統與 linux系統並不完全一致,因為歷史原因,它們兩個的引數並不一致,比如 mac 系統中,要實現與 netstat -tlnp 相同的效果你需要使用不同的語法 netstat -p tcp -n -a,它也可以列舉出當前開放的埠情況。

關於程序你可以通過 ps 或 top 命令進行獲取。程序需要對外進行通訊時,首先需要開啟埠,你可以通過 netstat 進行查詢。很多公司在面試時,都會提問關於程序、網路、檔案相關的知識點

Linux常用命令(磁碟 網路 程序)

fsisk 管理磁碟分割槽 格式 fdisk 命令選項 磁碟裝置 device 分割槽的裝置檔名稱 boot 是否為引導分割槽 start 該分割槽在硬碟的起始位置 柱面數 end 該分割槽在硬碟的結束位置 system 分割槽型別 常用命令選項 d 刪除乙個分割槽 l 列出分割槽型別 m 列出幫助...

Linux常用命令(程序命令)

linux中所有的程序都是相互聯絡的,除了初始化程序 init程序,程序號為1,無父程序 所有的程序都有乙個父程序。新的程序不是被建立的,而是被複製的,或者從以前的程序複製而來。使用者使用at命令在指定時刻執行指定的命令。例 指定凌晨1 00執行命令,在哪天的凌晨1 00執行那?如果是在頭一天22 ...

linux網路常用命令

系統連線狀態 1.檢視tcp連線狀態 netstat nat awk sort uniq c sort rn 檢視tcp連線狀態並統計出個數排序 netstat n awk tcp end 或 netstat n awk tcp end netstat n awk tcp end netstat n...