<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          盤點20個面試中常用的Linux命令

          共 4896字,需瀏覽 10分鐘

           ·

          2020-10-14 05:10


          來源:我是程序員小賤

          作者:L的存在



          1 查看目錄以及權(quán)限

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

          windows中的dir,如下圖所示

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

          ls -l

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

          -rw-r-r--:此為普通文件,對于所屬用戶為可讀可寫不能執(zhí)行,對于所屬組僅僅可讀,對于其他用戶僅為讀。

          第二列 硬鏈接數(shù)目

          硬鏈接允許作用之一是允許一個文件擁有多個有效路徑名,從而防止誤刪。但是只能在同一文件系統(tǒng)中的文件之間進(jìn)行連接,不能對目錄進(jìn)行創(chuàng)建。

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

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

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

          nohup command >X.file 2 >&1 &

          其中1表示標(biāo)準(zhǔn)輸出。2表示文件標(biāo)準(zhǔn)錯誤輸出。2>1&即將兩者合并,但是合并到哪里,就是X.file.

          3 查看進(jìn)程

          有的時候我們需要查看進(jìn)程是否已經(jīng)啟動或者嘗試終止進(jìn)程。經(jīng)常使用的命令為ps -ef---列出當(dāng)前正在運行的程序,那如何定位我們想要查看的進(jìn)程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解壓縮

          解壓縮命令

          常用參數(shù)

          -c:創(chuàng)建的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命令在多臺服務(wù)器中的相互復(fù)制 傳輸文件。為了省下輸入密碼,可以設(shè)置免密登錄。

          常用組合:

          例子1:將A服務(wù)器中/home/a.txt 復(fù)制到B服務(wù)器的/home中

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

          7 林哥的死亡命令 rm -rf

          翻車現(xiàn)場請看次條。

          8 watch

          這個命令是動態(tài)查看命令執(zhí)行的結(jié)果。比如如果需要每隔一秒高亮顯示網(wǎng)絡(luò)連接數(shù)的變化情況。則 watch -n 1 -d netstat -ant

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

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

          例子:十秒一次輸出系統(tǒng)的平均負(fù)載

          watch -n 10 'cat /proc/loadavg'

          9 df

          查看磁盤大小

          df -h

          10 tcpdump

          和它類似的工具在windows中是wireshark,其采用底層庫winpcap/libpcap實現(xiàn)。采用了bpf過濾機(jī)制。下面我們看看提供的不同參數(shù)的含義。

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

          知道了相關(guān)參數(shù),下面看幾個案例

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

          11 lsof

          列出當(dāng)前系統(tǒng)打開的文件描述符工具??梢缘弥信d趣的描述符是被哪些進(jìn)程使用

          同樣,我們看看相關(guān)參數(shù)

          參數(shù)描述
          -i顯示sokcet文件描述符
          -c顯示指定的命令打開的所有文件描述符
          -t僅顯示打開了目標(biāo)文件描述符的進(jìn)程pid

          老規(guī)矩,上幾個例子

          執(zhí)行任務(wù)命令
          列出所有的網(wǎng)絡(luò)鏈接lsof -i
          列出所有udp的網(wǎng)絡(luò)鏈接lsof -i udp
          列出誰在使用某個端口lsof -i :3306
          列出誰在使用特定的tcp端口lsof -i tcp:80
          根據(jù)文件描述范圍列出文件信息lsof -d 2-3

          12 nc

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

          參數(shù)描述
          -i設(shè)置數(shù)據(jù)包傳送的時間間隔
          -l以服務(wù)器方式運行。默認(rèn)為客戶端運行
          -k重復(fù)接受并處理某個端口上的所有鏈接
          -p以客戶端運行時強(qiáng)制其使用指定端口
          -C將CR和LF兩個字符作為結(jié)束符
          -u使用udp協(xié)議。默認(rèn)tcp協(xié)議
          -Xnc客戶端余代理服務(wù)器通信時默認(rèn)為socks5協(xié)議。
          -z掃描目標(biāo)機(jī)器某個范圍服務(wù)是否開啟

          小賤上案例

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

          13 netstat

          netstat是一個網(wǎng)絡(luò)信息統(tǒng)計工具。它可以得到網(wǎng)卡接口上全部了解,路由表信息,網(wǎng)卡接口信息等。通常在網(wǎng)絡(luò)編程中我們用它來顯示TCP連接以及狀態(tài)信息。

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

          下面列舉幾個常用例子

          執(zhí)行任務(wù)執(zhí)行命令
          列出所有連接netstat -a
          只列出TCP或者UDPnetstat -at/netstat -au
          列出監(jiān)聽中的連接netstat -tnl
          獲取進(jìn)程名、進(jìn)程號以及用戶 IDnestat ?-nlpt
          打印統(tǒng)計信息netstat -s
          netstat持續(xù)輸出netstat -ct
          打印active狀態(tài)的連接netstat -atnp | grep ESTA
          查看服務(wù)是否運行(npt)netstat -aple| grep ntp

          14 vmstat

          vmstat能夠?qū)崟r輸出系統(tǒng)的進(jìn)程信息,內(nèi)存使用,cpu使用等資源的使用情況

          參數(shù)描述
          -f顯示系統(tǒng)自啟動以來執(zhí)行的fork次數(shù)
          -s顯示內(nèi)存相關(guān)統(tǒng)計信息
          -d顯示磁盤相關(guān)統(tǒng)計信息
          -p顯示指定磁盤分區(qū)統(tǒng)計信息
          count采樣次數(shù)。

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

          在這里插入圖片描述
          字段名描述
          procsr表示等待運行的而進(jìn)程數(shù)目。b表示處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)目
          memoryswpd:使用的虛擬內(nèi)存量。free:空閑內(nèi)存量。buff:用作緩沖區(qū)的內(nèi)存量。cache:用作緩存的內(nèi)存量。
          swapsi:從磁盤換入的內(nèi)存量(/s)。so:交換到磁盤的內(nèi)存量(/s)。
          iobi:從塊設(shè)備接收的塊(blocks/s)。bo:發(fā)送到塊設(shè)備的塊(blocks/s)。
          systemin:每秒中斷的次數(shù),包括時鐘。cs:每秒上下文切換的次數(shù)。

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

          15 mpstat

          能夠?qū)崟r監(jiān)測多處理器系統(tǒng)中各個cpu的使用情況。這個命令的執(zhí)行需要安裝sysstat,在centos中執(zhí)行yum install systat就好了。

          在這里插入圖片描述

          然后我們看看各個字段什么意思。

          字段描述
          cpu表示當(dāng)前條信息屬于哪個cpu的數(shù)據(jù)
          %usr進(jìn)程運行在用戶空間所占cpu運行時間的比例
          %nicenice值為負(fù)的進(jìn)程運行在用戶空間的時間占cpu總運行時間的比例
          %iowaitcpu等待磁盤操作的時間占cpu總運行時間的比例
          %irqcpu用于處理硬件中斷時間占cpu總運行時間的比例
          %softcpu用于處理軟件中斷的時間占cpu用運行時間的比例
          %steal一對虛擬cpu。當(dāng)超級管理員在處理某個虛擬cpu時,另一個等待它處理完才能運行。這段等待時間表示為steal時間占總運行時間的比例
          %guest運行虛擬cpu時間占cpu總運行時間的比例
          %idle系統(tǒng)空閑時間占cpu總運行時間的比例

          16 split

          將文件分割為數(shù)個。

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

          17 wc -c +filename

          統(tǒng)計文件中單詞的個數(shù)。

          18 more/less

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

          19 head/tail

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

          20 diff

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


          推薦閱讀:


          嵌入式編程專輯
          Linux 學(xué)習(xí)專輯
          C/C++編程專輯
          Qt進(jìn)階學(xué)習(xí)專輯
          關(guān)注微信公眾號『技術(shù)讓夢想更偉大』,后臺回復(fù)“m”查看更多內(nèi)容。

          長按前往圖中包含的公眾號關(guān)注

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天爽天天爽天天爽天天爽 | 黄色小视频网 | 人人爱人人撸 | 日本少妇后入 | 日日干麻豆 |