讓你起飛的20個Linux命令騷操作

今天總結幾個非常常用的Linux命令,其中有幾個在面試中很可能問相關命令的原理,比如後臺運行命令。希望對大家有所幫助,最好自己去嘗試在Linux操作系統中實踐一下。

1 查看目錄以及權限

在windows中,使用dir查看當前目錄中文件。在Linux中使用ls(list)查看當前目錄文件。

windows中的dir,如下圖所示

在Linux中,通常使用ls -l列出,其中可以查看文件屬性,所屬用戶組等較爲詳細的信息。下面詳細解釋從左到右每一列是什麼意思

ls -l

第一列第一個字段:文件類型,後面9個字符是模式,其中分爲三組,每一組三個字段。第一組爲所屬用戶權限。第二組爲所屬組的權限。第三組爲其他用戶所屬權限。其中r(read)代表可讀,w(write)代表可寫,e(execute)代表可執行。在後面的9個字符中,如果是字母說明有相應的權限,如果爲"-"代表沒有權限。舉一個例子

-rw-r-r--:此爲普通文件,對於所屬用戶爲可讀可寫不能執行,對於所屬組僅僅可讀,對於其他用戶僅爲讀。

第二列 硬鏈接數目

硬鏈接允許作用之一是允許一個文件擁有多個有效路徑名,從而防止誤刪。但是隻能在同一文件系統中的文件之間進行連接,不能對目錄進行創建。

第三列是所屬用戶,第四列爲所屬組,第五列爲文件大小,第六列爲文件被修改的時間,最後爲文件名。其中使用chown改變所屬用戶,chgrp改變所屬組。

2 nohup(no hang up不要掛起的意思)

這也是常用後臺啓動程序的常用方法,如果在交互命令行中運行程序,我們很容易就終止它。在交互環境下,我們的輸出一般都會直接輸出到當前界面,在後臺啓動的時候通常會定向到文件,那通常情況是下面這個命令。

nohup command >X.file 2 >&1 &

其中1表示標準輸出。2表示文件標準錯誤輸出。2>1&即將兩者合併,但是合併到哪裏,就是X.file.

3 查看進程

有的時候我們需要查看進程是否已經啓動或者嘗試終止進程。經常使用的命令爲ps -ef---列出當前正在運行的程序,那如何定位我們想要查看的進程A,這個時候使用grep,即ps -ef| grep A.

4 awk

如果文件是csv(a.csv),按照","分割,需求爲打印第一列和第二列

awk -F "," '{print 2}' a.csv

獲取第三列最大值

awk 'BEGIN{max=0}{if(3}END{print max}'

5 tar解壓縮

解壓縮命令

常用參數

-c:創建的tar文件
-x:解開tar文件
-t:列出tar文件中包含的文件信息
-r:附加新的文件到tar文件中

常用命令組合

tar -xvf /home/a.tar  //打開tar打包文件
tar -zxvf /home/a.tar.gz //解壓以gzip壓縮的文件
tar -jxvf /home/a.tar.bz2 //解壓以bzip壓縮的文件
tar -cvf /home/a.tar /home 打包/home下所有文件

6 scp

通過scp命令在多臺服務器中的相互複製 傳輸文件。爲了省下輸入密碼,可以設置免密登錄。

常用組合:

例子1:將A服務器中/home/a.txt 複製到B服務器的/home中

scp -r /home/a.txt root@B_ip:/home

7 林哥的死亡命令 rm -rf

翻車現場請看次條。

8 watch

這個命令是動態查看命令執行的結果。比如如果需要每隔一秒高亮顯示網絡連接數的變化情況。則 watch -n 1 -d netstat -ant

例子:每隔一秒高亮顯示http連接數的變化情況

watch -n 1 -d 'pstree | grep http'

例子:十秒一次輸出系統的平均負載

watch -n 10 'cat /proc/loadavg'

9 df

查看磁盤大小

df -h

10 tcpdump

和它類似的工具在windows中是wireshark,其採用底層庫winpcap/libpcap實現。採用了bpf過濾機制。下面我們看看提供的不同參數的含義。

