您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關系統運維中20個常用的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 port |
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 //顯示兩個文件的差異
感謝各位的閱讀!關于“系統運維中20個常用的Linux命令”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。