shell入門,Linux入門到精pao通lu

 2023-10-18 阅读 31 评论 0

摘要:一.文件處理命令 1.命令格式與目錄處理命令 ls –a【查看隱藏文件】 ls –l【查看文件信息長格式顯示】 ls –d【查看指定目錄的詳細信息】 ls –h【顯示容量大小】 ls –i【查看任何文件的I 節點】 ll 文件名【查看一個文件的詳細信息】 2.目錄處理命令 mkdir –p【遞歸創建

一.文件處理命令

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.軟件包分類 源碼包---腳本安裝包 二進制包(RPM包、系統默認包)---常見

二、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:顯示還原過程】

三、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

四、源碼包管理

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).源碼包的卸載 不需要卸載命令,直接刪除安裝目錄即可.不會遺留任何垃圾文件

五、腳本安裝包與軟件包選擇

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),不然外界不能訪問

六、用戶和用戶組管理

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 用戶名:把用戶從組中刪除】

七、權限管理

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賦予的命令】

八、文件系統管理

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的變化可以說是翻天覆地的,比如向下兼容ext3、最大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 文件系統:加入文件系統類型來指定掛載的類型,可以ext3、ext4、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

九、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

十一、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命令】

十二、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【查看定時任務】

十三、日志管理

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:強制進行日志輪替.不管日志輪替的條件是否已經符合,強制配置文件中所有的日志進行輪替

十四、啟動管理

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加密 ∨ ∨ ∨ 單用戶模式 光盤修復模式 拔除主板電池

十五、備份與恢復

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備份

轉載于:https://my.oschina.net/zhdya/blog/1502619

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/156701.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息