Linux 面試常考命令
參考文章:
linux檢視端口占用情況linux 用strace檢視系統呼叫Linux面試題(2020最新版)Linux 檢視系統呼叫
strace常用來跟蹤程序執行時的系統呼叫和所接收的訊號。 在Linux世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至核心態模式,通 過系統呼叫訪問硬體裝置。strace可以跟蹤到一個程序產生的系統呼叫,包括引數,返回值,執行消耗的時間。檔案管理命令
cat 命令
cat 命令用於連線檔案並列印到標準輸出裝置上。cat 主要有三大功能:1.一次顯示整個檔案:
cat filename2.從鍵盤建立一個檔案:
cat > filename只能建立新檔案,不能編輯已有檔案。3.將幾個檔案合併為一個檔案:
cat file1 file2 > file -b 對非空輸出行號 -n 輸出所有行號把 log2012.log 的檔案內容加上行號後輸入 log2013.log 這個檔案裡
cat -n log2012.log > log2013.log
chmod 命令
Linux/Unix 的檔案呼叫許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以改變檔案的呼叫許可權。
u :目錄或者檔案的當前的使用者 g :目錄或者檔案的當前的群組 o :除了目錄或者檔案的當前使用者或群組之外的使用者或者群組 a :所有的使用者及群組
r :讀許可權,用數字4表示
w :寫許可權,用數字2表示
x :執行許可權,用數字1表示
增加 file 檔案的所有使用者的 寫和執行許可權chmod -awx file
find
查詢大於 1K 的檔案
find -size +1000c
在當前目錄查詢 以 .log 結尾的檔案。 . 代表當前目錄
find ./ -name '*.log'
head
顯示檔案的開頭至標準輸出中,預設 head 命令列印其相應檔案的開頭 10 行。顯示 1.log 檔案中前 20 行
head 1.log -n 20
less 和 more類似,都可以對檔案進行分頁瀏覽
(1)ps 檢視程序資訊並通過 less 分頁顯示
ps -aux | less -N
(2)檢視多個檔案
less 1.log 2.log
ln 命令(Link files 連結檔案)
功能是為檔案在另外一個位置建立一個同步的連結,當在不同目錄需要該問題時,就不需要為每一個目錄建立同樣的檔案,通過 ln 建立的連結(link)減少磁碟佔用量。
連結分類:軟體連結及硬連結軟連結:有 -s 引數 1.軟連結,以路徑的形式存在。類似於Windows作業系統中的快捷方式 2.軟連結可以 跨檔案系統 ,硬連結不可以 3.軟連結可以對一個不存在的檔名進行連結 4.軟連結可以對目錄進行連結硬連結: 無 -s 引數 1.硬連結,以檔案副本的形式存在。但不佔用實際空間。 2.不允許給目錄建立硬連結 3.硬連結只有在同一個檔案系統中才能建立-s 軟連結(符號連結)
-v 顯示詳細處理過程
例項:
(1)給檔案建立軟連結,並顯示操作資訊
ln -sv source.log link.log
(2)給檔案建立硬連結,並顯示操作資訊
ln -v source.log link1.log
locate 命令
locate 通過搜尋系統內建文件資料庫達到快速找到檔案,資料庫由 updatedb 程式來更新,updatedb 是由 cron daemon 週期性呼叫的。預設情況下 locate 命令在搜尋資料庫時比由整個由硬碟資料來搜尋資料來得快,但較差勁的是 locate 所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內定值中,updatedb 每天會跑一次,可以由修改 crontab 來更新設定值 (etc/crontab)。locate 與 find 命令相似,可以使用如 *、? 等進行正則匹配查詢常用引數:-l num(要顯示的行數)
-f 將特定的檔案系統排除在外,如將proc排除在外
-r 使用正則運算式做為尋找條件
例項:(1)查詢和 pwd 相關的所有檔案(檔名中包含 pwd)locate pwd
(2)搜尋 etc 目錄下所有以 sh 開頭的檔案locate /etc/sh
(3)查詢 /var 目錄下,以 reason 結尾的檔案locate -r '^/var.*reason$'(其中.表示一個字元,*表示任務多個;.*表示任意多個字元)
more 命令
功能類似於 cat, more 會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示。
每次顯示 5 行more -5 file
顯示檔案中從第3行起的內容
more +3 text.txt
(2)在所列出檔案目錄詳細資訊,藉助管道使每次顯示 5 行
ls -l | more -5
mv 命令((Move file 移動檔案)
移動檔案或修改檔名,根據第二引數型別(如目錄,則移動檔案;如為檔案則重命令該檔案)。
當第二個引數為目錄時,第一個引數可以是多個以空格分隔的檔案或目錄,然後移動第一個引數指定的多個檔案到第二個引數指定的目錄中。
例項:(1)將檔案 test.log 重新命名為 test1.txtmv test.log test1.txt
(2)將檔案 log1.txt,log2.txt,log3.txt 移動到根的 test3 目錄中mv llog1.txt log2.txt log3.txt /test3
(3)將檔案 file1 改名為 file2,如果 file2 已經存在,則詢問是否覆蓋mv -i log1.txt log2.txt
(4)移動當前資料夾下的所有檔案到上一級目錄mv * ../
rm 命令
刪除一個目錄中的一個或多個檔案或目錄,如果沒有使用 -r 選項,則 rm 不會刪除目錄。如果使用 rm 來刪除檔案,通常仍可以將該檔案恢復原狀。例項:(1)刪除任何 .log 檔案,刪除前逐一詢問確認:rm -i *.log
(2)刪除 test 子目錄及子目錄中所有檔案刪除,並且不用一一確認:rm -rf test
(3)刪除以 -f 開頭的檔案rm -- -f*
tail 命令
用於顯示指定檔案末尾內容,不指定檔案時,作為輸入資訊進行處理。常用檢視日誌檔案。常用引數:-f 迴圈讀取(常用於檢視遞增的日誌檔案)
-n<行數> 顯示行數(從後向前)
(1)迴圈讀取逐漸增加的檔案內容ping 127.0.0.1 > ping.log & ##後臺執行:可使用 jobs -l 檢視,也可使用 fg 將其移到前臺執行。
tail -f ping.log
touch 命令
Linux touch命令用於修改檔案或者目錄的時間屬性,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。
ls -l 可以顯示檔案的時間記錄
首先,使用ls命令檢視testfile檔案的屬性,如下所示:
$ ls -l testfile #檢視檔案的時間屬性
#原來檔案的修改時間為16:09
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
執行指令"touch"修改檔案屬性以後,並再次檢視該檔案的時間屬性,如下所示:
$ touch testfile #修改檔案時間屬性為當前系統時間
$ ls -l testfile #檢視檔案的時間屬性
#修改後檔案的時間屬性為當前系統時間
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"時,如果指定的檔案不存在,則將建立一個新的空白檔案。例如,在當前目錄下,使用該指令建立一個空白檔案"file",輸入如下命令:
$ touch file #建立一個名為“file”的新的空白檔案
vim 命令
Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。
開啟檔案並跳到第 10 行:vim +10 filename.txt 。
開啟檔案跳到第一個匹配的行:vim +/search-term filename.txt 。 // search-item可以替換成我們想查詢的字串
以只讀模式開啟檔案:vim -R /etc/passwd 。
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。
簡單的說,我們可以將這三個模式想成底下的圖示來表示:
whereis 命令
whereis 命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。whereis 及 locate 都是基於系統內建的資料庫進行搜尋,因此效率很高,而find則是遍歷硬碟查詢檔案。例項:
(1)查詢 locate 程式相關檔案
whereis locate
(2)查詢 locate 的原始碼檔案
whereis -s locate
(3)查詢 lcoate 的幫助檔案
whereis -m locate
which 命令
在 linux 要查詢某個檔案,但不知道放在哪裡了,可以使用下面的一些命令來搜尋:
which 檢視可執行檔案的位置。
whereis 檢視程式檔案的位置。
locate 配合資料庫檢視檔案位置。
find 實際搜尋硬碟查詢檔名稱。
文件編輯命令
grep 命令
強大的文字搜尋命令,grep(Global Regular Expression Print) 全域性正則表示式搜尋。
命令格式:
grep [option] pattern file|dir
常用引數:
-A n --after-context顯示匹配字元後n行
-B n --before-context顯示匹配字元前n行
-C n --context 顯示匹配字元前後n行
-c --count 計算符合樣式的列數
-i 忽略大小寫
-l 只列出檔案內容符合指定的樣式的檔名稱
-f 從檔案中讀取關鍵詞
-n 顯示匹配內容的所在檔案中行數
-R 遞迴查詢資料夾
grep 的規則表示式:
^ #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
$ #錨定行的結束 如:'grep$'匹配所有以grep結尾的行。
. #匹配一個非換行符的字元 如:'gr.p'匹配gr後接一個任意字元,然後是p。
* #匹配零個或多個先前字元 如:'*grep'匹配所有一個或多個空格後緊跟grep的行。
.* #一起用代表任意字元。
[] #匹配一個指定範圍內的字元,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一個不在指定範圍內的字元,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
\(..\) #標記匹配字元,如'\(love\)',love被標記為1。
\< #錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\> #錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
x\{m\} #重複字元x,m次,如:'0\{5\}'匹配包含5個o的行。
x\{m,\} #重複字元x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
x\{m,n\} #重複字元x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。
\w #匹配文字和數字字元,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字元,然後是p。
\W #\w的反置形式,匹配一個或多個非單詞字元,如點號句號等。
\b #單詞鎖定符,如: '\bgrep\b'只匹配grep。
例項:
(1)查詢指定程序
ps -ef | grep svn
(2)查詢指定程序個數
ps -ef | grep svn -c
顯示包含 ed 或者 at 字元的內容行grep -E 'ed|at' test.txt
wc 命令
wc(word count)功能為統計指定的檔案中位元組數、字數、行數,並將統計結果輸出命令格式:wc [option] file..
命令引數:-c 統計位元組數
-l 統計行數
-m 統計字元數
-w 統計單詞數,一個字被定義為由空白、跳格或換行字元分隔的字串
例項:(1)查詢檔案的 行數 單詞數 位元組數 檔名wc text.txt
結果:7 8 70 test txt
(2)統計輸出結果的行數cat test.txt | wc -l
磁碟管理命令
cd 命令
切換當前目錄至 dirName。
cd(changeDirectory) 命令語法:
cd [目錄名]
df 命令 (Disk free 空餘硬碟)
顯示磁碟空間使用情況。獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊,如果沒有檔名被指定,則所有當前被掛載的檔案系統的可用空間將被顯示。預設情況下,磁碟空間將以 1KB 為單位進行顯示,除非環境變數 POSIXLY_CORRECT 被指定,那樣將以512位元組為單位進行顯示:
-a 全部檔案系統列表
-h 以方便閱讀的方式顯示資訊
-i 顯示inode資訊
-k 區塊為1024位元組
-l 只顯示本地磁碟
-T 列出檔案系統型別
例項:
(1)顯示磁碟使用情況
df -l
(2)以易讀方式列出所有檔案系統及其型別
df -haT
du 命令 (disk usage)
du 命令也是檢視使用空間的,但是與 df 命令不同的是 Linux du 命令是對檔案和目錄磁碟使用的空間的檢視:
命令格式:
du [選項] [檔案]
常用引數:
-a 顯示目錄中所有檔案大小
-b, 以位元組為單位顯示檔案大小
-k 以KB為單位顯示檔案大小
-m 以MB為單位顯示檔案大小
-g 以GB為單位顯示檔案大小
-h 以易讀方式顯示檔案大小
-s 僅顯示總計
-c或--total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和例項:
(1)以易讀方式顯示資料夾內及子資料夾大小
du -h scf/
(2)以易讀方式顯示資料夾內所有檔案大小
du -ah scf/
(3)顯示幾個檔案或目錄各自佔用磁碟空間的大小,還統計它們的總和
du -hc test/ scf/
(4)輸出當前目錄下各個子目錄所使用的空間
du -hc --max-depth=1 scf/
ls命令
就是 list 的縮寫,通過 ls 命令不僅可以檢視 linux 資料夾包含的檔案,而且可以檢視檔案許可權(包括目錄、資料夾、檔案許可權)檢視目錄資訊等等。
列出當前目錄中所有以"t"開頭的
常見引數
ls -a 列出目錄所有檔案,包含以.開始的隱藏檔案
ls -l 除了檔名之外,還將檔案的許可權、所有者、檔案大小等資訊詳細列出來
列出當前目錄中所有以"t"開頭的目錄的詳細內容
ls -l t*
mkdir 命令
mkdir 命令用於建立資料夾。
可用選項:
- -m: 對新建目錄設定存取許可權,也可以用 chmod 命令設定;
- -p: 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不在的目錄,即一次可以建立多個目錄。
pwd 命令(Print working directory 顯示當前工作路徑)
pwd 命令用於檢視當前工作目錄路徑。
例項:
(1)檢視當前路徑
pwd
(2)檢視軟連結的實際路徑
pwd -P
rmdir 命令
從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須具有對其父目錄的寫許可權。
注意:不能刪除非空目錄
網路通訊命令
ifconfig 命令
ifconfig 用於檢視和配置 Linux 系統的網路介面。檢視所有網路介面及其狀態:ifconfig -a
netstat 命令
Linux netstat命令用於顯示網路狀態。
利用netstat指令可讓你得知整個Linux系統的網路情況
端口占用命令
端口占用命令
檢視佔用埠的程序
1. 使用netstat,
示例:檢視特定埠3306的程序
# netstat -anp | grep 3306 會列出所有3306埠號有關的資訊
# netstat -tunlp | grep 3306 僅列出3306被LISTEN 佔用的那條資訊
引數解釋:
引數解釋:
-a 顯示所有
-t (tcp) 僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化為數字
-l 僅列出在Listen(監聽)的服務狀態
-p 顯示建立相關連結的程式名 --(需要root許可權)
2. 使用lsof,lsof -i:埠號檢視某個埠是否被佔用
# lsof -i:3306
程序:
ps-ef|grep java
找所有有關“java”的程序ps-efL|grep[PID]|wc-l
檢視某個程序建立的執行緒數ping 命令
Linux ping命令用於檢測主機。
執行ping指令會使用ICMP傳輸協議,發出要求迴應的資訊,若遠端主機的網路功能沒有問題,就會迴應該資訊,因而得知該主機運作正常。
指定接收包的次數
ping -c 2 www.baidu.com
telnet 命令(telecom munication net work protocol,電信網路協議。)
用於遠端登入。
執行telnet指令開啟終端機階段作業,並登入遠端主機。
登入遠端主機
# 登入IP為 192.168.0.5 的遠端主機
telnet 192.168.0.5
系統管理命令
date 命令
顯示或設定系統的日期與時間。
free 命令
顯示系統記憶體使用情況,包括實體記憶體、互動區記憶體(swap)和核心緩衝區記憶體。
命令引數:
-b 以Byte顯示記憶體使用情況
-k 以kb為單位顯示記憶體使用情況
-m 以mb為單位顯示記憶體使用情況
-g 以gb為單位顯示記憶體使用情況
-s<間隔秒數> 持續顯示記憶體
-t 顯示記憶體使用總合
例項:
(1)顯示記憶體使用情況
free
free -k
free -m
(2)以總和的形式顯示記憶體的使用資訊
free -t
(3)週期性查詢記憶體使用情況
free -s 10
Swap 區是用來幹什麼的
linux swap分割槽是linux交換分割槽:如果linux系統實體記憶體不夠用了,系統會用swap分割槽;系統會把實體記憶體裡的訪問頻率低的記憶體物件移動到swap裡,再在實體記憶體裡產生新的連線指向swap裡的那個物件
kill 命令
傳送指定的訊號到相應程序。不指定型號將傳送SIGTERM(15)終止指定程序。如果任無法終止該程式可用"-KILL" 引數,其傳送的訊號為SIGKILL(9) ,將強制結束程序,使用ps命令或者jobs 命令可以檢視程序號。root使用者將影響使用者的程序,非root使用者只能影響自己的程序。
常用引數:
-l 訊號,若果不加訊號的編號引數,則使用“-l”引數會列出全部的訊號名稱
-a 當處理當前程序時,不限制命令名和程序號的對應關係
-p 指定kill 命令只打印相關程序的程序號,而不傳送任何訊號
-s 指定傳送訊號
-u 指定使用者
例項:
(1)先使用ps查詢程序pro1,然後用kill殺掉
kill -9 $(ps -ef | grep pro1)
ps 命令
ps(process status),用來檢視當前執行的程序狀態,一次性檢視,如果需要動態連續結果使用 top
linux上程序有5種狀態:
- 執行(正在執行或在執行佇列中等待)
- 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
- 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生)
- 僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放)
- 停止(程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行)
ps 工具標識程序的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 執行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
命令引數:
-A 顯示所有程序
a 顯示所有程序
-a 顯示同一終端下所有程序
c 顯示程序真實名稱
e 顯示環境變數
f 顯示程序間的關係
r 顯示當前終端執行的程序
-aux 顯示所有包含其它使用的程序
例項:
(1)顯示當前所有程序環境變數及程序間關係
ps -ef
(2)顯示當前所有程序
ps -A
(3)與grep聯用查詢某程序
ps -aux | grep apache
(4)找出與 cron 與 syslog 這兩個服務有關的 PID 號碼
ps aux | grep '(cron|syslog)'
top 命令
顯示當前系統正在執行的程序的相關資訊,包括程序 ID、記憶體佔用率、CPU 佔用率等
top命令來檢視CPU使用狀況
退出top的命令為q
top-u roottop的全屏對話模式可分為3部分:系統資訊欄、命令輸入欄、程序列表欄。
vmstat命令
檢視CPU和記憶體佔用情況,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的瞭解系統狀態。
vmstat3(間隔時間)100(監控次數)
yum 命令
yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟體包管理器。
基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
yum提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。
unzip 命令
- 解壓
*.zip
檔案:unzip test.zip
。 - 檢視
*.zip
檔案的內容:unzip -l jasper.zip
。