參數名 含義
-n 使用IP地址表示主機。使用數字表示端口
-i 指定要監聽的端口。如果爲"-i any"表示住區所有網卡數據包
-v 輸出諸如ip數據包中的TTL更加詳細的信息
-t 不打印時間戳
-e 顯示以太網幀頭部信息
-c 僅僅抓取指定數量的數據包
-x 按照十六進制顯示數據包內容
-X 不僅僅輸出-x結果還輸出十六進制對應的ASCII字符
-s 設置抓包時的抓包長度
-w 將輸出結果定向到某個文件,一般爲pcap後綴
-r 從文件讀取數據包並顯示數字表示端口
-i 指定要監聽的端口。如果爲"-i any"表示住區所有網卡數據包
-v 輸出諸如ip數據包中的TTL更加詳細的信息
-t 不打印時間戳
-e 顯示以太網幀頭部信息
-c 僅僅抓取指定數量的數據包
-x 按照十六進制顯示數據包內容
-X 不僅僅輸出-x結果還輸出十六進制對應的ASCII字符
-s 設置抓包時的抓包長度
-w 將輸出結果定向到某個文件,一般爲pcap後綴
-r 從文件讀取數據包並顯示
 

知道了相關參數,下面看幾個案例

執行任務 執行命令
捕獲特定網口數據包 tcpdump -i eth0
捕獲特定個數(1000)的包 tcpdump -c 1000 -i eth0
將捕獲的包保存到文件 tcpdump -w a.pcap -i eth0
讀取pcap格式的包 tcpdump -r a.pcap
增加捕獲包的時間戳 tcpdump -n -ttt -i eth0
指定捕獲包的協議類型 tcpdump -i eth0 arp
捕獲指定端口 tcpdump -i eth0 post 22
捕獲特定目標ip+port的包 tcpdump -i eth0 dst address and port 22
捕獲DNS請求和響應 tcpdump -i eth0 -s0 port 53
匹配Http請求頭 tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
將捕獲的包保存到文件 tcpdump -w a.pcap -i eth0
讀取pcap格式的包 tcpdump -r a.pcap
增加捕獲包的時間戳 tcpdump -n -ttt -i eth0
指定捕獲包的協議類型 tcpdump -i eth0 arp
捕獲指定端口 tcpdump -i eth0 post 22
捕獲特定目標ip+port的包 tcpdump -i eth0 dst address and port 22
捕獲DNS請求和響應 tcpdump -i eth0 -s0 port 53
匹配Http請求頭 tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

11 lsof

列出當前系統打開的文件描述符工具。可以得知感興趣的描述符是被哪些進程使用

同樣,我們看看相關參數

參數 描述
-i 顯示sokcet文件描述符
-c 顯示指定的命令打開的所有文件描述符
-t 僅顯示打開了目標文件描述符的進程pid

老規矩,上幾個例子

執行任務 命令
列出所有的網絡鏈接 lsof -i
列出所有udp的網絡鏈接 lsof -i udp
列出誰在使用某個端口 lsof -i :3306
列出誰在使用特定的tcp端口 lsof -i tcp:80
根據文件描述範圍列出文件信息 lsof -d 2-3

12 nc

nc-->“瑞士軍刀”。不知大家在滲透過程中,拿了shell有沒有使用nc搞點事兒。它用來快速構建網絡鏈接。常用來調試客戶端程序。

參數 描述
-i 設置數據包傳送的時間間隔
-l 以服務器方式運行。默認爲客戶端運行
-k 重複接受並處理某個端口上的所有鏈接
-p 以客戶端運行時強制其使用指定端口
-C 將CR和LF兩個字符作爲結束符
-u 使用udp協議。默認tcp協議
-X nc客戶端餘代理服務器通信時默認爲socks5協議。
-z 掃描目標機器某個範圍服務是否開啓

小賤上案例

執行任務 執行命令
掃描機器A端口號在30-40的服務 nc -z A 30-40
連接服務器A 端口號爲5000 nc -C A 5000
傳送文件 MachineA:nc -v -n ip portE:\a.exe

