Linux面试常考命令
Linux面試常考命令
- cat命令
- tail
- head
- less和more
- grep
- find
- awk
- sort
- uniq
- netstat
- xargs
- ps
- top
- free
- nohup
note:本文只總結了一些面試時會常考到的命令,一些簡單命令如cp,cd,ls 等不做介紹。
參考: Linux 命令大全 | 菜鳥教程 (runoob.com)
實際使用中,我們可以通過
man 命令 查看一個命令的說明。
cat命令
把 textfile1 的文檔內容加上行號后輸入 textfile2 這個文檔里:
cat -n textfile1 > textfile2把 textfile1 和 textfile2 的文檔內容加上行號(空白行不加)之后將內容附加到 textfile3 文檔里:
cat -b textfile1 textfile2 >> textfile3所以:>是覆蓋式的輸入,>>是append式的輸入。
注意
cat不適合讀取超大文件,因為他需要一次將文件加載進內存,所以去讀超大文件時會導致服務器卡死。
tail
默認顯示最后的10行。
格式
tail [參數] [文件]- -f 循環讀取
- -c<數目> 顯示的字節數
- -n<行數> 顯示文件的尾部 n 行內容
tail -f filename 會把 filename 文件里的最尾部的內容顯示在屏幕上,并且不斷刷新,只要 filename 更新就可以看到最新的文件內容。
tail -n -5 /test001/text001 與 tail -n 5 /test001/text001 顯示的結果相同,均是文件末尾最后 5 行內容。
tail -n +5 /test001/text001 顯示的內容為從第 5 行開始,直到末尾的內容。tail -n 后面的數字有效輸入只有單個數字(5)或者加號連接數字(+5)兩種。
head
head 命令可用于查看文件的開頭部分的內容,有一個常用的參數 -n 用于顯示行數,默認為 10,即顯示 10 行的內容。
命令格式:
head [參數] [文件]- -c<數目> 顯示的字節數。
- -n<行數> 顯示的行數。
less和more
less(重點)
less 與 more 類似,less 可以隨意瀏覽文件,支持翻頁和搜索,支持向上翻頁和向下翻頁。
這里只展示幾個參數:
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- Q退出less命令。
- 空格鍵 滾動一頁
- 回車鍵 滾動一行
less功能很強大,不用一次將文件全部讀取進來,所以比vi、cat等工具讀取速度快很多。
more
Linux more 命令類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
從第 20 行開始顯示 testfile 之文檔內容。
more +20 testfile區別
more比cat強大,提供分頁顯示的功能,less比more更強大,隨意翻頁。more再管道中不能往前翻頁。
grep
語法
grep [-abcEFGhHilLnqrsvVwxy][-A<顯示行數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<范本樣式>][-f<范本文件>][--help][范本樣式][文件或目錄...]- -c 或 --count : 計算符合樣式的列數。
- -C<顯示行數> 或 --context=<顯示行數>或-<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前后的內容。
- -A<顯示行數> 或 --after-context=<顯示行數> : 除了顯示符合范本樣式的那一列之外,并顯示該行之后的內容。
- -B<顯示行數> 或 --before-context=<顯示行數> : 除了顯示符合樣式的那一行之外,并顯示該行之前的內容。
- -n 或 --line-number : 在顯示符合樣式的那一行之前,標示出該行的列數編號。
- -o 或 --only-matching : 只顯示匹配PATTERN 部分
- -r 或 --recursive : 此參數的效果和指定"-d recurse"參數相同。
- -v 或 --invert-match : 顯示不包含匹配文本的所有行。
- -i 或 --ignore-case : 忽略字符大小寫的差別。
- -e<范本樣式> 或 --regexp=<范本樣式> : 指定字符串做為查找文件內容的樣式。
場景: 系統報警顯示了時間,但是日志文件太大無法直接 cat 查看。(查詢含有特定文本的文件,并拿到這些文本所在的行)
解決:
grep -n '2019-10-24 00:01:11' *.log遞歸查找/etc/acpi 下含字符串"update"的文件,并打印出該字符串所在行的內容
grep -r update /etc/acpi從文件內容查找與正則表達式匹配的行:
$ grep –e "正則表達式" 文件名從根目錄開始查找所有擴展名為 .log 的文本文件,并找出包含 “ERROR” 的行:
$ find / -type f -name "*.log" | xargs grep "ERROR"查找網絡連接中非正常鏈接
netstat -tn | grep -v ESTABLISHED查看系統中的非正常連接
find
語法
find path -option [ -print ] [ -exec -ok command ] {} \;-name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫
-size n : 文件大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。
-type c : 文件類型是 c 的文件。
d: 目錄
c: 字型裝置文件
b: 區塊裝置文件
p: 具名貯列
f: 一般文件
l: 符號連結
將當前目錄及其子目錄下所有文件后綴為 .c 的文件列出來:
# find . -name "*.c"將當前目錄及其子目錄中的所有文件列出:
# find . -type f查找大于1G文件并刪除
find /APP/istester/ -type f -size +1G | [xargs](https://so.csdn.net/so/search?q=xargs&spm=1001.2101.3001.7020) rmawk
awk是三個創作人名字的組合,所以不用想為什么叫這個。
一般用來處理文件的每一行。
語法
awk [選項參數] 'script' var=value file(s) 或 awk [選項參數] -f scriptfile var=value file(s)script就是對應的命令腳本,也可以-f scriptfile 的方式從scriptfile讀取awk命令來執行。
-v 設置變量 ,例如-va=1,就是設置了一個a=1的變量。
-F設置分隔符,默認是按照空格或者tab分割的,-F可以指定分割符,例如 -F,就是指定按照,分割。
注意:
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'關于 awk 腳本,我們需要注意兩個關鍵詞 BEGIN 和 END。
- BEGIN{ 這里面放的是執行前的語句 }
- END {這里面放的是處理完所有的行后要執行的語句 }
- {這里面放的是處理每一行時要執行的語句}
以下是示例:
awk '{[pattern] action}' {filenames} # 行匹配語句 awk '' 只能用單引號awk -v # 設置變量
$ awk -va=1 '{print $1,$1+a}' log.txt #指定 awk -F #-F相當于內置變量FS, 指定分割字符過濾第一列大于2并且第二列等于’Are’的行
$ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt #命令 #輸出 3 Are yousort
sort 可針對文本排序
語法
sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字符>][+<起始欄位>-<結束欄位>][--help][--verison][文件][-k field1[,field2]]常用參數介紹:
-
-o<輸出文件> 將排序后的結果存入指定的文件。
-
-r 以相反的順序來排序。
-
-t<分隔字符> 指定排序時所用的欄位分隔字符。
-
-n 依照數值的大小排序。
-
-u 意味著是唯一的(unique),輸出的結果是去完重了的。
-
-m 將幾個排序好的文件進行合并。
-
-b 忽略每行前面開始出的空格字符。
-
-c 檢查文件是否已經按照順序排序。
-
-d 排序時,處理英文字母、數字及空格字符外,忽略其他的字符。
-
-f 排序時,將小寫字母視為大寫字母。
-
[-k field1[,field2]] 按指定的列進行排序。sort testfile -k 2 之地那個對第二列的排序。
uniq
Linux uniq 命令用于檢查及刪除文本文件中重復出現的行列,一般與 sort 命令結合使用。
uniq 可檢查文本文件中重復出現的行列。
語法
uniq [-cdu][-f<欄位>][-s<字符位置>][-w<字符位置>][--help][--version][輸入文件][輸出文件]-
-c或–count 在每列旁邊顯示該行重復出現的次數。
-
-d或–repeated 僅顯示重復出現的行列。
-
-u或–unique 僅顯示出一次的行列。
-
[輸入文件] 指定已排序好的文本文件。如果不指定此項,則從標準讀取數據;
-
[輸出文件] 指定輸出的文件。如果不指定此選項,則將內容顯示到標準輸出設備(顯示終端)。
注意:
uniq命令只適用于已經排序號的文件,否則不起作用。
所以使用時結合sort命令,例如統計出現次數最多的前三個字符。
sort test.log | uniq -c |head -3| awk '{print $2}'netstat
Linux netstat 命令用于顯示網絡狀態。
利用 netstat 指令可讓你得知整個 Linux 系統的網絡情況。
語法
netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]-
-t或–tcp 顯示TCP傳輸協議的連線狀況。
-
-u或–udp 顯示UDP傳輸協議的連線狀況。
-
-n或–numeric 直接使用IP地址,而不通過域名服務器。
-
-N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號連接名稱。
-
-a或–all 顯示所有連線中的Socket。
-
-c或–continuous 持續列出網絡狀態。
-
-l或–listening 顯示監控中的服務器的Socket。
xargs
xargs 一般是和管道一起使用。
命令格式:
somecommand |xargs -item command假如你有一個文件包含了很多你希望下載的 URL,你能夠使用 xargs下載所有鏈接:
# cat url-list.txt | xargs wget -c find /sbin -perm +700 |ls -l #這個命令是錯誤的 find /sbin -perm +700 |xargs ls -l #這樣才是正確的ps
Linux ps (英文全拼:process status)命令用于顯示當前進程的狀態,類似于 windows 的任務管理器。
語法
ps [options] [--help]-
ps 的參數非常多, 在此僅列出幾個常用的參數并大略介紹含義
-
-A 列出所有的進程
-
-w 顯示加寬可以顯示較多的資訊
-
-au 顯示較詳細的資訊
-
-aux 顯示所有包含其他使用者的進程
-
USER: 行程擁有者
-
PID: pid
-
%CPU: 占用的 CPU 使用率
-
%MEM: 占用的記憶體使用率
-
VSZ: 占用的虛擬記憶體大小
-
RSS: 占用的記憶體大小
-
TTY: 終端的次要裝置號碼 (minor device number of tty)
-
STAT: 該行程的狀態:
- D: 無法中斷的休眠狀態 (通常 IO 的進程)
- R: 正在執行中
- S: 靜止狀態
- T: 暫停執行
- Z: 不存在但暫時無法消除
- W: 沒有足夠的記憶體分頁可分配
- <: 高優先序的行程
- N: 低優先序的行程
- L: 有記憶體分頁分配并鎖在記憶體內 (實時系統或捱A I/O)
-
START: 行程開始時間
-
TIME: 執行的時間
-
COMMAND:所執行的指令
top
Linux top命令用于實時顯示 process 的動態。
使用權限:所有使用者。
語法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]一般就直接top。
然后按shift+H,可以查看具體的線程信息
free
查看內存使用情況
語法
free [-bkmotV][-s <間隔秒數>]free -ht -s
-
-h 以合適的單位顯示內存使用情況
-
-t 顯示內存總和列。
-
-s<間隔秒數> 持續觀察內存使用狀況。
nohup
nohup 命令,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下,如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。
語法格式
nohup Command [ Arg … ] [ & ]參數說明:
Command:要執行的命令。
Arg:一些參數,可以指定輸出文件。
&:讓命令在后臺執行,終端退出后命令仍舊執行。
實例
以下命令在后臺執行 root 目錄下的 runoob.sh 腳本:
nohup /root/runoob.sh &總結
以上是生活随笔為你收集整理的Linux面试常考命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何编写清晰的Ansible剧本(复杂剧
- 下一篇: C语言输入10名同学3门课,输入10个学