概述本篇博文講述系統(tǒng)內(nèi)核,、Bash解釋器的關(guān)系與作用,,如何正確的執(zhí)行Linux命令以及常見排錯方法,。 經(jīng)驗(yàn)豐富的運(yùn)維人員可以恰當(dāng)?shù)慕M合命令與參數(shù),,使Linux字符命令更加的靈活且相對減少消耗系統(tǒng)資源,。 強(qiáng)大好用的SHELL 計(jì)算機(jī)硬件是由運(yùn)算器,、控制器、存儲器,、輸入/輸出設(shè)備等設(shè)備組成的,,而能夠讓機(jī)箱內(nèi)各種設(shè)備各司其職東西就叫做——系統(tǒng)內(nèi)核。內(nèi)核負(fù)責(zé)驅(qū)動硬件,、管理活動和分配/管理硬件資源,,如此說來系統(tǒng)內(nèi)核對計(jì)算機(jī)來講可真的是太重要了,所以它不能直接讓用戶操作,。 因?yàn)橛脩舨荒苤苯涌刂朴布膊荒苤苯硬僮鲀?nèi)核,,于是便需要基于“系統(tǒng)調(diào)用接口”開發(fā)出的程序/服務(wù)來滿足用戶日常工作了。 首先承認(rèn)在紅帽RHEL7中有些諸如邏輯卷管理器(LVM)的圖形化工具非常好用,,也減少了運(yùn)維人員操作出錯的幾率,,值得稱贊,但一直以來Linux運(yùn)維人員更多的傾向于用命令寫腳本程序,,因?yàn)閳D形化的工具不靈活而且相比來說更加消耗系統(tǒng)資源,。 其實(shí)很多圖形工具也是調(diào)用腳本來工作的,但功能卻被“閹割”了,,更缺乏了靈活性,,所以有些運(yùn)維人員甚至都不會給Linux系統(tǒng)安裝圖形界面,需要工作了直接遠(yuǎn)程連接過去,,不得不說這樣做真的挺高效的,。 “Shell“——也可稱為“殼”,充當(dāng)?shù)氖侨伺c內(nèi)核(硬件)的翻譯官,,用戶將一些命令“告訴”Shell,,它就會調(diào)用相應(yīng)的程序服務(wù)執(zhí)行工作啦~~現(xiàn)在包括紅帽系統(tǒng)在內(nèi)的許多熱門Linux系統(tǒng)主流默認(rèn)字符Shell是Bash(Bourne-Again SHell)。 bash作為大多數(shù)linux系統(tǒng)的默認(rèn)字符解釋器,,必須得學(xué)好,!Bash的優(yōu)勢:
執(zhí)行命令與查看幫助 man 既然有了如此好用的“翻譯官”,那么接下來就有必要好好學(xué)習(xí)下如何更高效的和它溝通了~ 要想準(zhǔn)確的,、高效的完成工作,,不能夠光靠命令本身,還應(yīng)該根據(jù)實(shí)際情況來組合各種命令選擇和命令參數(shù): 命令名稱 [命令參數(shù)] [命令對象]11 注意:命令名稱,、命令參數(shù),、命令對象之間請用空格鍵分隔。 比較好理解的是命令對象,,命令對象一般是指要處理的目標(biāo)(普通文件/目錄文件/用戶等等),,而命令參數(shù)對于新手來講比較麻煩,因?yàn)檫@個值會隨命令的不同和環(huán)境情況的不同而異,,所以在參數(shù)選擇搭配上需要長時(shí)間的經(jīng)驗(yàn)積累才可以。 命令的參數(shù)可以選用長格式(完整的選項(xiàng)名稱)也可選用短格式(單個字母的縮寫),分別用”—“與”–“做前綴,。 長格式如:man —help 當(dāng)遇到了一個陌生命令后如何知道它有那些可用的參數(shù),?這時(shí)就可以用man命令了。 man命令的可用幫助文檔分類有: 一般來講幫助文件都很長很多,,如果你想翻看的話,,就要理解幫助文檔的目錄結(jié)構(gòu)與操作方法: 常用系統(tǒng)工作命令 echo echo命令用于在終端顯示字符串或變量, 格式為: 將echo命令的字符串輸出到終端: [root@xgj~]# echo xgjxgj1212 用echo命令查看SHELL變量的值(前面有$符號): [root@xgj~]# echo $SHELL/bin/bash1212 查看本機(jī)主機(jī)名: [root@xgj~]# echo $HOSTNAMExgj1212 date date命令用于顯示/設(shè)置系統(tǒng)的時(shí)間或日期,, 格式為: 強(qiáng)大的date命令能夠按照指定格式顯示系統(tǒng)的時(shí)間或日期,,只需鍵入” ”號開頭的字符串指定其格式. 詳細(xì)格式如下: 查看當(dāng)前的系統(tǒng)時(shí)間: [root@xgj ~]# dateMon Aug 24 16:11:23 CST 20161212 按照”年-月-日 小時(shí):分鐘:秒”的格式: [root@xgj ~]# date ' %Y-%m-%d %H:%M:%S' 設(shè)置系統(tǒng)時(shí)間為2017年5月1日8點(diǎn)半: [root@xgj ~]# date -s '20170501 8:30:00'Mon May 1 08:30:00 CST 20151212 查看本地系統(tǒng)時(shí)區(qū): [root@xgj ~]# date ' %Z'CST1212 查看星期幾: [root@xgj ~]# date ' %A'Tuesday1212 輸入當(dāng)前是上午還是下午: [root@xgj Desktop]# date ' %p'AM1212 判斷今天是一年中的第幾天: [root@xgj ~]# date ' %j'2441212 reboot reboot命令用于重啟系統(tǒng)(僅root用戶可以使用),格式為:”reboot”,。 重啟計(jì)算機(jī): [root@xgj ~]# reboot11 wget wget命令用于使用命令行下載網(wǎng)絡(luò)文件,, 格式為: 系統(tǒng)狀態(tài)檢測命令 合格的運(yùn)維人員必需具備快速查看系統(tǒng)狀態(tài)的能力. ifconfig ifconfig用于獲取網(wǎng)卡配置與網(wǎng)絡(luò)狀態(tài)等信息:格式為 查看本機(jī)當(dāng)前的網(wǎng)卡配置與網(wǎng)絡(luò)狀態(tài)等信息: [root@xgj ~]# ifconfig...... uname uname命令用于查看系統(tǒng)內(nèi)核版本等信息,格式為:“ 查看系統(tǒng)的內(nèi)核名稱,、內(nèi)核發(fā)行版、內(nèi)核版本,、節(jié)點(diǎn)名,、硬件名稱、硬件平臺,、處理器類型,、操作系統(tǒng)等信息: [root@xgj ~]# uname -a11 順便說下,如果您想查看系統(tǒng)詳細(xì)版本信息就看redhat-release文件: [root@xgj ~]# cat /etc/redhat-release11 uptime 查看系統(tǒng)的負(fù)載情況 uptime命令用于查看系統(tǒng)的負(fù)載情況,,格式為:“uptime”,。 我也經(jīng)常用” 而平均負(fù)載分為最近1分鐘,、5分鐘,、15分鐘的系統(tǒng)負(fù)載情況,負(fù)載值越低越好(小于1是正常),。 獲取當(dāng)前系統(tǒng)狀態(tài)信息: [root@xgj ~]# uptime22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.181212 free free命令用于顯示當(dāng)前系統(tǒng)中內(nèi)存的使用量情況,,格式為: 以m為單位顯示當(dāng)前系統(tǒng)中內(nèi)存的使用量情況: [root@xgj ~]# free -m11 who [root@xgj ~]# who11 last last命令用于查看所有系統(tǒng)的登入記錄,格式為:”last [參數(shù)]”,。 [root@xgj ~]# lastroot pts/0 :0 Mon Aug 24 17:52 still logged inroot :0 :0 Mon Aug 24 17:52 still logged in(unknown :0 :0 Mon Aug 24 17:50 - 17:52 (00:02) history history命令用于顯示歷史執(zhí)行過的命令,,格式為:“history [-c]”。 歷史命令會被保存到用戶家目錄中的”.bash_history“文件中,。Linux系統(tǒng)中以點(diǎn)(.)開頭的文件均代表隱藏文件,,一般會是系統(tǒng)文件,。 清空該用戶在本機(jī)中執(zhí)行過命令的歷史記錄: [root@xgj ~]# history -c11 history默認(rèn)會保存1000條執(zhí)行過的命令,若要修改可直接編輯/etc/profile文件的HISTSIZE值,。 sosreport sosreport命令用于收集系統(tǒng)系統(tǒng)配置并診斷信息后輸出結(jié)論文檔,,格式為:“sosreport”。 當(dāng)我們的紅帽系統(tǒng)出現(xiàn)故障需要聯(lián)系紅帽廠商或其他技術(shù)支持時(shí),,大多數(shù)情況都需要提供使用到這個命令,。 收集系統(tǒng)本地配置信息并診斷: [root@xgj ~]# sosreport11 工作目錄切換命令 pwd pwd命令用于顯示當(dāng)前的工作目錄,格式為:“pwd [選項(xiàng)]”,。 cd cd命令用于切換工作路徑,,格式為:“cd [目錄名稱]” 切換進(jìn)/etc目錄中: [root@xgj ~]# cd /etc11 切換進(jìn)/bin目錄中: [root@xgj etc]# cd /bin11 返回上級目錄(即/etc目錄): [root@xgj bin]# cd -/etc1212 返回用戶自己的家目錄: [root@xgj etc]# cd ~[root@xgj ~]#1212 ls ls命令用于查看目錄中有那些文件,格式為:ls [選項(xiàng)] [文件] 查看當(dāng)前目錄下有那些文件(長格式): 查看/etc目錄中有那些文件: [root@xgj ~]# ls /etc………省略部分文件………1212 查看/etc目錄的權(quán)限與屬性: [root@xgj ~]# ls -ld /etcdrwxr-xr-x. 132 root root 8192 Jul 10 10:48 /etc1212 追加-h參數(shù),,以K/M/G為單位顯示容量: [root@xgj ~]# ls -ldh /etcdrwxr-xr-x. 132 root root 8.0K Jul 10 10:48 /etc123123 文本文件編輯命令 cat cat命令用于查看純文本文件(較短的),,格式為:“cat [選項(xiàng)] [文件]”。 查看文本文件: [root@xgj ~]# cat 文件名11 more more命令用于查看純文本文件(較長的),,格式為:“more [選項(xiàng)] 文件”,。 查看文本文件: [root@xgj ~]# more 文件名11 head head命令用于查看純文本文檔的前N行,格式為:“head [選項(xiàng)] [文件]”,。 查看文本文件前20行: [root@xgj ~]# head -n 20 文件名11 tail tail命令用于查看純文本文檔的后N行,,格式為:“tail [選項(xiàng)] [文件]” 查看文本文件后20行: [root@xgj ~]# tail -n 20 文件名11 od od命令用于對查看特殊格式的文件,格式為:“od [選項(xiàng)] [文件]” tr tr命令用于轉(zhuǎn)換文本文件中的字符,,格式為:“tr [原始字符] [目標(biāo)字符]”,。 將tr.txt文件的內(nèi)容轉(zhuǎn)換成大寫 | —管道命令符 [root@xgj ~]# cat tr.txt | tr [a-z] [A-Z]RED HAT CERTIFIEDFREE LINUX LESSONSPROFESSIONAL GUIDANCELINUX COURSE1234512345 wc wc命令用于統(tǒng)計(jì)指定文本的行數(shù)、字?jǐn)?shù),、字節(jié)數(shù),,格式為“wc [參數(shù)] 文本”。 統(tǒng)計(jì)當(dāng)前系統(tǒng)中的用戶個數(shù): [root@xgj ~]# wc -l /etc/passwd38 /etc/passwd1212 cut cut命令用于通過列來提取文本字符,,格式為:“cut [參數(shù)] 文本”,。 獲取當(dāng)前系統(tǒng)中所有用戶的名稱: 參數(shù)作用:-d以”:”來做分隔符,-f參數(shù)代表只看第一列的內(nèi)容,。 [root@xgj ~]# cut -d: -f1 /etc/passwd11 獲取root用戶的默認(rèn)SHELL解釋器: [root@xgj ~]# grep ^root /etc/passwd | cut -d: -f 7/bin/bash1212 diff diff命令用于比較多個文本文件的差異,,格式為:”diff [參數(shù)] 文件”。 比較兩個文件的差異: [root@xgj ~]# diff diff_A.txt diff_B.txt 僅顯示比較后的結(jié)果,,即相同或不相同: [root@xgj ~]# diff --brief diff_A.txt diff_B.txtFiles diff_A.txt and diff_B.txt differ1212 使用上下文輸出的格式: [root@xgj ~]# diff -c diff_A.txt diff_B.txt*** diff_A.txt 2015-08-30 18:07:45.230864626 0800--- diff_B.txt 2015-08-30 18:08:52.203860389 0800****************** 1,5 ****! Welcome to xgj.comRed Hat certified! Free Linux LessonsProfessional guidance 文件目錄管理命令 touch touch命令用于創(chuàng)建空白文件與修改文件時(shí)間,,格式為:“touch [選項(xiàng)] [文件]”。 我們可以用“touch test”輕松的創(chuàng)建出一個名字為test的空白文檔,,所以這個功能無須介紹,。 對于在Linux中的文件有三種時(shí)間: - 更改時(shí)間(mtime):內(nèi)容修改時(shí)間(不包括權(quán)限的) - 更改權(quán)限(ctime):更改權(quán)限與屬性的時(shí)間 - 讀取時(shí)間(atime):讀取文件內(nèi)容的時(shí)間 如果黑客執(zhí)行了 mkdir mkdir用于創(chuàng)建空白的文件夾,,格式為:“mkdir [選項(xiàng)] 目錄”,。 創(chuàng)建文件夾: [root@xgj ~]# mkdir 文件夾名11 創(chuàng)建一個名字叫xgj的目錄: [root@xgj ~]# mkdir xgj11 使用ls命令查看該目錄的權(quán)限屬性等信息: [root@xgj ~]# ls -ld xgj/drwxr-xr-x. 2 root root 6 Aug 24 19:25 xgj/1212 還記得剛剛用cd命令進(jìn)入xgj目錄嗎?這里是個小技巧,,變量!$或(鍵盤按鍵)代表上一條命令的參數(shù),。 [root@xgj ~]# cd !$cd xgj1212 pwd命令用于顯示當(dāng)前的工作路徑。 [root@xgj xgj]# pwd/root/Desktop/xgj1212 一次創(chuàng)建5個目錄a/b/c/d/e: [root@xgj xgj]# mkdir -p a/b/c/d/e11 查看目錄的屬性,,驗(yàn)證是否成功: [root@xgj xgj]# ls -ld a/b/c/d/e/drwxr-xr-x. 2 root root 6 Aug 29 10:16 a/b/c/d/e/1212 cp cp命令用于復(fù)制文件或目錄,格式為:“cp [選項(xiàng)] 源文件 目標(biāo)文件”,。 復(fù)制命令的三種情況: - 目標(biāo)文件是一個目錄,,會將源文件復(fù)制到該目錄中。 - 目標(biāo)文件是一個文件,,會將源文件覆蓋該文件,。 - 目標(biāo)文件不存在,將會復(fù)制源文件并修改為目標(biāo)文件的名稱(重命名) 創(chuàng)建一個名為install.log的文件: [root@xgj ~]# touch install.log11 將install.log復(fù)制為x.log: [root@xgj ~]# cp install.log x.log11 查看到確實(shí)出現(xiàn)了文件x.log [root@xgj ~]# lsinstall.log x.log1212 mv mv命令用于移動文件或改名,,格式為:“mv [選項(xiàng)] 文件名 [目標(biāo)路徑|目標(biāo)文件名]”,。 將文件aaa重命名為bbb: [root@xgj ~]# mv aaa bbb11 rm rm命令用于刪除文件或目錄,格式為:“rm [選項(xiàng)] 文件”,。 刪除普通文件并提示確認(rèn)信息:“rm 文件名” 刪除普通文件或目錄文件,,不提示:“rm -rf 文件或目錄名” 查看當(dāng)前目錄下的文件: [root@xgj ~]# lsinstall.log x.log1212 刪除install.log文件,輸入”y”即確認(rèn): [root@xgj ~]# rm install.logrm: remove regular empty file ‘install.log’? y1212 刪除x.log文件而無需確認(rèn): [root@xgj ~]# rm -rf x.log11 Linux系統(tǒng)中還有一個rmdir命令,,它不同于rm -rf命令會刪除一切,,而是僅刪除空目錄,遇到目錄內(nèi)有文件時(shí)則報(bào)錯,。 dd dd命令用于指定大小的拷貝的文件或指定轉(zhuǎn)換文件,,格式為:“dd [參數(shù)]”。 將光驅(qū)設(shè)備拷貝成鏡像文件: [root@xgj ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-xgj.Com.iso7311360 0 records in7311360 0 records out3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s12341234 生成一個560m的空白文件: [root@xgj ~]# dd if=/dev/zero of=560_file count=1 bs=560M1 0 records in1 0 records out587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s12341234 將硬盤的MBR信息拷貝出來: [root@xgj ~]# dd if=/dev/sda of=sda_image count=1 bs=512K1 0 records in1 0 records out524288 bytes (524 kB) copied, 0.0449481 s, 11.7 MB/s12341234 用戶與組管理命令 useradd useradd命令用于創(chuàng)建新的用戶,,格式為:“useradd [選項(xiàng)] 用戶名”,。 創(chuàng)建名為xgj的用戶,并定義家目錄路徑,、UID以及登陸解釋器(不允許登陸): [root@xgj ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin xgj11 查看xgj用戶的基本信息: [root@xgj ~]# id xgjuid=8888(xgj) gid=8888(xgj) groups=8888(xgj)1212 passwd passwd命令用于修改用戶的密碼,,格式為:“passwd [選項(xiàng)] [用戶名]”。 - 修改當(dāng)前用戶的密碼:“passwd” - 修改其他用戶的密碼:“passwd 其他用戶名” userdel userdel命令用于刪除用戶所有表格,,格式為:“userdel [選項(xiàng)] 用戶名”,。 刪除用戶與其家目錄: [root@xgj ~]# userdel -d 用戶名11 usermod usermod命令用于修改用戶的屬性,格式為“usermod [選項(xiàng)] 用戶名”,。 groupadd groupadd命令用于創(chuàng)建群組,,格式為:”groupadd [選項(xiàng)] 群組名”。 創(chuàng)建名稱為xgj的用戶群組: [root@xgj ~]# groupadd xgj11 打包壓縮文件命令 tar tar命令用于對文件打包壓縮或解壓,,格式為:“tar [選項(xiàng)] [文件]”,。
將/etc目錄內(nèi)文件打包并通過gzip格式壓縮: [root@xgj ~]# tar czvf etc.tar.gz /etc 將etc.tar.gz解壓到/root/etc目錄中: [root@xgj ost ~]# mkdir /root/etc開始解壓etc.tar.gz文件: 文件查詢搜索命令 grep grep命令用于對文本進(jìn)行搜索,,格式為:“grep [選項(xiàng)] [文件]”。 搜索某個關(guān)鍵詞:“grep 關(guān)鍵詞 文本文件” 搜索在/etc/passwd中”/sbin/nologin”出現(xiàn)的行,,找出系統(tǒng)中不允許登陸的用戶,。 [root@xgj ~]# grep /sbin/nologin /etc/passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin………………………………1234567812345678 找出文件“/usr/share/gedit/plugins/snippets/docbook.xml”中所有包含entry的行并輸出到/root/lines: grep entry /usr/share/gedit/plugins/snippets/docbook.xml >> /root/lines11 find find命令用于查找文件,格式為:“find [查找路徑] 尋找條件 操作”,。 這里需要注意下find命令非常靈活導(dǎo)致參數(shù)非常復(fù)雜,,這里不要求大家記住,用時(shí)來查即可,。 對于常用搜索路徑有幾個小竅門:“~”代表用戶的家目錄,,“.”代表當(dāng)前目錄,“/”代表根目錄,。 搜索整個系統(tǒng)中所有包含SUID的文件(因SUID的數(shù)字表示法是4,,而減號表示只要包含即可)。 [root@xgj ~]# find / -perm -4000 -print/usr/bin/fusermount 找出用戶xgj的文件并復(fù)制到/root/findresults目錄,。 重點(diǎn)是”-exec {} \;”其中的{}代表find命令搜索出的文件,,記住結(jié)尾必須是\; [root@xgj ~]# find / -user xgj -exec cp -arf {} /root/findresults/ \; |
|