13 netstat

netstat是一個網絡信息統計工具。它可以得到網卡接口上全部瞭解,路由表信息,網卡接口信息等。通常在網絡編程中我們用它來顯示TCP連接以及狀態信息。

參數 描述
-n 使用IP地址表示主機
-a 顯示結果中包含監聽的socket
-t 僅顯示TCP連接
-r 顯示路由信息
-i 顯示網卡接口數據流量
-c 每隔1s輸出一次
-o 顯示socket定時器的信息
-p 顯示socket所屬的進程的PID和名字

下面列舉幾個常用例子

執行任務 執行命令
列出所有連接 netstat -a
只列出TCP或者UDP netstat -at/netstat -au
列出監聽中的連接 netstat -tnl
獲取進程名、進程號以及用戶 ID nestat  -nlpt
打印統計信息 netstat -s
netstat持續輸出 netstat -ct
打印active狀態的連接 netstat -atnp | grep ESTA
查看服務是否運行(npt) netstat -aple| grep ntp

14 vmstat

vmstat能夠實時輸出系統的進程信息,內存使用,cpu使用等資源的使用情況

參數 描述
-f 顯示系統自啓動以來執行的fork次數
-s 顯示內存相關統計信息
-d 顯示磁盤相關統計信息
-p 顯示指定磁盤分區統計信息
count 採樣次數。

看一下vmstat都有哪些輸出字段。

在這裏插入圖片描述
字段名 描述
procs r表示等待運行的而進程數目。b表示處於不可中斷睡眠狀態的進程數目
memory swpd:使用的虛擬內存量。free:空閒內存量。buff:用作緩衝區的內存量。cache:用作緩存的內存量。
swap si:從磁盤換入的內存量(/s)。so:交換到磁盤的內存量(/s)。
io bi:從塊設備接收的塊(blocks/s)。bo:發送到塊設備的塊(blocks/s)。
system in:每秒中斷的次數,包括時鐘。cs:每秒上下文切換的次數。

這裏注意哈,如果查看磁盤的更加詳細信息,有另外iostat所得到的信心就更加詳細喲

15 mpstat

能夠實時監測多處理器系統中各個cpu的使用情況。這個命令的執行需要安裝sysstat,在centos中執行yum install systat就好了。

在這裏插入圖片描述

然後我們看看各個字段什麼意思。

字段 描述
cpu 表示當前條信息屬於哪個cpu的數據
%usr 進程運行在用戶空間所佔cpu運行時間的比例
%nice nice值爲負的進程運行在用戶空間的時間佔cpu總運行時間的比例
%iowait cpu等待磁盤操作的時間佔cpu總運行時間的比例
%irq cpu用於處理硬件中斷時間佔cpu總運行時間的比例
%soft cpu用於處理軟件中斷的時間佔cpu用運行時間的比例
%steal 一對虛擬cpu。當超級管理員在處理某個虛擬cpu時,另一個等待它處理完才能運行。這段等待時間表示爲steal時間佔總運行時間的比例
%guest 運行虛擬cpu時間佔cpu總運行時間的比例
%idle 系統空閒時間佔cpu總運行時間的比例

16 split

將文件分割爲數個。

split -5 a.txt//將a.txt每5行分割爲一個文件

17 wc -c +filename

統計文件中單詞的個數。

18 more/less

一頁一頁顯示,通過空白鍵顯示下一頁/上一頁

19 head/tail

查看某文件前幾行或者後幾行

20 diff

diff -c file1 file2 //顯示兩個文件的差異

暖藍告知

跟小藍每天進步一點點,生活就會美一點!

歡迎關注,帶你進入高手如雲學習交流羣,一起成長!

[c/c++後臺開發面經系列]1 深信服面經

[c/c++後臺開發面經系列]2 京東面經(含答案)

寫簡歷這幾點一定要注意!

Linux後臺開發必看!

[c/c++後臺開發面經系列]3 bigo/映客面經(含答案)

點下面“在看”的永遠18歲喲~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章