Linux命令【注意:建議用UltraEdit打開】 一.文件處理命令 1.命令格式與目錄處理命令 ls –a【查看隱藏文件】 ls –l【查看文件信息長格式顯示】 ls –d【查看指定目錄的詳細信息】 ls –h【顯示容量大小】 ls –i【查看任何文件的I 節點】 ll 文件名【查看一個文件的詳細信息】 2.目錄處理命令 mkdir –p【遞歸建立目錄】 cd【切換指定目錄】 pwd【顯示當前目錄】 rmdir【刪除空目錄】 cp【複製文件到某個目錄下】 cp –r【複製目錄】 cp –p【保留文件屬性】 mv【剪切文件、更名】 rm【刪除文件】 rm –r【刪除目錄】 rm –f【強制執行】 3.文件處理命令 touch【建立空文件】 cat【查看文件內容】 cat –n【顯示行號】 tac【顯示文件內容(反向列示)】 more【分頁顯示文件內容(空格或f[翻頁], Enter[換行], q或Q[退出])】 less【分頁顯示文件內容(可向上翻頁),填寫/可搜索關鍵詞,n等於next,PageUp和PageDown】 head【顯示文件前面幾行】 head -n【指定行數,head –n 20 /etc/services】 tail【顯示文件後面幾行】 tail –n【指定行數】 tail –f【動態顯示文件末尾內容】 4.連接命令 ln【生成連接文件,相似拷貝,能夠同步更新】 ln –s【建立軟連接,至關於快捷方式】 二. 權限管理命令 1.權限管理命令 chmod【改變文件或目錄權限,u=全部者;g=全部組;o=其餘人;a=所有,[{ugoa}{+-=}{rwx}],chmod u+x,o-r或640 文件名,r—4;w—2;x—1,rwx—7(4+2+1)】 chmod –R【遞歸修改,子目錄的權限也修改】 2.其餘權限管理命令 chown【改變文件或目錄的全部者,chown 用戶 文件或目錄】 chgrp【改變文件或目錄的所屬組】 umask【顯示,設置文件的缺省權限】 三. 文件搜索命令 1.文件搜索命令 find【文件搜索,find 搜索範圍 匹配條件】 find 搜索範圍 -name或-iname(不區分大小寫) 匹配條件【根據文件名稱搜索,匹配條件(abcd)=*bc*=ab??,*=匹配任意字符,?=匹配單個字符】 find 搜索範圍 -size +n/-n/n(n表明文件的大小)【根據文件的大小搜索】 find 搜索範圍 -size +163840 -a/-o -size -204800【查找(-a=大於80M小於100M的文件,-o=兩個條件知足一個便可)】 find 搜索範圍 -user 用戶名【根據用戶名搜索文件,搜索範圍=/home】 find 搜索範圍 -group 所屬組名【根據所屬組名搜索文件】 find 搜索範圍 -cmin/-amin/-mmin -5【查找5分鐘內被修改過(-cmin=文件屬性,-amin=訪問時間,-mmin=文件內容)的文件】 find 搜索範圍 -type f/d/l【根據文件類型查找,f=文件,d=目錄,l=軟連接文件】 find 搜索範圍 -inum n【根據i節點查找,n=i節點數】 以上搜索結果命令加(find /tmp -name *aaaa*) -exec/-ok 命令(ls -l[顯示詳細信息]) {} \;【對搜索結果執行命令操做】 2.其餘搜索命令 locate -i 文件名【在文件資料庫中查找文件,-i=不區分大小寫】 updatedb【更新文件資料庫,tmp目錄不在更新範圍內】 which 命令(ls)【搜索命令所在目錄及別名信息】 whereis 命令(ls)【搜索命令所在目錄及幫助文檔路徑】 grep -i/-v mysql /root/install.log【在文件中搜索字符匹配的行並輸出,-i=不區分大小寫,-v=排除指定字串(^#=排除#帶頭的行)】 四. 幫助命令 man 命令或配置文件【獲取幫助信息】 info 命令【獲取幫助信息,顯示和man不一樣】 whatis 命令【獲取該命令的簡介信息】 apropos 配置文件名稱【只查看配置文件的信息】 命令 --help【獲取該命令的選項信息】 help 內置命令【查看Shell內置命令的幫助信息】 五. 用戶管理命令 useradd 用戶名【添加新用戶】 passwd 用戶名【設置用戶密碼】 who【查看登陸用戶信息,tty本地登陸,pts遠程終端】 w【查看登陸用戶的詳細信息,全】 六. 壓縮解壓命令 gzip 文件【壓縮文件,壓縮後的格式:.gz】 gunzip 文件【解壓.gz的壓縮文件】 tar -zcf temp.tar.gz temp【打包目錄,-c:打包,-v:顯示詳細信息,-f:指定文件名,-z:打包同時壓縮,temp:文件名】 tar -zxf temp.tar.gz【解壓目錄,-x:解包,-v:顯示詳細信息,-f:指定文件名,-z:解包同時解壓,temp:文件名】 zip -r temp.zip temp【壓縮問價或目錄,-r:壓縮目錄,temp:文件名】 unzip temp【解壓.zip的壓縮文件,temp:文件名或目錄】 bzip2 -k temp【壓縮文件,-k:產生壓縮文件後保留原文件,temp:文件名】 bunzip2 -k temp【解壓文件,-k:解壓縮後保留原文件,temp:文件名】 tar -cjf temp.tar.bz2 temp【壓縮】 tar -xjf temp.tar.bz2【解壓】 七. 網絡命令 write 用戶名【給在線用戶發信息,以Ctrl+D保存結束】 wall 信息【發廣播信息】 ping -c 4 IP地址【測試網絡連通性,-c:指定發送次數爲4次】 ifconfig eth0 192.168.0.169【查看和設置網卡信息】 mail 用戶名【查看發送電子郵件,以Ctrl+D保存結束,help查看信息】 last【列出目前與過去登入系統的用戶信息】 lastlog -u 502【檢查某特定用戶上次登陸的時間】 traceroute 網址【顯示數據包到主機間的路徑 IP等等】 netstat -t/-u/-l/-r/-n【顯示網絡相關信息,-t:TCP協議,-u:UDP協議,-l:監聽,-r:路由,-n:顯示IP地址和端口號】 netstat -tlun【查看本機監聽的端口】 netstat -an【查看本機全部的網絡】 netstat -rn【查看本機路由表】 mount【掛載命令---詳細找百度吧】 mount /dev/sr0 /mnt/cdrom/【掛載光盤】 umount /dev/sr0【卸載掛載點】 八.關機重啓命令 shutdown -h now【如今關機,-h:關機,now:如今】 shutdown -h 20:30【定時關機,-h:關機】 shutdown -r now【如今重啓,-r:重啓,now:如今】 shutdown -r 20:30【定時重啓,-r:重啓】 shutdown -c【取消前一個定時關機命令】 init 0:關機/1:關機/2:不徹底多用戶/不含NFS服務/3:徹底多用戶/4:未分配/5:圖形界面/6:重啓【系統運行級別】 cat /etc/inittab【修改系統默認運行級別】 runlevel【查詢系統運行級別,默認是N 3,N:表明上一次的系統級別】 logout【退出登陸命令——注意必定記得退出登陸】 九.文本編輯器經常使用命令 1).vim經常使用操做 vim 文件名【進入或新建--進入命令模式】 i/a/o【進入插入模式,a:在光標所在字符後插入,A:在光標所在行尾插入,i:在光標所在字符前插入,I:在光標所在行行首插入,o:在光標下插入新行,O:在光標上插入新行】 :set nu【添加行號】 :set nonu【取消行號】 gg【到第一行】 G【到最後一行】 nG【到第n行】 :n【到第n行--------推薦】 $【移至行尾】 0【移至行首】 x【刪除光標所在處字符-----------推薦】 nx【刪除光標所在處後n個字符】 dd【刪除光標所在行,ndd刪除n行--------推薦】 dG【刪除光標所在行到文件末尾內容】 D【刪除光標所在處到行尾內容】 :n,nd【刪除指定範圍的行】 yy【複製當前行------------推薦】 nyy【複製當前行一下n行】 dd【剪切當前行】 ndd【剪切當前行如下n行】 p/P【粘貼在當前光標所在行下(p)或行上(P)--------推薦】 r【取代光標所在處字符】 R【從光標所在處開始替換字符,按ESC結束】 u【取消上一步操做,撤銷----------推薦】 /string【搜索指定字符串,string:字符串,n:搜索指定字符串的下一個出現位置】 :set ic【搜索時忽略大小寫】 :set noic【取消搜索時忽略大小寫】 :%s/old/new/g【全文替換指定字符串,冒號指全文替換,%s:全文搜索,old:要替換的字符串,new:替換的新的字符串,g:不詢問確認】 :n,ns/old/new/c【在必定範圍內替換指定字符串,(n,ns:起始行,終止行s),c:詢問確認】 :w【保存修改------推薦】 :w /tmp/temp.txt【另存爲指定文件】 :wq【保存退出---------推薦】 :q!【不保存退出】 ZZ【快捷鍵,保存修改並退出】 :wq!【保存修改並退出(文件全部者及root可以使用)】 按ESC【退出模式,進入命令模式】 2).vim使用技巧 :r /tmp/temp.txt(被導入的文件)【把temp.txt的內容導入到光標處】 :r !date(命令)【能夠在不退出vim的狀況下,執行相應的操做命令,date:系統時間命令】 :map ^P I#<ESC>【定義快捷鍵:map,^P:按ctrl+v+p(快捷鍵按Ctrl+p),註釋該行】 :map ^B 0x【定義快捷鍵:map,^B:按ctrl+v+b(快捷鍵按Ctrl+b),取消註釋該行】 :1,4s/^/#//g【多行註釋,把1到4行的行首添加#】 :1,4s/^#//g【取消多行註釋,把1到4行的行首的#去掉】 :1,4s/^/\/\//g【多行註釋,把1到4行的行首添加//】 :1,4s/^\/\//g【取消多行註釋,把1到4行的行首的//去掉】 :ab mymail www.xxx@163.com【替換,在編輯時填寫mymail回車時就會被替換成郵箱】 #快捷鍵或編輯模式命令 在重啓後會失效,必須在/root/.vimrc或/home/***/.vimrc目錄下才會被永久保存---注意填寫時不用填寫:了 ======================================================================================================== 1、軟件包管理簡介 1.軟件包分類 源碼包---腳本安裝包 二進制包(RPM包、系統默認包)---常見 2、RPM包管理-rpm命令管理 01.RPM包命令原則 http-2.2.15-15.e16.centos.1.i686.rpm httpd------------軟件包名 2.2.15-----------軟件版本 15---------------軟件發佈的次數 e16.centos-------適合的Linux平臺 i686-------------適合的硬件平臺 rpm--------------rpm包擴展名 02.RPM包依賴性 樹形依賴:a->b->c 環形依賴:a->b->c->a 模塊依賴:模塊依賴查詢網站www.rpmfind.net 03.包全名與包名 包全名:操做的包是沒有安裝的軟件包時,使用包全名,並且要注意路徑 包名:操做已經安裝的軟件包時,使用包名,是搜索/var/lib/rpm/中的數據庫 04.RPM安裝 rpm -ivh 包全名【-i:安裝,-v:顯示詳細信息,-h:顯示進度,--nodeps:不檢測依賴性】 05.RPM包升級 rpm -Uvh 包全名【-U:升級】 06.卸載 rpm -e 包名【-e:卸載,--nodeps:不檢測依賴性】 07.查詢是否安裝 rpm -q 包名【查詢包是否安裝,-q:查詢】 rpm -q | grep 包名【查詢包是否安裝,-q:查詢,grep:管道符--查詢與包名相關的包】 rpm -qa【查詢全部已經安裝的RPM包,-a:全部】 08.查詢軟件包詳細信息 rpm -qi 包名【-i:查詢軟件信息,-p:查詢未安裝包信息(包全名)】 09.查詢包中文件安裝位置 rpm -ql 包名【-l:列表,-p:查詢未安裝包信息(包全名)】 10.查詢系統文件屬於哪一個RPM包 rpm -qf 系統文件名【-f:查詢系統文件屬於哪一個軟件包】 11.查詢軟件包的依賴性 rpm -qR 包名【-R:查詢軟件包的依賴性,-p:查詢未安裝包信息】 12.RPM包校驗 rpm -V 已安裝的包名【-V:校驗指定RPM包中的文件】 1).驗證內容中的8個信息的具體內容以下 S:文件大小是否改變 M:文件類型或文件的權限(rwx)是否被改變 5:文件MD5校驗和是否改變(能夠當作文件內容是否改變) D:設備的中,從代碼是否改變 L:文件路徑是否改變 U:文件屬主(全部者)是否改變 G:文件的數組是否改變 T:文件的修改時間是否改變 2).文件類型 c:配置文件 d:普通文件 g:"鬼"文件,不多見,就是該文件不該該被這個RPM包包含 l:受權文件 r:描述文件 13.RPM包中文件提取 rpm2cpio 包全名 | \ cpio -idv .文件絕對路徑【rpm2cpio:將rpm包轉換爲cpio格式的命令,cpio:是一個標準工具,它用於建立軟件檔案文件和從檔案文件中提取文件】 cpio 選項 <[文件設備]【-i:copy-in模式,還原,-d:還原時自動新建目錄,-v:顯示還原過程】 3、RPM包管理-yum在線管理 01.IP地址配置和網絡yum源 1).IP地址配置 setup【配置網絡】 vim /etc/sysconfig/network-script/ifcfg-eth0【進去vim編輯器模式,把ONBOOT="no"改爲ONBOOT="yes"】 service network restart【重啓網絡服務】 2).網絡yum源 vim /etc/yum.repos.d/CentOS-Base.repo【進入vim編輯器模式】 [base]---------容器名稱,必定要放在[]中 name-----------容器說明,能夠本身隨便寫 mirrorlist-----鏡像站點,這個能夠註釋掉 baseurl--------咱們的yum源服務器的地址.默認是CentOS官方的yum源服務器,是可使用的,若是你以爲慢能夠改爲你喜歡的yum源地址 enabled--------此容器是否生效,若是不寫或寫出enable=1都是生效,寫成enable=0就是不生效 gpgcheck-------若是是1是指RPM的數字證書生效,若是是0則不生效 gpgkey---------數字證書的公鑰文件保存位置.不用修改 02.yum命令 1.經常使用yum命令 1).查詢軟件包 yum list【查詢全部可用軟件包列表】 yum search 關鍵字【搜索服務器上全部和關鍵字相關的包】 2).安裝 yum -y install 包名【install:安裝,-y:自動回答yes】 3).升級 yum -y update 包名【update:升級,-y:自動回答yes==[建議別用,注意:yum -y update(升級所有,包括liunx內核也會被升級,用當機的可能,慎用!)]】 4).卸載 yum -y remove 包名【remove:卸載,-y:自動回答yes===[建議別用]】 5). 2.YUM軟件組管理命令 yum grouplist【列出全部可用的軟件組列表】 yum groupinstall 軟件組名【安裝指定軟件組,組名能夠由grouplist查詢出來,若是軟件包名有空格用""括起來】 yum groupremove 軟件組名【卸載指定軟件組】 03.光盤yum源搭建 1.光盤yum源搭建步驟 1).掛載光盤 mount /dev/cdrom /mnt/cdrom/ 2).讓網絡yum源文件失效 cd /etc/yum.repos.d【進入yum源目錄】 mv CentOS-Base.repo CentOS-Base.repo.bak【網絡yum源默認讀取.repo結尾的,如今把網絡yum源名字加上.bak,這樣網絡yum源失效,就會讓光盤yum源生效】 mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak mv CentOS-Vault.repo CentOS-Vault.repo.bak cp CentOS-Media.repo CentOS-Media.repo.bak【這個是光盤yum源,這裏備份一個】 3).修改光盤yum源文件 vim /etc/yum.repos.d/CentOS-Media.repo【進入vim編輯器模式,把內容更改爲以下,在操做(yum list)命令查詢是否成功,注意註釋#不要亂寫】 [c6-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom/ #地址爲你本身的光盤掛載地址--file:///mnt/cdrom/ # file:///media/CentOS/ # file:///media/cdrom/ # file:///media/cdrecorder/ #註釋這三個不存在的地址 gpgcheck=1 enabled=1 #把enable=0改爲enable=1,讓這個yum源配置文件生效 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 4、源碼包管理 1.源碼包和RPM包的區別 1).區別 安裝以前的區別:概念上的區別 安裝以後的區別:安裝位置不一樣 2).RPM包安裝位置 是安裝在默認位置中 RPM包默認安裝路徑 /etc/-------------配置文件安裝目錄 /usr/bin/---------可執行的命令安裝目錄 /usr/lib/---------程序所使用的函數庫保存位置 /usr/share/doc/---基本的軟件使用手冊保存位置 /usr/share/man/---幫助文件保存位置 3).安裝在指定位置當中,通常是/usr/local/軟件嗎/ 4).安裝位置不一樣帶來的影響 >RPM包安裝的服務可使用系統服務管理命令(service)來管理,例如RPM包安裝的apache的啓動方法是: /etc/rc.d/init.d/httpd start或service httpd start【開啓服務】 service httpd stop【中止服務】 >而源碼包安裝的服務則不能被服務管理命令管理,由於沒有安裝到默認路徑中,因此只能用絕對路徑進行服務的管理,如: /usr/local/apache2/bin/apachectl start 2.源碼包安裝過程 1).安裝準備 安裝C語言編譯器 下載源碼包http://mirror.bit.edu.cn/apache/httpd/ 2).安裝注意事項 源代碼保存位置:/usr/local/src/ 軟件安裝位置:/usr/local/ 如何肯定安裝過程報錯: 安裝過程中止 並出現error、warning或no的提示 3).源碼包安裝過程 下載源碼包 解壓縮下載的源碼包 進入解壓縮目錄 (./configure)軟件配置與檢測 定義須要的功能選項 檢測系統環境是否符合安裝要求(檢測系統是否安裝gcc[c語言編譯器]等等) 把定義好的功能選項和檢測系統環境的信息都寫入Makefile文件,用於後續的編輯 ./configure --prefix=/usr/local/apache2 make【編譯】 make clean【若是以上兩個步驟有錯誤,就執行清空臨時文件命令,沒有錯誤就不用執行】 make install【編譯安裝】 4).源碼包的卸載 不須要卸載命令,直接刪除安裝目錄便可.不會遺留任何垃圾文件 5、腳本安裝包與軟件包選擇 1.腳本安裝包 #腳本安裝包並非獨立的軟件包類型,常見安裝的是源碼包 #是認爲把安裝過程寫成了自動安裝的腳本,只要執行腳本,定義簡單的參數,就能夠完成安裝 #很是相似於Windows下軟件的安裝方式 2.Webmin的做用 #Webmin是一個基於Web的Linux系統管理界面.您就能夠經過圖形化的方式設置用戶賬號、apache、DNS、文件共享等服務. 3.Webmin安裝過程 #下載軟件http://sourceforge.net/projects/webadmin/files/webmin/ #解壓縮,並進入加壓縮目錄 #執行安裝腳本(./setup.sh) #卸載(/etc/webmin/uninstall.sh) #安裝完了注意先把防火牆關了(service iptables stop),否則外界不能訪問 6、用戶和用戶組管理 1.用戶配置文件 1).用戶信息文件/etc/passwd ①.用戶管理簡介 ◆因此越是對服務器安全性要求高的服務器,越是要創建合理的用戶權限等級制度和服務器操做規範 ◆在Linux中主要是經過用戶配置文件來查看和修改用戶信息 ②./etc/passwd 第一字段:用戶名稱 第二字段:密碼標誌 第三字段:UID(用戶ID)--0:超級用戶,1-499:系統用戶(僞用戶),500-65535:普通用戶 第四字段:GID(用戶初始組ID) 第五字段:用戶說明 第六字段:家目錄--普通用戶:/home/用戶名/,超級用戶:/root/ 第七字段:登陸以後的Shell ③.初始組和附加組 初始組:就是指用戶一登陸就馬上擁有這個用戶組的相關權限,每一個用戶的初始組只能有一個,通常就是和這個用戶的用戶名相同的組名做爲這個用戶的初始組. 附加組:指用戶能夠加入多個其餘的用戶組,並擁有這些組的權限,附加組能夠有多個. ④.Shell是什麼 Shell就是Linux的命令解釋器 在/etc/passwd當中,除了標準Shell是/bin/bash以外,還能夠寫如/sbin/nologin 2).影子文件/etc/shadow 1.字段的解釋 第一字段:用戶名 第二字段:加密密碼 加密算法升級爲SHA512散列加密算法 若是密碼位是"!!"或"*"表明沒有密碼,不能登陸 第三字段:密碼最後一次修改日期 使用1970年1月1日做爲標準時間,每過一天時間戳加1 第四字段:兩次密碼的修改間隔時間(和第三字段相比) 第五字段:密碼有效期(和第三字段相比) 第六字段:密碼修改到期前的警告天數(和第五字段相比) 第七字段:密碼過時後的寬限天數(和第五字段相比) 0:表明密碼過時後當即生效 -1:則表明密碼永久不會生效 第八字段:賬號失效時間 要用時間戳表示 第九字段:保留字段 2.時間戳換算 把時間戳換算爲如期 date -d "1970-01-01 16066 days" 把日期換算爲時間戳 echo $(($(date --date="2015/8/31" +%s)/86400+1)) 3).組信息文件/etc/gtoup和組密碼文件/etc/gshadow 1.組信息文件/etc/group 第一字段:組名 第二字段:組密碼標誌 第三字段:GID 第四字段:組中附加用戶 2.組密碼文件/etc/gshadow 第一字段:組名 第二字段:組密碼 第三字段:組管理員用戶名 第四字段:組中附加用戶 2.用戶管理相關文件 1).用戶的家目錄 普通用戶:/home/用戶名/,全部者和所屬組都是此用戶,權限是700 超級用戶:/root/,全部者和所屬組都是root用戶,權限是500 2).用戶的郵箱 /var/spool/mail/用戶名/ 3).用戶模板目錄 /etc/skel/ 3.用戶管理命令 1).用戶添加命令useradd ①.useradd命令格式 -u UID:手工指定用戶的UID號 -d 家目錄:手工指定用戶的家目錄 -c 用戶說明:手工指定用戶的說明 -g 組名:手工指定用戶的初始組 -G 組名:指定用戶的附加組 -s shell:手工指定用戶的登陸Shell,默認是/bin/bash 2).修改用戶密碼passwd ①.passwd命令格式 -S:查詢用戶密碼的密碼狀態.僅root用戶可用 -l:暫時鎖定用戶.僅root用戶可用 -u:解鎖用戶.僅用戶可用 --stdin:能夠經過管道符輸出的數據做爲用戶的密碼 3).修改用戶信息usermod,修改用戶密碼狀態chage ①.修改用戶信息usermod -u UID:修改用戶的UID號 -c 用戶說明:修改用戶的說明信息 -G 組名:修改用戶的附加組 -L:臨時鎖定用戶 -U:解鎖用戶鎖定 ②.修改用戶密碼狀態chage -l:列出用戶的詳細密碼狀態 -d 日期:修改密碼最後一次更改日期(shadow3字段) -m 天數:兩次密碼修改間隔(4字段) -M 天數:密碼有效期(5字段) -W 天數:密碼過時前警告天數(6字段) -I 天數:密碼事後寬限天數(7字段) -E 日期:賬號失效時間(8字段) 4).刪除用戶userdel,用戶切換命令su ①.刪除用戶userdel -r:刪除用戶的同時刪除用戶家目錄 ②.查看用戶ID id 用戶名 ③.切換用戶身份su(su - 用戶名) -:選項只使用"-"表明連帶用戶的環境變量一塊兒切換,["-"必須加上] -c 命令:僅執行一次命令,而不切換用戶身份 4.用戶組管理命令 1).添加用戶組 groupadd 組名【-g GID:指定組ID】 2).修改用戶組 groupmod 組名【-g GID:修改組ID,-n 新組名:修改組名】 3).刪除用戶組 groupdel 組名 4).把用戶添加入組或從組中刪除 gpasswd 選項 組名【-a 用戶名:把用戶加入組,-d 用戶名:把用戶從組中刪除】 7、權限管理 1.ACL權限 1).ACL權限簡介與開啓 ①. ②.查看分區ACL權限是否開啓 dumpe2fs -h /dev/sda3【dumpe2fs命令是查詢指定分區詳細文件系統信息的命令,-h:僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息】 ③.臨時開啓分區ACL權限 mount -o remount,acl /【從新掛載根分區,並掛載加入acl權限】 ④.永久開啓分區ACL權限 vim /etc/fstab【進入編輯模式,UUID=asdqq-qweqwe-qweqwe-qweqew-qweqwe2131123 / ext4 defaults,acl 1 1(加入acl)】 mount -o remount /【從新掛載文件系統,使修改生效】 2).查看與設定ACL權限 ①.查看ACl命令 getfacle 文件名【查看acl權限】 ②.設定ACL權限的命令(setfacl 選項 文件名) -m:設定ACl權限(u:用戶名:權限) -x:刪除指定的ACl權限 -b:刪除全部的ACl權限 -d:設定默認ACL權限 -k:刪除默認ACL權限 -R:遞歸設定ACL權限 3).最大有效權限與刪除ACL權限 ①.最大有效權限mask mask是用來指定最大有效權限的.若是我給用戶賦予了ACL權限,是須要和mask的權限"相與"才能獲得用戶的真正權限 setfacl -m m:rx 文件名【修改最大有效權限,設定mask權限爲r-x.使用"m:權限"格式】 ②.刪除ACL權限 setfacl -x u:用戶名 文件名【刪除指定用戶的ACl權限】 setfacl -x g:組名 文件名【刪除指定用戶組的ACl權限】 setfacl -b 文件名【會刪除文件的全部的ACL權限】 4).默認ACL權限和遞歸ACL權限 ①.遞歸ACL權限 遞歸是父目錄在設定ACL權限時,全部的子文件和子目錄也會擁有相同的ACl權限 setfacl -m u:用戶名:權限 -R 文件名 ②.默認ACL權限 默認ACl權限的做用是若是給父目錄設定了默認ACl權限,那麼父目錄中全部新建的子文件都會繼承父目錄的ACL權限. setfacl -m d:u:用戶名:權限 文件名 2.文件特殊權限 1).SetUID ①.SetUID的功能 >只有能夠執行的二進制程序才能設定SUID權限 >命令執行者要對該程序擁有x(執行)權限 >命令執行者在執行該程序時得到該程序文件屬主的身份(在執行程序的過程當中靈魂附體爲文件的屬主) >SetUID權限只在該程序執行過程當中有效,也就是說身份改變只在程序執行過程當中有效. >passwd命令擁有SetUID權限,因此普通能夠修改本身的密碼[ll /usr/bin/passwd] >cat命令沒有SetUID權限,因此普通用戶不能查看/etc/shadow文件[ll /bin/cat] ②.設定SetUID的方法 >4表明SUID[chmod 4755 文件名,chmod u+s 文件名] ③.取消SetUID的方法 >chmod 755 文件名 >chmod u-s 文件名 ④.危險的SetUID >關鍵目錄應嚴格控制寫權限.好比"/"、"/usr"等 >用戶的密碼設置要嚴格遵照密碼的三原則 >對系統中默認應該具備SetUID權限的文件作一列表,定時檢查有沒有這以外的文件被設置了SetUID權限. 2).SetGID ①.SetGID針對文件的做用 >只有可執行的二進制程序才能設置SGID權限 >命令執行者要對該程序擁有x(執行)權限 >命令執行在執行程序的時候,組身份升級爲該程序文件的屬組. >SetGID權限一樣只在該程序執行過程當中有效,也就是說組身份改變只在程序執行過程當中有效. >/usr/bin/locate是可執行二進制程序,能夠賦予SGID. >執行用戶lamp對/usr/bin/locate命令擁有執行權限. >執行/usr/bin/locate命令時,組身份會升級爲slocate組,而slocate組對/var/lib/mlocate/mlocate.db數據庫擁有r權限,因此普通用戶可使用locate命令,查詢mlocate.db數據庫. >命令結束,lamp用戶的組身份返回爲lamp組. ②.SetGID針對目錄的做用 >普通用戶必須對此目錄擁有r和x權限,才能進入此目錄. >普通用戶在此目錄中的有效組會變成此目錄的屬組. >若普通用戶對此目錄擁有w權限時,新建的文件默認屬組是這個目錄的屬組. ③.設定SetGID >2表明SGID[chmod 2755 文件名,chmod g+s 文件名] ④.取消SetGID >chmod 755 文件名 >chmod g-s 文件名 3).Sticky BIT ①.SBIT粘着位做用 >粘着位目錄只針對目錄有效 >普通用戶對該目錄擁有w和x權限,即普通用戶能夠在此目錄擁有寫入權限. >若是沒有粘着位,由於普通用戶擁有w權限,因此能夠刪除此目錄下全部文件,包括其餘用戶創建的文件.一但賦予了粘着位,除了root能夠刪除全部文件,普通用戶就算擁有w權限,也只能刪除本身創建的文件,可是不能刪除其餘用戶創建的文件. ②.設置與取消粘着位 >設置粘着位 chmod 1775 目錄名 chmod o+t 目錄名 >取消粘着位 chmod 777 目錄名 chmod o-t 目錄名 3.文件系統屬性chattr權限 1).chattr命令格式 chattr [+-=][選項] 文件或目錄名【+:增長權限,-:刪除權限,=:等於某權限】 選項:>i:若是對文件設置i屬性,那麼不容許對文件進行刪除、更名,也不能添加和修改數據;若是對目錄設置i屬性,那麼只能修改目錄下文件的數據,但不容許創建和刪除文件. >a:若是對文件設置a屬性,那麼只能在文件中增長數據,可是不能刪除也不能修改數據;若是對目錄設置a屬性,那麼只容許在目錄中創建和修改文件,可是不容許刪除. 2).查看文件系統屬性 lsattr 選項 文件名【-a:顯示全部文件和目錄,-d:若目標是目錄,僅列出目錄自己的屬性,而不是子文件的】 4.系統命令sudo權限 1).sudo權限 >root把原本只能超級用戶執行的命令賦予普通用戶執行. >sudo的操做對象是系統命令. 2).sudo使用 >visudo【實際修改的是/etc/sudoers文件】 root ALL=(ALL) ALL #用戶名 被管理主機的地址=(可以使用的身份) 受權命令(絕對路徑) %whell ALL=(ALL) ALL #%組名 被管理主機的地址=(可以使用的身份) 受權命令(絕對路徑) 3).受權sc用戶能夠重啓服務器 >visudo【進入vim編輯模式】 sc ALL=/sbin/shutdown -r now【例】 4).普通用戶執行sudo賦予的命令(不建議給普通用戶受權vim這樣的工具權限) sudo -l【查看可用的sudo命令】 sudo /sbin/shutdown -r now【普通用戶執行sudo賦予的命令】 8、文件系統管理 1.回顧分區和文件系統 1).分區類型 >主分區:總共最多隻能分四個 >擴展分區:只能有一個,也算作主分區的一種,也就是說主分區加擴展分區最多有四個.可是擴展分區不能存儲數據和格式化,必須再劃分紅邏輯分區才能使用. >邏輯分區:邏輯分區是在擴展分區中劃分的,若是是IDE硬盤,Linux最多支持59個邏輯分區,若是是SCSI硬盤Linux最多支持11個邏輯分區. 2).文件系統 >ext2:是ext文件系統的升級版本,RedHatLinux7.2版本之前的系統默認都是ext2文件系統.1993年發佈,最大支持16TB的分區和最大2TB的文件. >ext3:ext3文件系統是ext2文件系統的升級版本,最大的區別就是帶日誌功能,以在系統忽然中止時提升文件系統的可靠性.支持最大16TB的分區和最大2TB的文件. >ext4:它是ext3文件系統的升級版.ext4在性能、伸縮性和可靠性方面進行了大量改進.ext4的變化能夠說是翻天覆地的,好比向下兼容ext三、最大1EB文件系統和16TB文件、無線數量子目錄、extents連續數據塊概念、多塊分配、延遲分配、持久預分配、快速FSCK、日誌校驗、無日誌模式、在線碎片整理、inode加強、默認啓用barrier等. 2.文件系統經常使用命令 1).df命令、du命令、fsck命令和dump2fs命令 ①.文件系統查看命令df[df 選項 掛載點] -a:顯示全部的文件系統信息,包括特殊文件系統,如/proc、/sysfs -h:使用習慣單位顯示容量,如KB,MB或GB等. -T:顯示文件系統類型 -m:以MB爲單位顯示容量 -k:以KB爲單位顯示容量.默認就是以KB爲單位. ②.統計目錄或文件大小[du 選項 目錄或文件名] -a:顯示每一個子文件的磁盤佔用量.默認只統計子目錄的磁盤佔用量. -h:使用習慣單位顯示磁盤佔用量,如KB,MB或GB等. -s:統計總佔用量,而不列出子目錄和子文件的佔用量. ③.du命令和df命令的區別 >df命令是從文件系統考慮的,不光要考慮文件佔用的空間,還要統計被命令或程序佔用的空間(最多見的就是文件已經刪除,可是程序並無釋放空間) >du命令是面向文件的,只會計算文件或目錄佔用的空間. ④.文件系統修復命令fsck[fsck 選項 分區設備文件名] -a:不用顯示用戶提示,自動修復文件系統. -y:自動修復.和-a做用一致,不過有些文件系統只支持-y. ⑤.顯示磁盤狀態命令dumpe2fs[dumpe2fs 分區設備文件名] 2).掛載命令 ①.查詢與自動掛載 >mount -l【查詢系統中已經掛載的設備,-l:會顯示卷標名稱】 >mount -a【依據配置文件/etc/fstab的內容,自動掛載】 ②.掛載命令格式 >mount [選項] 設備文件名 掛載點【掛載命令】 -t 文件系統:加入文件系統類型來指定掛載的類型,能夠ext三、ext四、iso9660等文件系統. -L 卷標名:掛載指定卷標的分區,而不是安裝設備文件名掛載. -o 特殊選項:能夠指定掛載的額外選項. >atime/noatime:更新訪問時間/不更新訪問時間.訪問分區文件時,是否更新文件的訪問時間,默認爲更新. >async/sync:異步/同步,默認爲異步. >auto/noauto:自動/手動,mount -a命令執行時,是否會自動安裝/etc/fstab文件內容掛載,默認爲自動. >defaults:定義默認值,至關於rw,suid,dev,exec,auto,nouser,async這七個選項. >exec/noexec:[經常使用]執行/不執行,設定是否容許在文件系統中執行可執行文件,默認是exec容許. >remount:[經常使用]從新掛載已經掛載的文件系統,通常用於指定修改特殊權限. >rw/ro:讀寫/只讀,文件系統掛載時,是否具備讀寫權限,默認是rw. >suid/nosuid:具備/不具備SUID權限,設定文件系統是否具備SUID和SGID的權限,默認是具備. >user/nouser:容許/不容許普通用戶掛載,設定文件系統是否容許普通用戶掛載,默認是不容許,只有root能夠掛載分區. >usrquota:寫入表明文件系統支持用戶磁盤配額,默認不支持. >grpquota:寫入表明文件系統支持組磁盤配額,默認不支持. 3).掛載光盤與U盤 ①.掛載光盤 >mkdir /mnt/cdrom/【創建掛載點】 >mount -t iso9660 /dev/cdrom /mnt/cdrom/或mount /dev/sr0 /mnt/cdrom/【掛載光盤】 ②.卸載命令[umount 設備文件名或掛載點] umount /mnt/cdrom/ ③.掛載U盤 >fdisk -l【查看U盤設備文件名】 >mount -t vfat /dev/sdb1 /mnt/usb/【注意:Linux默認不支持NTFS文件系統】 ④.卸載U盤 >umount /mnt/usb/ 4).支持NTFS文件系統 ①.下載NTFS-3G插件 http://www.tuxera.com/community/open-source-ntfs-3g/ ②.安裝NTFS-3G tar -zxf ntfs-3g_ntfsprogs-2015.3.14.tgz【解壓】 cd ntfs-3g_ntfsprogs-2015.3.14【進入解壓目錄】 ./configure【編譯器準備,沒有指定安裝目錄,安裝到默認位置中】 make【編譯】 make install【編譯安裝】 ③.使用 mount -t ntfs-3g 分區設備文件名 掛載點【mount -t ntfs-3g /dev/sdb1 /mnt/usb/】 ④.卸載NTFS移動硬盤 >umount /mnt/usb/ 3.fdisk分區 1).fdisk命令分區過程 ①.添加新硬盤 ②.查看新硬盤 fdisk -l ③.使用fdisk命令分區 fdisk /dev/sdb >--------fdisk交互指令說明-------- >a:設置可引導標記 >b:編輯bsd磁盤標籤 >c:設置DOS操做系統兼容標記 >d:刪除一個分區 >l:顯示已知的文件系統類型.82爲Linux swap分區,83爲Linux分區 >m:顯示幫助菜單 >n:新建分區 >o:創建空白DOS分區表 >p:顯示分區列表 >q:不保存退出 >s:新建空白SUN磁盤標籤 >t:改變一個分區的系統ID >u:改變顯示記錄單位 >v:驗證分區表 >w:保存退出 >x:附加功能(僅專家) ④.從新讀取分區表信息 partprobe ⑤.格式化分區 mkfs -t ext4 /dev/sdb1 2).分區自動掛載與fstab文件修復 ①./etc/fstab文件[/dev/sdb1 /disk1 ext4 defaults 1 2] >第一字段:分區設備文件名或UUID(硬盤通用惟一識別碼) >第二字段:掛載點 >第三字段:文件系統名稱 >第四字段:掛載參數 >第五字段:指定分區是否被dump備份,0表明不備份,1表明天天備份,2表明不按期備份 >第六字段:指定分區是否被fsck檢測,0表明不檢測,其餘數字表明檢測的優先級,那麼固然1的優先級比2高 ②.mount -a【依據配置文件/etc/fstab的內容,自動掛載】 ③./etc/fstab文件修復 mount -o remount,rw / 4.分配swap分區 1).free命令 free【查看內存與swap分區使用情況】 >cached(緩存):是指把讀取出來的數據保存在內存當中,當再次讀取時,不用讀取硬盤而直接從內存當中讀取,加速了數據的讀取過程. >buffer(緩存):是指在寫入數據時,先把分散的寫入操做保存到內存當中,當達到必定程度再集中寫入硬盤,減小了磁盤碎片和硬盤的反覆尋道,加速了數據的寫入過程 2).新建swap分區 fdisk /dev/sdb【別忘記把分區ID改成82】 3).格式化 mkswap /dev/sdb6 4).加入swap分區 swapon /dev/sdb6【加入swap分區】 swapoff /dev/sdb6【取消swap分區】 5).swap分區開機自動掛載 vim /etc/fstab【進入vim命令模式】 /dev/sdb6 swap swap defaults 0 0 10、Shell基礎 1.Shell概述 1).shell是什麼 >shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶能夠用shell來啓動、掛起、中止甚至是編寫一些程序. >shell仍是一個功能至關強大的編程語言,易編寫,易調試,靈活性較強.shell是解釋執行的腳本語言,在shell中能夠直接調用Linux系統命令. 2).shell的分類 >bourne shell:從1979起Unix就開始使用bourne shell,bourne shell的主文件名爲sh. >bash:bash與sh兼容,如今使用的Linux就是使用bash做爲用戶的基本shell 3).Linux支持的Shell cat /etc/shells 2.Shell腳本的執行方式 1).echo輸出命令[echo 選項 輸出內容] -e:支持反斜線控制的字符轉換[echo -e "abc\n"] ------轉義字符-------- \\:輸出/自己 \a:輸出警告聲 \b:退格鍵,也就是向左刪除鍵 \c:取消輸出行末的換行符.和"-n"選項一致 \e:ESCAPE鍵 \f:換頁符 \n:換行符 \r:回車符 \t:製表符,也就是Tab鍵 \v:垂直製表符 \0nnn:按照八進制ASCII碼錶輸出字符.其中0爲數字零,nnn是三位八進制數 \xhh:按照十六進制ASCII碼輸出字符.其中hh是兩位十六進制數 2).第一個腳本 vim /tmp/helloworld.sh #!/bin/bash【shell腳本必須填寫這個標題】 3).腳本執行 >賦予執行權限,直接運行 chmod 755 /tmp/helloworld.sh【分配權限】 /tmp/helloworld.sh【執行】 >經過Bash調用執行腳本 bash /tmp/helloworld.sh【執行】 3.bash的基本功能 1).歷史命令與命令補全 ①.歷史命令 history 選項 歷史命令保存文件 -c:清空歷史命令 -w:把緩存中的歷史命令寫入歷史命令保存文件 >.bash_history【家目錄的經常使用命令保存文件】 >歷史命令默認會保存1000條,能夠在環境變量配置文件/etc/profile中進行修改 >歷史命令的調用 /使用上、下箭頭調用之前的歷史命令 /使用"!n"重複執行第n條歷史命令 /使用"!!"重複執行上一條命令 /使用"!字串"重複執行最後一條以該字串開頭的命令 ②.命令與文件補全 >在bash中,命令與文件補全是很是方便與經常使用的功能,咱們只要在輸入命令或文件時,按"Tab"鍵就會自動進行補全 2).命令別名與經常使用快捷鍵 ①.命令別名 alias 別名='原命令'【設定命令別名】 alias【查詢命令別名】 >命令執行時順序 1.第一順位執行用絕對路徑或相對路徑執行的命令 2.第二順位執行別名 3.第三順位執行bash的內部命令 4.第四順位執行按照$PATH環境變量定義的目錄查找順序找到的第一個命令 >讓別名永久生效 vim /root/.bashrc >刪除別名 unalias 別名 ②.bash經常使用快捷鍵 ctrl+a:把光標移動到命令行開頭.若是咱們輸入的命令過長,想要把光標移動到命令行開頭時使用 ctrl+e:把光標移動到命令行結尾 ctrl+c:強制終止當前的命令 ctrl+l:清屏,至關於clear命令 ctrl+u:刪除或剪切光標以前的命令.我輸入了一行很長的命令,不用使用退格鍵一個一個字符的刪除,使用這個快捷鍵會更加方便 ctrl+k:刪除或剪切光標以後的內容 ctrl+y:粘貼ctr+u或ctrl+k剪切的內容 ctrl+r:在歷史命令中搜索,按下ctrl+r以後,就會出現搜索界面,只要輸入搜索內容,就會從歷史命令中搜索 ctrl+d:退出當前終端 ctrl+z:暫停,並放入後臺.這個快捷鍵牽扯工做管理的內容,咱們在系統管理章節詳細介紹 ctrl+s:暫停屏幕輸出 ctrl+q:恢復屏幕輸出 3).輸入輸出重定向 ①.標準輸入輸出 | 設備 | 設備文件名 | 文件描述符 | 類型 | | 鍵盤 | /dev/stdin| 0 |標準輸入 | |顯示器|/dev/sdtout| 1 |標準輸出 | |顯示器|/dev/sdterr| 2 |標準錯誤輸出| ②.輸出重定向 ----------------------------------------------------------------------------------- | 類型 | 符號 | 做用 |------------------------------------------------------------------------------------ | | 命令>文件 |以覆蓋的方式,把命令的正確輸出輸出到指定的文件或設備當中 | 標準輸出重定向 |----------------------------------------------------------------- | | 命令>>文件 |以追加的方式,把命令的正確輸出輸出到指定的文件或設備當中 ------------------------------------------------------------------------------------- | | 錯誤名2>文件 |以覆蓋的方式,把命令的錯誤輸出輸出到指定的文件或設備當中 |標準錯誤輸出重定向|------------------------------------------------------------------- | |錯誤命令2>>文件|以追加的方式,把命令的錯誤輸出輸出到指定的文件或設備當中 ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- | |命令>文件2>&1 |以覆蓋的方式,把正確輸出和錯誤輸出都保存到同一個文件中 | |命令>>文件2>&1 | 以追加的方式,把正確輸出和錯誤輸出都保存到同一個文件中 |正確輸出和 |命令&>文件 | 以覆蓋的方式,把正確輸出和錯誤輸出都保存到同一個文件中 |錯誤輸出同時保存|命令&>>文件 |以追加的方式,把正確輸出和錯誤輸出都保存到同一個文件中 | |命令>>文件 2>>文件|把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中 ------------------------------------------ ③.輸入重定向 wc [選項] [文件名]【-c:統計字節數,-w:統計單詞數,-l:統計行數】 命令<文件【把文件做爲命令的輸入】 4).多命令順序執行與管道符 ①.多命令順序執行 多命令執行符 格式 做用 ; 命令1;命令2 多個命令順序執行,命令之間沒有任何邏輯聯繫 && 命令1&&命令2 邏輯與,當命令1正確執行,則命令2纔會執行,當命令1執行不正確,則命令2不會執行 || 命令1||命令2 邏輯或,當命令1執行不正確,則命令2纔會執行,當命令1執行正確,則命令2不會執行 >dd if=輸入文件 of=輸出文件 bs=字節數 count=個數 if:指定源文件或源設備 of:指定目標文件或目標設備 bs:指定一次輸入/輸出多少字節,即把這些字節看作一個數據塊 count:指定輸入/輸出多少個數據塊 ②.管道符 命令1 | 命令2【命令1的正確輸出做爲命令2的操做對象】 >grep [選項] "搜索內容" -i:忽略大小寫 -n:輸出行號 -v:反向查找 --color=auto:搜索出的關鍵字用顏色顯示 5).通配符與其餘特殊符號 ①.通配符 ?:匹配一個任意字符 *:匹配0個或多個任意字符,也就是能夠匹配任何內容 []:匹配中括號中任意一個字符.例如:[abc]表明必定匹配一個字符,或者是a,或者是b,或者是c [-]:匹配中括號中任意一個字符,-表明一個範圍.例如:[a-z]表明匹配一個小寫字母 [^]:邏輯非,表示匹配不是中括號內的一個字符.例如:[^0-9]表明匹配一個不是數字的字符 ②.bash中其餘特殊符號 '':單引號,在單引號中全部的特殊符號,如"$"和"`"(反引號)都沒有特殊含義. "":雙引號,在雙引號中特殊符號都沒有特殊含義,可是"$"、"`"和"\"是例外,擁有"調用變量的值"、"引用命令"和"轉義符"的特殊含義 ``:反引號,反引號括起來的內容是系統命令,在bash中會先執行它.和$()做用同樣,不過推薦使用$(),由於反引號很是容易看錯. $():和反引號做用同樣,用來引用系統命令 #:在shell腳本中,#開頭的行表明註釋. $:用於調用變量的值,如須要調用變量name的值時,須要用$name的方式獲得變量的值. \:轉義符,跟在\以後的特殊符號將失去特殊含義,變爲普通字符.如\$將輸出"$"符號,而不當作是變量引用. 4.bash的變量 1).用戶自定義變量 >變量定義[name='hello world'] >變量疊加[name="$name"123456] >變量調用[echo $name] >變量查看[set] >變量刪除[unset name] 2).環境變量 ①.環境變量是什麼 >用戶自定義變量只在當前的shell中生效,而環境變量會在當前shell和這個shell的全部子shell當中生效.若是把環境變量寫入相應的配置文件,那麼這個環境變量就會在全部的shell中生效. ②.設置環境變量 export 變量名=變量值【申明變量】 env【查詢變量】 unset 變量名【刪除變量】 ③.系統常見環境變量 >PATH:系統查找命令的路徑 echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root:bin >PATH:"$PATH":/root/bin【PATH變量疊加】 >PS1定義系統提示符的變量【PS1='[\u@\h \w]\$ '】 \d:顯示日期,格式爲"星期 月 日" \h:顯示簡寫主機名.如默認主機名"localhost" \t:顯示24小時制時間,格式爲"HH:MM:SS" \T:顯示12小時制時間,格式爲"HH:MM:SS" \A:顯示24小時制時間,格式爲"HH:MM" \u:顯示當前用戶名 \w:顯示當前所在目錄的完整名稱 \W:顯示當前所在目錄的最後一個目錄 \#:執行的第幾個命令 \$:提示符.若是是root用戶會顯示提示符爲"#",若是是普通用戶會顯示提示符爲"$" 3).位置參數變量 $n:n爲數字,$0表明命令自己,$1-$9表明第一到第九個參數,十以上的參數須要用大括號包含,如${10} $*:這個變量表明命令行全部的參數,$*把全部的參數當作一個總體 $@:這個變量也表明命令行中全部的參數,不過$@把每一個參數區分對待 $#:這個變量表明命令行中全部參數的個數 4).預約義變量 ①.預約義變量 $?:最後一次執行的命令的返回狀態.若是這個變量的值爲0,證實上一個命令正確執行;若是這個變量的值爲非0(具體是哪一個數,由命令本身來決定),則證實上一個命令執行不正確了.【經常使用】 $$:當前進程的進程號(PID) $!:後臺運行的最後一個進程的進程號(PID) ②.接收鍵盤輸入 read [選項] [變量名]【read -s -p "請輸入動態口令: " kouling echo "您輸入的口令是: $koulin"】 -p "提示信息":在等待read輸入時,輸出提示信息 -t 秒數:read命令會一直等待用戶輸入,使用此選項能夠指定等待時間 -n 字符數:read命令只接受指定的字符數,就會執行 -s:隱藏輸入的數據,適用於機密信息的輸入 5.bash的運算符 1).數值運算與運算符 ①.declare [+/-] [選項] 變量名【declare聲明變量類型】 -:給變量設定類型屬性 +:取消變量的類型屬性 -i:將變量聲明爲整數型(integer) -x:將變量聲明爲環境變量 -p:顯示指定變量的被聲明的類型 ②.數值運算-方法 declare -i cc=$aa+$bb dd=$(expr $aa+$bb)【expr或let數值運算工具】 ff=$(($aa+$bb))【"$((運算式))"或"$[運算式]"】 ③.運算符 優先級| 運算符 |說明 -------------------------------------------------------- 13 -,+ 單目負,單目正 12 !,~ 邏輯非,按位取反或補碼 11 *,/,% 乘,除,取模 10 +,- 加,減 9 <<,>> 按位左移,按位右移 8 < =,> =,<,> 小於或等於,大於或等於,小於,大於 7 ==,!= 等於,不等於 6 & 按位與 5 ^ 按位異或 4 | 按位或 3 && 邏輯與 2 || 邏輯或 1 =,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>= 賦值,運算且賦值 2).變量測試與內容替換 變量置換方式 | 變量y沒有設值 | 變量y爲空值 | 變量y設值 ---------------------------------------------------------------------------------- x=${y-新值} x=新值 x爲空 x=$y x=${y:-新值} x=新值 x=新值 x=$y x=${y+新值} x爲空 x=新值 x=新值 x=${y:+新值} x爲空 x爲空 x=新值 x=${y=新值} x=新值,y=新值 x爲空,y值不變 x=$y,y值不變 x=${y:=新值} x=新值,y=新值 x=新值,y=新值 x=$y,y值不變 x=${y?新值} 新值輸出到標準錯誤輸出(就是屏幕) x爲空 x=$y x=${y:?新值} 新值輸出到標準錯誤輸出 新值輸出到標準錯誤輸出 x=$y 6.環境遍歷配置文件 1).環境變量配置文件簡介 ①.source命令 source 配置文件【強制配置文件生效】 . 配置文件【強制配置文件生效】 ②.環境變量配置文件簡介 >環境變量配置文件中主要是定義對系統的操做環境生效的系統默認環境變量,好比PATH,HISTSIZE,PS1,HOSTNAME等默認環境變量. >/etc/profile >/etc/profile.d/*.sh >~/.bash_profile >~/.bashrc >/etc/bashrc 2).環境變量配置文件做用 ①./etc/profile的做用 >USER變量 >LOGNAME變量 >MAIL變量 >PATH變量 >HOSTNAME變量 >HISTSIZE變量 >umask >調用/etc/profile.d/*.sh文件 3).其它配置文件和登陸信息 ①.註銷時生效的環境變量配置文件 ~/.bash_logout ②.其餘配置文件 ~/.bash_history ③.shell登陸信息 >本地終端歡迎信息:/etc/issue \d:顯示當前系統日期 \s:顯示操做系統名稱 \l:顯示登陸的終端號,這個比較經常使用 \m:顯示硬件體系結構,如i286,i686等 \n:顯示主機名 \o:顯示域名 \r:顯示內核版本 \t:顯示當前系統時間 \u:顯示當前登陸用戶的序列號 >遠程終端歡迎信息:/etc/issue.net 轉義符在/etc/issue.net文件中不能使用 是否顯示此歡迎信息,由ssh的配置文件/etc/ssh/sshd_config決定,加入"Banner /etc/issue.net"行才能顯示(記得重啓SSH服務) >登陸後歡迎信息:/etc/motd 無論是本地登陸,仍是遠程登陸,均可以顯示此歡迎信息 十一.講shell編程 1.基礎正則表達式 1).正則表達式與通配符 >正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配.grep,awk,sed等命令能夠支持正則表達式. >通配符用來匹配符合條件的文件名,通配符是徹底匹配.ls,find,cp這些命令不支持正則表達式,因此只能使用shell本身的通配符來進行匹配了. 2).基礎正則表達式 *:前一個字符匹配0次或任意屢次 .:匹配除了換行符外任意一個字符 ^:匹配行首.例如:^hello會匹配以hello開頭的行 $:匹配行尾.例如:hello&會匹配以hello結尾的行 []:匹配中括號中指定的任意一個字符,只匹配一個字符.例如:[aoeiu]匹配任意一個元音字母,[0-9]匹配任意一位數字,[a-z][0-9]匹配小寫字和一位數字結構的兩位字符. [^]:匹配除中括號的字符之外的任意一個字符.例如:[^0-9]匹配任意一位非數字字符,[^a-z]表示任意一位非小寫字母. \:轉義符.用於取消將特殊符號的含義取消. \{n\}:表示其前面的字符剛好出現n次.例如:[0-9]\{4\}匹配4位數字,[1][3-8][0-9]\{9\}匹配手機號碼. \{n,\}:表示其前面的字符出現不小於n次.例如:[0-9]\{2,\}表示兩位及以上的數字. \{n,m\}:表示其前面的字符至少出現n次,最多出現m次.例如:[a-z]\{6,8\}匹配6到8位的小寫字母. 2.1).例子 grep "a*" aaa.txt【匹配全部內容,包括空白行】 grep "aa*" aaa.txt【匹配至少包含有一個a的行】 grep "aaa*" aaa.txt【匹配最少包含兩個連續a的字符串】 grep "aaaaa*" aaa.txt【則會匹配最少包含四個連續a的字符串】 grep "s..d" aaa.txt【"s..d"會匹配在s和d這兩個字母之間必定有兩個字符的單詞】 grep "s.*d" aaa.txt【匹配在s和d字母之間有任意字符】 grep ".*" aaa.txt【匹配全部內容】 grep "^M" aaa.txt【匹配以大寫"M"開頭的行】 grep "n$" aaa.txt【匹配以小寫"n"結尾的行】 grep -n "^$" aaa.txt【會匹配空白行】 grep "s[ao]id" aaa.txt【匹配s和i字母中,要麼是a,要麼是o】 grep "[0-9]" aaa.txt【匹配任意一個數字】 grep "^[a-z]" aaa.txt【匹配用小寫字母開頭的行】 grep "^[^a-z]" aaa.txt【匹配不用小寫字母開頭的行】 grep "^[^a-zA-Z]" aaa.txt【匹配不用字母開頭的行】 grep "\.$" aaa.txt【匹配使用"."結尾的行】 grep "a\{3\}" aaa.txt【匹配a字母連續出現三次的字符串】 grep "[0-9]\{3\}" aaa.txt【匹配包含連續的三個數字的字符串】 grep "^[0-9]\{3,\}[a-z]" aaa.txt【匹配最少用連續三個數字開頭的行】 grep "sa\{1,3\}i" aaa.txt【匹配在字母s和字母i之間有最少一個a,最多三個a】 2.字符截取命令 1).cut字段提取命令 cut [選項] 文件名【-f 列號:提取第幾列,-d 分隔符:按照指定分隔符分割列】 2).printf命令 printf '輸出類型輸出格式' 輸出內容 輸出類型: %ns:輸出字符串.n是數字指代輸出幾個字符 %ni:輸出整數.n是數字指代輸出幾個數字 %m.nf:位數和小數位數.如%8.2f表明共輸出8位數,其中2位是小數,6位是整數 輸出格式: \a:輸出警告聲音 \b:輸出退格鍵,也就是Backpace鍵 \f:清除屏幕 \n:換行 \r:回車,也就是Enter鍵 \t:水平輸出退格鍵,也就是Tab鍵 \v:垂直輸出退格鍵,也就是Tab鍵 3).awk命令---【具體用法建議百度】 ①.awk '條件1{動做1} 條件2{動做2}...' 文件名【awk '{printf $2 "\t" $6"\n"}' temp.txt】 條件: 通常使用關係表達式做爲條件 x>10 判斷變量x是否大於10 x>=10 大於等於 x<=10 小於等於 動做: 格式化輸出 流程控制語句 ②.awk 'BEGIN{printf "hello world\n"}{printf $2 "\t" $6"\n"}' temp.txt【BEGIN優先執行一段輸出】 ③.awk 'END{printf "hello world\n"}{printf $2 "\t" $6"\n"}' temp.txt【全部數據處理完以後,再執行end命令的輸出】 ④.cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"}{printf $2 "\t" $6"\n"}'【FS內置變量,指定分隔符】 ⑤.cat temp.txt | grep -v name | awk '$6>=87 {printf $2 "\n"}'【關係運算符】 4).sed命令 ①.sed命令 sed是一種幾乎包括在全部UNIX平臺(包括Linux)的輕量級流編輯器.sed主要是用來將數據進行選取,替換,刪除,新增的命令. ②.sed [選項] '[動做]' 文件名【sed -n '2p' temp.txt】 選項: -n:通常sed命令會把全部數據都輸出到屏幕,若是加入此選擇,則只會把通過sed命令處理的行輸出到屏幕. -e:容許對輸入數據應用多條sed命令編輯. -i:用sed的修改結果直接修改讀取數據的文件,而不是由屏幕輸出. 動做: a:追加,在當前行後添加一行或多行.添加多行時,除最後一行外,每行末尾須要用"\"表明數據未完結 c:行替換,用c後面的字符串替換原數據行,替換多行時,除最後一行外,每行末尾須要用"\"表明數據未完結 i:插入,在當期行前插入一行或多行.插入多行時,除最後一行外,每行末尾須要用"\"表明數據未完結 d:刪除,刪除指定的行 p:打印,輸出指定的行 s:字串替換,用一個字符串替換另一個字符串.格式爲"行範圍s/舊字串/新字串/g"(和vim中的替換格式相似) 3.字符處理命令 1).排序命令sort sort [選項] 文件名 -f:忽略大小寫 -n:以數值型進行排序,默認使用字符串型排序 -r:反向排序 -t:指定分隔符,默認是分隔符是製表符 -k n[,m]:按照指定的字段範圍排序.從第n字段開始,m字段結束(默認到行尾) 2).統計命令wc wc [選項] 文件名 -l:只統計行數 -w:只統計單詞數 -m:只統計字符數 4.條件判斷 1).按照文件類型進行判斷【[ -f /tmp/temp.txt ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ -b 文件 |判斷該文件是否存在,而且是否爲塊設備文件(是塊設備文件爲真) -c 文件 |判斷該文件是否存在,而且是否爲字符設備文件(是字符設備文件爲真) -d 文件 |判斷該文件是否存在,而且是否爲目錄文件(是目錄爲真) -e 文件 |判斷該文件是否存在(存在爲真) -f 文件 |判斷該文件是否存在,而且是否爲普通文件(是普通文件爲真) -L 文件 |判斷該文件是否存在,而且是否爲符號連接文件(是符號連接文件爲真) -p 文件 |判斷該文件是否存在,而且是否爲管道文件(是管道文件爲真) -s 文件 |判斷該文件是否存在,而且是否爲非空(非空爲真) -S 文件 |判斷該文件是否存在,而且是否爲套接字文件(是套接字文件爲真 ) 2).按照文件權限進行判斷【[ -r /tmp/temp.txt ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ -r 文件 |判斷該文件是否存在,而且是否該文件擁有讀權限(有讀權限爲真) -w 文件 |判斷該文件是否存在,而且是否該文件擁有寫權限(有寫權限爲真) -x 文件 |判斷該文件是否存在,而且是否該文件擁有執行權限(有執行權限爲真) -u 文件 |判斷該文件是否存在,而且是否該文件擁有SUID權限(有SUID權限爲真) -g 文件 |判斷該文件是否存在,而且是否該文件擁有SGID權限(有SGID權限爲真) -k 文件 |判斷該文件是否存在,而且是否該文件擁有SBit權限(有SBit權限爲真) 3).兩個文件之間進行比較【[ /tmp/temp.txt -nt /tmp/temp.txt ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ 文件1 -nt 文件2 |判斷文件1的修改時間是否比文件2的新(若是新則爲真) 文件1 -ot 文件2 |判斷文件1的修改時間是否比文件2的舊(若是舊則爲真) 文件1 -ef 文件2 |判斷文件1是否和文件2的inode號一致,能夠理解爲兩個文件是否爲同一個文件.這個判斷用於判斷硬連接是很好的方法. 4).兩個整數之間比較【[ 22 -eq 23 ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ 整數1 -eq 整數2 |判斷整數1是否和整數2相等(相等爲真) 整數1 -no 整數2 |判斷整數1是否和整數2不相等(不相等爲真) 整數1 -gt 整數2 |判斷整數1是否大於整數2(大於爲真) 整數1 -it 整數2 |判斷整數1是否小於整數2(小於爲真) 整數1 -ge 整數2 |判斷整數1是否大於等於整數2(大於等於爲真) 整數1 -le 整數2 |判斷整數1是否小於等於整數2(小於等於爲真) 5).字符串的判斷【[ -z temp ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ -z 字符串 |判斷字符串是否爲空(爲空返回真) -n 字符串 |判斷字符串是否爲非空(非空返回真) 字串1 == 字串2 |判斷字符串1是否和字符串2相等(相等返回真) 字串1 != 字串2 |判斷字符串1是否和字符串2不相等(不相等返回真) 6).多重條件判斷【[ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"】 測試選項 | 做用 ------------------------------------------------------------------------ 判斷1 -a 判斷2 |邏輯與,判斷1和判斷2都成立,最終的結果才爲真 判斷1 -o 判斷2 |邏輯或,判斷1和判斷2有一個成立,最終的結果就爲真 ! 判斷 |邏輯非,使原始的判斷式取反 5.流程控制 1).if語句 ①.單分支if條件語句 if [ 條件判斷式 ];then 程序 fi 或者 if [ 條件判斷式 ] then 程序 fi ----------------------------------- 單分支條件語句須要注意幾個點 >if語句使用fi結尾,和通常語言使用大括號結尾不一樣 >[ 條件判斷式 ]就是使用test命令判斷,因此中括號和條件判斷式之間必須有空格. >then後面跟符合條件以後執行的程序,能夠放在[]以後,用";"分割.也能夠換行寫入,就不須要";"了. ②.雙分支if條件語句 if [ 條件判斷式 ] then 條件成立時,執行的程序 else 條件不成立時,執行的另外一個程序 fi ③.多分支if條件語句 if [ 條件判斷式1 ] then 條件成立時,執行的程序 exit 1 elif [ 條件判斷式2 ] then 條件成立時,執行的程序 else 條件不成立時,執行的另外一個程序 fi 2).case語句 ①.多分支case條件語句 >case語句和if...elif...slse語句同樣都是多分支條件語句,不過和if多分支條件語句不一樣的是,case語句只能判斷一種條件關係,而if語句能夠判斷多種條件關係. case $變量名 in "值1") 若是變量的值等於值1,則執行程序1 ;; "值2") 若是變量的值等於值2,則執行程序2 ;; *) 若是變量的值都不是以上的值,則執行此程序 ;; esac 3).for循環 ①.語法一 for 變量 in 值1 值2 值3 ... do 程序:echo "hello" done ②.語法二 for (( 初始值;循環控制條件;變量變化)) do 程序 done 4).while循環 ①.while循環 >while循環是不定循環,也稱做條件循環.只要條件判斷式成立,循環就會一直繼續,直到條件判斷式不成立,循環纔會中止.這就和for的固定循環不太同樣了. 格式: while [ 條件判斷式 ] do 程序 done ②.until循環 >until循環,和while循環相反,until循環時只要條件判斷式不成立則進行循環,並執行循環程序.一旦循環條件成立,則終止循環. 格式: until [ 條件判斷式 ] do 程序 done 12、Linux服務管理 1.服務簡介與分類 1).服務的分類 >RPM包默認安裝的服務 獨立的服務 基於xinetd服務 >源碼包安裝的服務 2).查詢已安裝的服務 >RPM包安裝的服務 chkconfig --list【查看服務自動啓狀態,能夠看到全部RPM包安裝的服務】 >源碼包安裝的服務 查看服務安裝位置,通常是/usr/local/下 2.RPM包安裝服務的管理 1).獨立服務的管理 ①.RPM包安裝服務的位置 >RPM安裝服務和源碼包安裝服務的區別就是安裝位置的不一樣 源碼包安裝在指定位置,通常是/usr/local/ RPM包安裝在默認位置中 /etc/init.d/:啓動腳本位置 /etc/sysconfig/:初始化環境配置文件位置 /etc/:配置文件位置 /etc/xinetd.conf:xinetd配置文件 /etc/xinetd.d/:基於xinetd服務的啓動腳本 /var/lib/:服務產生的數據放在這裏 /var/log/:日誌 ②.獨立服務的啓動 >/etc/init.d 獨立服務名 start|stop|status|restart >service 獨立服務名 start|stop|status|restart ③.獨立服務的自動啓動 >chkconfig [--level 運行級別] [獨立服務名] [on|off]【chkconfig --level 2345 httpd on(Apache服務自啓動)】 >修改/etc/rc.d/rc.local文件【推薦】 >使用ntsysv命令管理自啓動 2).基於xinetd服務的管理 ①.安裝xinetd與telnet yum -y install xinetd yum -y install telnet-service ②.xinetd服務的啓動 vim /etc/xinetd.d/telnet ③.xinetd服務自啓動 chkconfig telnet on 3.源碼包安裝服務的管理 1).源碼包安裝服務的啓動 ①.使用絕對路徑,調用啓動腳原本啓動.不一樣的源碼包的啓動腳本不一樣.能夠查看源碼包的安裝說明,查看啓動腳本的方法. /usr/local/apache2/bin/apachectl start|stop 2).源碼包服務的自啓動 vim /etc/rc.d/rc.local 加入 /usr/local/apache2/bin/apachect1 start 3).讓源碼包服務被服務管理命令識別 ①.讓源碼包的apache服務能被service命令管理啓動 ln -s /usr/local/apache2/bin/apachect1 /etc/init.d/apache ②.讓源碼包的apache服務能被chkconfig與ntsysv命令管理自啓動 vim /etc/init.d/apache #chkconfig:35 86 76 #指定httpd腳本能夠被chkconfig命令管理.格式是:chkconfig: 運行級別 啓動順序 關閉順序 #description: source package apache #說明,內容隨意 chkconfig --add apache【把源碼包apache加入chkconfig命令】 12、Linux系統管理 1.進程管理 1).進程查看 ①.查看系統中全部進程 ps aux【查看系統中全部進程,使用BSD操做系統格式】 ps -le【查看系統中全部進程,使用Linux標準命令格式】 >USER:該進程是由哪一個用戶產生的. >PID:進程的ID號. >%CPU:該進程佔用CPU資源的百分比,佔用越高,進程越耗費資源. >%MEM:該進程佔用物理內存的百分比,佔用越高,進程越耗費資源. >VSZ:該進程佔用虛擬內存的大小,單位KB. >RSS:該進程佔用實際物理內存的大小,單位KB. >TTY:該進程是在哪一個終端中運行的.其中tty1-tty7表明本地控制檯終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端.pts/0-255表明虛擬終端. >STAT:進程狀態.常見的狀態有,R:運行,S:睡眠,T:中止狀態,s:包含子進程,+:位於後臺 >START:該進程的啓動時間 >TIME:該進程佔用CPU的運算時間,注意不是系統時間 >COMMAND:產生此進程的命令名 ②.查看系統健康狀態 top [選項]【-d 秒數:指定top命令每隔幾秒更新.默認是3秒】 在top命令的交互模式當中能夠執行的命令: ?或h:顯示交互模式的幫助 P:以CPU使用率排序,默認就是此項 M:之內存的使用率排序 N:以PID排序 q:退出top ------------說明top命令後的信息---------------------- 第一行信息爲任務隊列信息 12:25:12-----系統當前時間 up 1 day, 13:22-----系統的運行時間,本機已經運行1天13小時22分鐘 2 users-----當前登陸了兩個用戶 load average: 0.00, 0.00, 0.00-----【重點】系統在以前1分鐘,5分鐘,15分鐘的平均負載.通常認爲小於1時,負載較小.若是大於1,系統已經超出負荷. 第二行爲進程信息 Tasks: 84 total-----系統中的進程總數 1 running-----正在運行的進程數 94 sleeping-----睡眠的進程 0 stopped-----正在中止的進程 0 zombie-----殭屍進程.若是不是0,須要手工檢查殭屍進程 第三行爲CPU信息 Cpu(s): 0.0%us-----用戶模式佔用的CPU百分比 0.1%sy-----系統模式佔用的CPU百分比 0.0%ni-----改變過優先級的用戶進程佔用的CPU百分比 99.7%id-----【重點】空閒CPU的CPU百分比 0.1%wa-----等待輸入/輸出的進程的佔用CPU百分比. 0.0%hi-----硬中斷請求服務佔用的CPU百分比. 0.1%si-----軟中斷請求服務佔用的CPU百分比. 0.0%st-----st(Steal time)虛擬時間百分比.就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比. 第四行爲物理內存信息 Mem: 1030532k total-----物理內存的總量,單位KB 213760k used-----已經使用的物理內存數量 816772k free-----【重點】空閒的物理內存數量,咱們使用的是虛擬機,總共只分配了1024MB內存,因此只有816MB的空閒內存了 22836k buffers-----做爲緩衝的內存數量 第五行爲交換分區(swap)信息 Swap: 1048568k total-----交換分區(虛擬內存)的總大小 0k used-----已經使用的交互分區的大小 1048568k free-----空閒交換分區的大小 118624k cached-----做爲緩存的交互分區的大小 ③.查看進程樹 pstree [選項]【-p:顯示進程的PID,-u:顯示進程的所屬用戶】 2).進程管理 ①.kill命令 kill -l【查看可用的進程信號】 -----------經常使用信號----------------------- 1:SIGHUP:該信號讓進程當即關閉,而後從新讀取配置文件以後重啓. 2:SIGINT:程序終止信號,用於終止前臺進程.至關於輸出ctrl+c快捷鍵. 8:SIGFPE:在發生致命的算術運算錯誤時發出.不只包括浮點運算錯誤,還包括溢出及除數爲0等其餘全部的算術的錯誤. 9:SIGKILL:用來當即結束程序的運行.本信號不能被阻塞、處理和忽略.通常用於強制終止進程. 14:SIGALRM:時鐘定時信號,計算的是實際的時間或時鐘時間.alarm函數使用該信號. 15:SIGTERM:正常結束進程的信號,kill命令的默認信號.有時若是進程已經發生問題,這個信號是沒法正常終止進程的,咱們纔會嘗試SIGKILL信號,也就是信號9. 18:SIGCONT:該信號可讓暫停的進程恢復執行,本信號不能被阻斷. 19:SIGSTOP:該信號能夠暫停前臺進程,至關於輸入ctrl+z快捷鍵.本信號不能被阻斷. ②.killall命令 killall [選項][信號] 進程名【按照進程名殺死進程】 -i:交互式,詢問是否要殺死某個進程 -I:忽略進程名的大小寫 ③.pkill命令 pkill [選項][信號] 進程名【按照進程名終止進程】 -t 終端號:按照終端號踢出用戶 ---------按照終端號踢出用戶-------------------- w【使用w命令查詢本機已經登陸的用戶】 pkill -9 -t pts/0【強制殺死從pts/0虛擬終端登陸的進程,注意:-9和-t的位置不能換,不然踢出失敗】 ④.終止進程 kill -15 [進程的PID] 2.工做管理 1).把進程放入後臺 >tar -zcf etc.tar.gz /etc &【在命令後面加上"&"符號,後臺運行】 >top【在top命令執行的過程當中,按下ctrl+z快捷鍵,後臺暫停】 2).查看後臺的工做 jobs -l【-l:顯示工做的PID】 注:"+"號表明最近一個放入後臺的工做,也是工做恢復時,默認恢復的工做."-"號表明倒數第二個放入後臺的工做. 3).將後臺暫停的工做恢復到前臺執行 fg %工做號【%工做號:"%"號能夠省略,可是注意工做號和PID的區別】 4).將後臺暫停的工做恢復到後臺執行 bg %工做號【注:後臺恢復執行的命令,是不能和前臺有交互的,不然不能恢復到後臺執行(top、vim這些命令是不能在後臺運行的)】 3.系統資源查看 1).vmstat命令監控系統資源 vmstat [刷新延時 刷新次數]【vmstat 1 3:監聽3次個人系統資源,每次間隔1秒】 2).dmesg開機時內核檢測信息 dmesg | grep CPU 3).free命令查看內存使用狀態 free [-b|-k|-m|-g] -b:以字節爲單位顯示 -k:以KB爲單位顯示,默認就是以KB爲單位顯示 -m:以MB爲單位顯示 -g:以GB爲單位顯示 4).查看CPU信息 cat /proc/cpuinfo 5).uptime命令 uptime【顯示系統的啓動時間和平均負載,也就是top命令的第一行.w命令也能夠看到這個數據】 6).查看系統與內核相關信息 uname [選項]【-a:查看系統全部相關信息,-r:查看內核版本,-s:查看內核名稱】 file /bin/ls【判斷當前系統的位數】 lsb_release -a【查詢當前Linux系統的發行版本】 7).列出進程打開或使用的文件信息 lsof [選項]【列出進程調用或打開的文件的信息】 -c 字符串:只列出以字符串開頭的進程打開的文件 -u 用戶名:只列出某個用戶的進程打開的文件 -p pid:列出某個PID進程打開的文件 4.系統定時任務 1).crond服務管理與訪問控制 service crond restart【】 chkconfig crond on【】 2).用戶的crontab設置 crontab [選項]【-e:編輯crontab定時任務,-l:查詢crontab任務,-r:刪除當前用戶全部的crontab任務】 ----------格式---------------------------------------------------------------------------------------------------------- * * * * * 執行的任務 -----------「*」的含義-------------------------------------------------------------------------------------------------- 第一個"*":一小時當中的第幾分鐘:0-59 第二個"*":一天當中的第幾小時:0-23 第三個"*":一個月當中的第幾天:1-31 第四個"*":一年當中的第幾月:1-12 第五個"*":一週當中的星期幾:0-7(0和7都表明星期日) ----------------特殊符號說明--------------------------------------------------------------------------------------------- *:表明任什麼時候間.好比第一個"*"就表明一小時中每分鐘都執行一次的意思. ,:表明不連續的時間.好比"0 8,12,16 * * * 命令",就表明在天天的8點0分,12點0分,16點0分都執行一次命令. -:表明連續的時間範圍.好比"0 5 * * 1-6 命令",表明在週一到週六的凌晨5點0分執行命令 */n:表明每隔多久執行一次.好比"*/10 * * * * 命令",表明每隔10分鐘就執行一遍命令 --------------例子----------------------------------------------------------------------------------------------------------- 45 22 * * * 命令-----在22點45分執行命令 0 17 * * 1 命令-----每週一的17點0分執行命令 0 5 1,15 * * 命令-----每個月1號和15號的凌晨5點0分執行命令 40 4 * * 1-5 命令-----每週一到週五的凌晨4點40分執行命令 */10 4 * * * 命令-----天天的凌晨4點,每隔10分鐘執行一次命令 0 0 1,15 * 1 命令-----每個月1號和15號,每週一的0點0分都會執行命令.注意:星期幾和幾號最好不要同時出現,由於它們定義的都是天.很是容易讓管理員混亂. 3).定時操做 crontab -e【清空定時任務】 crontab -r【查看定時任務】 十3、日誌管理 1.日誌管理簡介 1).日誌服務 >在CentOS 6.x中日誌服務已經由rsyslogd取代了原先的syslogd服務.resyslogd日誌服務更加先進,功能更多.可是不論該服務的使用,仍是日誌文件的格式其實都是和syslogd服務相兼容的,因此學習起來基本和syslogd服務一致. >rsyslogd的新特色: -基於TCP網絡協議傳輸日誌信息 -更安全的網絡傳輸方式 -有日誌消息的及時分析框架 -後臺數據庫 -配置文件中能夠寫簡單的邏輯判斷 -與syslog配置文件相兼容<input type="checkbox" name="" value="" /> >肯定服務啓動 ps aux | grep rsyslogd【查看服務是否啓動】 chkconfig --list | grep rsyslog【查看服務是否自啓動】 2).常見日誌的做用 /var/log/cron-----記錄了系統定時任務相關的日誌 /var/log/cups/-----記錄打印信息的日誌 /var/log/dmesg-----記錄了系統在開機時內核自檢的信息.也可使用dmesg命令直接查看內核自檢信息 /var/log/btmp-----記錄錯誤登陸的日誌.這個文件是二進制文件,不能直接vim查看,而要使用[lastb]命令查看 /var/log/lastlog-----記錄系統中全部用戶最後一次的登陸時間的日誌.這個文件也是二進制文件,不能直接vim,而要使用lastlog命令查看 /var/log/mailog-----記錄郵件信息 /var/log/message-----記錄系統重要信息的日誌.這個日誌文件中會記錄Linux系統的絕大多數重要信息,若是系統出現問題時,首先要檢查的就應該是這個日誌文件. /var/log/secure-----記錄驗證和受權方面的信息,只要涉及帳戶和密碼的程序都會記錄.好比說系統的登陸,ssh的登陸,su切換用戶,sudo受權,甚至添加用戶和修改用戶密碼都會記錄在這個日誌文件中. /var/log/wtmp-----永久記錄全部用戶的登陸,註銷信息,同時記錄系統的啓動,重啓,關機事件.一樣這個文件也是一個二進制文件,不能直接vim,而須要使用last命令來查看. /var/run/utmp-----記錄當前已經登陸的用戶的信息.這個文件會隨着用戶的登陸和註銷而不斷變化,只記錄當前登陸用戶的信息.一樣這個文件不能直接vim,而要使用w,who,users等命令來查詢. ----------------- >除了系統默認的日誌以外,採用RPM方式安裝的系統服務也會默認把日誌記錄在/var/log/目錄中(源碼包安裝的服務日誌是在源碼包指定目錄中).不過這些日誌不是由rsyslogd服務來記錄和管理的,而是各個服務使用本身的日誌管理文檔來記錄自身日誌. /var/log/httpd/-----RPM包安裝的apache服務的默認日誌目錄 /var/log/mail/-----RPM包安裝的郵件服務的額外日誌目錄 /var/log/samba/-----RPM包安裝的samba服務的日誌目錄 /var/log/sssd/-----守護進程安全服務目錄 2.rsyslogd日誌服務 1).日誌文件格式 >基本日誌格式包含一下四列: -事件產生的時間 -發生事件的服務器的主機名 -產生事件的服務名或程序名 -事件的具體信息 2)./etc/rsyslog.conf配置文件 authpriv.* /var/log/secure【服務名稱[鏈接符號]日誌等級 日誌記錄位置】 #認證相關服務,全部日誌等級 記錄在/var/log/secure日誌中 -----------服務名稱-------------------------------- auth-----安全和認證相關消息(不推薦使用authpriv替代) authpriv-----安全和認證相關消息(私有的) cron-----系統定時任務cront和ar產生的日誌 daemon-----和各個守護進程相關的日誌 ftp-----ftp守護進程產生的日誌 kern-----內核產生的日誌(不是用戶進程產生的) local0-local7-----爲本地使用預留的服務 lpr-----打印產生的日誌 mail-----郵件收發信息 news-----與新聞服務器相關的日誌 syslog-----有syslogd服務產生的日誌信息(雖然服務名稱已經改成rsyslogd,可是不少配置都仍是沿用了syslogd的,這裏並無修改服務名) user-----用戶等級類別的日誌信息 uucp-----uucp子系統的日誌信息,uucp是早起Linux系統進行數據傳遞的協議,後來也經常使用在新聞組服務中 ------------鏈接符號----------------------------------------- 鏈接符號能夠識別爲: "*"表明全部日誌等級,好比:"authpriv.*"表明authpriv認證信息服務產生的日誌,全部的日誌等級都記錄 "."表明只要比後面的等級高的(包含該等級)日誌都記錄下來.好比:"cron.info"表明cron服務產生的日誌,只要日誌等級大於等於info級別,就記錄 ".="表明只記錄所需等級的日誌,其它等級的都不記錄.好比:"*.=emerg"表明人和日誌服務產生的日誌,只要等級是emerg等級就記錄.這種用法及少見,瞭解就好 ".!"表明不等於,也就是除了該等級的日誌外,其它等級的日誌都記錄 -------------日誌等級-------------------------------------------------------------- debug-----通常的調試信息說明 info-----基本的通知信息 notice-----普通訊息,可是有必定的重要性 warning-----警告信息,可是還不會影響到服務或系統的運行 err-----錯誤信息,通常達到err等級的信息以及能夠影響到服務或系統的運行了 crit-----臨界情況信息,比err等級還要嚴重 alert-----警告狀態信息,比crit還要嚴重.必須當即採起行動 emerg-----疼痛等級信息,系統已經沒法使用了 -------------日誌記錄位置----------------------------------------------------------------------- >日誌文件的絕對路徑,如"/var/log/secure" >系統設備文件,如"/dev/1p0" >轉發給遠程主機,如"@192.168.0.210:514" >用戶名,如"root" >忽略或丟棄日誌,如"~" 3.日誌輪替 1).日誌文件的命名規則 >若是配置文件中擁有"dateext"參數,那麼日誌會用日期來做爲日誌文件的後綴,例如"secure-20130605".這樣的話日誌文件名不會重疊,因此也就不須要日誌文件的更名,只須要保存指定的日誌個數,刪除多餘的日誌文件便可. >若是配置文件中沒有"dateext"參數,那麼日誌文件就須要進行更名了.當第一次進行日誌輪替時,當前的"secure"日誌會自動更名爲"secure.1",而後新建"secure"日誌,用來保存新的日誌.當第二次進行日誌輪替時,"secure.1"會自動更名爲"secure.2",當前的"secure"日誌會自動更名爲"secure.1",而後也會新建"secure"日誌,用來保存新的日誌,以此類推. 2).logrotate配置文件 daily-----日誌的輪替週期是天天 weekly-----日誌的輪替週期是每週 monthly-----日誌的輪替週期是每個月 rotate 數字-----保留的日誌文件的個數,0指沒有備份 compress-----日誌輪替時,舊的日誌進行壓縮 create mode owner group-----創建新日誌,同時指定新日誌的權限與全部者和所屬組.如:create 0600 root utmp mail address-----當日志輪替時,輸出內容經過郵件發送到指定的郵件地址.如:mail 123@163.com missingok-----若是日誌不存在,則忽略該日誌的警告信息 notifempty-----若是日誌爲空文件,則不進行日誌輪替 minsize 大小-----日誌輪替的最小值.也就是日誌必定要達到這個最小值纔會輪替,不然就算時間達到也不輪替 size 大小-----日誌只有大於指定大小才進行日誌輪替,而不是按照時間輪替.如:size 100k dateext-----使用日期做爲日誌輪替文件的後綴.如:secure-20150909 3).假設,把apache日誌加入輪替 vim /etc/log/rotate.conf【進入vim命令模式】 /usr/local/apache2/logs/access_log{ daily create rotate 30 } 4).logrotate命令 logrotate [選項] 配置文件名 選項: 若是此命令沒有選項,則會按照配置文件中的條件進行日誌輪替 -v:顯示日誌輪替過程.加了-v選項,會顯示日誌輪替的過程 -f:強制進行日誌輪替.無論日誌輪替的條件是否已經符合,強制配置文件中全部的日誌進行輪替 十4、啓動管理 1.CentOS 6.x啓動管理 1).系統運行級別 ①.運行級別 0-----關機 1-----單用戶模式,能夠想象爲windows的安全模式,主要用與系統修復 2-----不徹底的命令行模式,不含NFS服務 3-----徹底的命令行模式,就是標準字符界面 4-----系統保留 5-----圖形模式 6-----重啓動 ②.運行級別命令 runlevel【查看運行級別命令】 init 運行級別【改變運行級別命令】 ③.系統默認運行級別 vim /etc/inittab【進入vim命令模式進行修改】 id:3:initdefault: #系統開機後直接進入哪一個運行級別 2).系統啓動過程 ①.啓動流程圖 -------------------------------------------------------------------------------------------------------------------------- 單系統直接啓動 --> 加載內核 -------->-------------------->------------------->------ ∧ | BIOS -加載-> MBR -加載-> MBR中啓動引導程序 |--> ∨ | 多系統 --> 調用其它分區啓動扇區中啓動引導程序 --> 啓動不一樣的操做系統 --> 加載內核 -- ------------------------------------------------------------------------------------------------------------------------------- -> 內核解壓並自檢 -搜索-> 找到initramfs --> 創建仿真根目錄 --> 加載驅動 --> 加載真正系統根目錄 -調用-> /sbin/init -調用-> ------------------------------------------------------------------------------------------------------------------------------ ----調用--> /etc/rc.d/rc.sysinit --> 系統初始化 ∧ -> /etc/init/rcS.conf ∨ ----調用--> /etc/inittab -傳入運行級別-> /etc/init/rc.conf -調用-> /etc/rc.d/rc -按照運行級別調用-> /etc/rc[0-6].d --> ------------------------------------------------------------------------------------------------------------------------------- -> 按照優先級啓動和關閉相應腳本 -啓動和關閉-> /etc/rc.d/rc.local中的程序 --> 登陸界面 -輸入用戶名和密碼-> 進入系統 ------------------------------------------------------------------------------------------------------------------------------- ②.initramfs內存文件系統 >CentOS 6.x中使用initramfs內存文件系統取代了CentOS 5.x中的initrd RAM Disk.它們的做用相似,能夠經過啓動引導程序加載到內存中,而後加載啓動過程當中所須要的內核模塊,好比USB,SATA,SCSI硬盤的驅動和LVM,RAID文件系統的驅動. ③.調用/etc/init/rcS.conf配置文件 >主要功能是兩個 先調用/etc/rc.d/rc.sysinit,而後由/etc/rc.d/rc.sysinit配置文件進行Linux系統初始化. 而後再調用/etc/inittab,而後由/etc/inittab配置文件肯定系統的默認運行級別 ④.由/etc/rc.d/rc.sysinit初始化 >得到網絡環境 >掛載設備 >開機啓動畫面Plymouth(取代了過往的RHGB) >判斷是否啓用SELinux >顯示於開機過程當中的歡迎畫面 >初始化硬件 >用戶自定義模塊的加載 >配置內核的參數 >設置主機名 >同步存儲器 >設備映射器及相關的初始化 >初始化軟件磁盤陳列(RAID) >初始化LVM的文件系統功能 >檢驗磁盤文件系統(fsck) >設置磁盤配額(quota) >從新以可讀寫模式掛載系統磁盤 >更新quota(非必要) >啓動系統虛擬隨機數生成器 >配置機器(非必要) >清除開機過程中的臨時文件 >建立ICE目錄 >啓動交換分區 >將開機信息寫入/var/log/dmesg文件中 ⑤.調用/etc/rc.d/rc文件 >運行級別參數傳入/etc/rc.d/rc這個腳本以後,由這個腳本文件按照不一樣的運行級別啓動/etc/rc[0-6].d/目錄中的相應的程序 /etc/rc3.d/K??開頭的文件(??是數字),會按照數字順序依次關閉 /etc/rc3.d/S??開頭的文件(??是數字),會按照數字順序依次啓動 2.啓動引導程序grub 1).grub配置文件 ①.grub中分區表示 硬盤 分區 Linux中設備文件名 grub中設備文件名 ------------------------------------------------------------------------------------------ 第一塊SCSI硬盤 第一個主分區 /dev/sda1 hd(0,0) 第二個主分區 /dev/sda2 hd(0,1) 擴展分區 /dev/sda3 hd(0,2) 第一個邏輯分區 /dev/sda5 hd(0,4) ----------------------------- 第二塊SCSI硬盤 第一個主分區 /dev/sda1 hd(1,0) 第二個主分區 /dev/sda2 hd(1,1) 擴展分區 /dev/sda3 hd(1,2) 第一個邏輯 /dev/sda5 hd(1,4) ②.grub配置文件 vim /boot/grub/grub.conf >default=0 默認啓動第一個系統 >timeout=5 等待時間,默認是5秒 >splashimage=(hd0,0)/grub/splash.xpm.gz 這裏是指定grub啓動時的背景圖像文件的保存位置的 >hiddenmenu 隱藏菜單 >title CentOS (2.6.32-431.el6.i686)【title就是標題的意思】 >root (hd0,0)【是指啓動程序的保存分區】 >kernel /vmlinuz-2.6.32-431.el6.i686 ro root=UUID=e43f03c7-454c-463f-ac17-ac310220d6d8 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet【定義內核加載時的選項】 >initrd /initramfs-2.6.32-431.el6.i686.img【指定了initramfs內存文件系統鏡像文件的所在位置】 2).grub加密與字符界面分辨率調整 ①.grub加密 grub-md5-crypt【生成加密密碼串】 vim /boot/grub/grub.conf【進入vim命令模式】 default=0 timeout=5 password --md5 asfdfsdfsdfdasdadww%$d$6asdfsf/ #password選項放在總體設置處 ②.純字符界面分辨率調整 grep "CONFIG_FRAMEBUFFER_CONSOLE" /boot/config-2.6.32-279.e16.i686【查詢內核是否支持分辨率修改】 ---------------分辨率表格---------------------------------- 色深 640*480 800*600 1024*768 1280*1024 8位 769 771 773 775 15位 784 787 790 793 16位 785 788 791 794 32位 786 789 792 795 ------------------------------------------------------- vim /boot/grub/grub.conf【進入vim編輯模式】 kernel /vmlinuz-2.6.32-431.el6.i686 ro root=UUID=e43f03c7-454c-463f-ac17-ac310220d6d8 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet vga=791【在這句話的結尾加上"vga=791"就好了】 3.系統修復模式 ①.單用戶模式 >單用戶模式常見的錯誤修復 遺忘root密碼 修改系統默認運行級別 ②.重要系統文件丟失,致使系統沒法啓動【進入光盤修復模式】 bash-4.1# chroot /mnt/sysimage #改變主目錄 sh-4.1# cd /root #進入root根目錄,再進行操做 sh-4.1# rpm -qf /etc/inittab #查詢下/etc/inittab文件屬於哪一個包 sh-4.1# mkdir /mnt/cdrom #創建掛載點 sh-4.1# mount /dev/sr0 /mnt/cdrom #掛載硬盤 sh-4.1# rpm2cpio /mnt/cdrom/Packages/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittab #提取inittab文件到當前目錄 sh-4.1# cp etc/inittab /etc/inittab #複製inittab文件到指定位置,從而達到修復系統文件的目的 ③.Linux的安全性 用戶密碼 --> grub加密 --> BIOS加密 ∨ ∨ ∨ 單用戶模式 光盤修復模式 拔除主板電池 十5、備份與恢復 1.備份概述 1).Linux系統須要備份的數據 >/root/目錄 >/home/目錄 >/var/spool/mail/目錄 >/etc/目錄 >其它目錄 -------安裝服務的數據------------ >apache須要備份的數據 配置文件 網頁主目錄 日誌文件 >MySql須要備份的數據 源碼包安裝的MySql: /usr/local/mysql/data/ RPM包安裝的MySql: /var/lib/mysql/ 2).備份策略 >徹底備份:徹底備份就是指把全部須要備份的數據所有備份,固然徹底備份能夠備份整塊硬盤,整個分區或某個具體的目錄 >增量備份 >差別備份 2.dump和restore命令 1).dump備份命令【默認是沒有安裝的】 dump [選項] 備份以後的文件名 原文件或目錄 -0:就是咱們說的[0-9]十個備份級別 -f 文件名:指定備份以後的文件名 -u:備份成功以後,把備份時間記錄在/etc/dumpdates文件 -v:顯示備份過程當中更多的輸出信息 -j:調用bzlib庫壓縮備份文件,其實就是把備份文件壓縮爲.bz2格式 -W:顯示容許被dump的分區的備份等級及備份時間 ------------備份分區-------------------------------------------- dump -0uj -f /root/boot.bak.bz2 /boot #備份命令.先執行一次徹底備份,並壓縮和更新備份時間 cat /etc/dumpdates #查看備份時間文件 cp install.log /boot/ #複製日誌文件到/boot分區 dump -1uj -f /root/boot.bak.bz2 /boot/ #增量備份/boot分區,並壓縮 dump -W #查詢分區的備份時間及備份級別的 -----------備份文件或目錄------------------------------ dump -0j -f /root/etc.dump.bz2 /etc/【徹底備份/etc/目錄,只能使用0級別進行徹底備份,而再也不支持增量備份】 2).restore恢復命令 restore [模式選項] [選項] 模式選項:restore命令經常使用的模式有如下四種,這四個模式不能混用 -C:比較備份數據和實際數據的變化 -i:進入交互模式,手工選擇須要恢復的文件 -t:查看模式,用於查看備份文件中擁有哪些數據 -r:還原模式,用於數據還原 選項: -f:指定備份文件的文件名 ----------比較備份數據和實際數據的變化------------------------- restore -C -f /root/boot.bak.bz2 ----------查看模式----------------- restore -t -f boot.bak.bz2 ----------還原分區模式------------------- #還原boot.bak.bz2分區備份 #先還原徹底備份的數據 mkdir boot.test cd boot.test/ restore -r -f /root/boot.bak.bz2 #解壓縮 restore -r -f /root/boot.bak.bz2 #恢復增量備份數據 ----------還原文件或目錄---------------- #還原/etc/目錄的備份etc.dump.bz2 restore -r -f etc.dump.bz2 #還原etc.dump.bz2備份