細說Linux入門到精通(兄弟連視頻) 筆記


一、Unix的發展歷史和發行版本

    UNIX發展歷史

    (1)1965年,美國麻省理工學院(MIT)、通用電氣公司(GE)及AT&T的貝爾實驗室聯合開發Multics工程計划,其目標是開發一種交互式的具有多道程序處理能力的分時操作系統,但因Multics追求的目標過於龐大復雜,項目進度遠遠落后於計划,最后貝爾實驗室宣布退出。

    (2)1969年,美國貝爾實驗室的肯·湯普森在DEC PDP-7機器上開發出了UNIX系統。

    (3)1971年,肯·湯普森的同事丹尼斯·里奇發明了C語言;1973年,UNIX系統的絕大部分源代碼用C語言重寫,這為提高UNIX系統的可移植性打下基礎。

 

UNIX主要發行版本

操作系統 公司 硬件平台
AIX IBM PowerPC
HP-UX HP PA-RISC
Solaris Sun SPARC
Linux Red Hat Linux、Ubantu Linux…… IA(Intel、AMD、Cyrix、RISE…)

 

Linux發展歷史

    Linux系統誕生於1991年,由芬蘭大學生李納斯(linus Torvalds)和后來陸續加入的眾多愛好者共同開發完成。

    Linux是開源軟件,源代碼開發的UNIX。

 

Linux內核版本

Linux內核官網:www.kernel.org

 

內核版本說明

2.6.18

 

目前最新的內核版本

3.11.10

 

Linux主要發行版本

Redhat    CentOS    SuSE    fedora(個人測試版)    gentoo Linux    紅旗Linux    Mandrive    turbolinux

debian    ubantu    KNOPPIX

 

二、開源軟件簡介

開源軟件

Apache、NGINX、MySQL、PHP、samba、mongoDB、Python、Ruby、Sphinx

 

開源軟件

·使用的自由

    絕大多數開源軟件免費

·研究的自由

    可以獲得軟件源代碼

·散步及改良的自由

    可以自由傳播、改良甚至銷售

 

支撐互聯網的開源技術

    LAMP:Linux(操作系統)、Apache(Web服務器)、MySQL(數據庫)、PHP(編程語言)

 

Linux應用領域

1、基於Linux的企業服務器

2、嵌入式應用

    1)手機、平板

    2)其他嵌入式應用

    ·智能家電:機頂盒、游戲機、數碼相機等

    ·智能卡系統

    ·航空系統

    ·銀行系統

    ·卡拉OK點歌系統

    ……

3、Linux在電影娛樂業

 

Linux學習方法

    為什么選擇命令行

    解決問題的智慧

        幫助    文檔    示例    查找

    英文提示的困惑

        Command not found(命令打錯)

    No Such file or directory(對象錯誤)

 

    忘掉Windows思維方式

        計划    專注    堅持    練習

 

Linux系統安裝

    一、VMware虛擬機安裝與使用

    二、系統分區

    三、Linux系統安裝

    四、遠程登錄管理工具

 

一、VMware虛擬機安裝

1、VMware簡介

    VMware是一個虛擬PC的軟件,可以在現有的操作系統上虛擬出一個新的硬件環境,相當於模擬出一台新的PC,以此來實現在一台機器上真正同時運行兩個獨立的操作系統。

    官網:www.vmware.com

    VMware主要特點:

    ·不需要分區或重新開機就能在同一台PC上使用兩種以上的操作系統

    ·本機系統可以與虛擬機系統網絡通信

    ·可以設定並且隨時修改虛擬機系統的硬件環境

 

2、建議的VMware配置

    ·CPU:建議主頻為1GHz以上

    ·內存:建議1GB以上

    ·硬盤:建議分區空閑空間8G以上

 

3、安裝VMware

 

二、系統分區

1、磁盤分區

    磁盤分區是使用分區編輯器(partition editor)在磁盤上划分幾個邏輯部分。碟片一旦划分成數個分區(Partion),不同的類的目錄與文件可以存儲進不同的分區。

 

    分區類型

    ·    主分區:最多只能有4個。

    ·    擴展分區:

        -最多只能有1個。

        -主分區加擴展分區最多有4個。

        -不能寫入數據,只能包含邏輯分區。

    ·    邏輯分區

 

 

 

2、格式化

    格式化(高級格式化)又稱邏輯格式化,它是指根據用戶選定的文件系統(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盤的特定區域寫入特定數據,在分區中划出一片用於存放文件分配表、目錄表等用於文件管理的磁盤空間。

 

 

 

3、硬件設備文件名

 

 

硬件
設備文件名
IDE硬盤 /dev/hd[a-d]
SCSI /dev/sd[a-p]
光驅 /dev/cdrom或/dev/sr0
軟盤 /dev/fd[0-1]
打印機(25針) /dev/lp[0-2]
打印機(USB) /dev/usb/lp[0-15]
鼠標 /dev/mouse

 

  分區設備文件名

    ·設備文件名

        -/dev/hda1(IDE硬盤接口)

        -/dev/sda1(SCSI硬盤接口、SATA硬盤接口)

 

 

   1、2、3、4只能給主分區或擴展分區使用,5、6……技能代表邏輯分區。

 

4、掛載

    ·必須分區

        -/(根分區)

        -swap分區(交換分區、內存2倍,不超過2GB)

    ·推薦分區

        -/boot(啟動分區,200MB)

 

    首先,分區——格式化——每個分區起“設備文件名”——掛載點(盤符)

 

 

 

 

總結

    ·分區:把大硬盤分為小的邏輯分區

    ·格式化:寫入文件系統

    ·分區設備文件名:給每個分區定義設備文件名

    ·掛載:給每個分區分配掛載點

 

給初學者的建議

三、Linux系統安裝(以Center OS 6為例)

1、安裝歡迎界面

    ·“Install or upgrade an existing system”:安裝或升級現有系統

    ·“Install system with basic video driver”:安裝過程采用基本的顯卡驅動

    ·“Rescue installed system”:進入系統修復模式

    ·“Boot from local drive”:退出安裝從硬盤啟動

    ·“Memory test”:存儲介質檢測

 

2、密碼原則

    ·復雜性

        -八位字符以上、大小寫字母、數字、符號

        -不能是英文單詞

        -不能是和用戶相關的內容

    ·易記憶性

    ·時效性

 

3、軟件包選擇

    ·Desktop(桌面)

    ·Minimal Desktop(最小化桌面)

    ·Minimal(最小化)

    ·Basic Server(基本服務器)——建議此版本(服務器大部分命令支持完整)

    ·Database Server(數據庫服務器)

    ·Web Server(網頁服務器)

    ·Virtual Host(虛擬主機)

    ·software development workstation(軟件開發工作站)

 

4、安裝日志

    ·/root/install.log:存儲了安裝在系統中的軟件包及其版本信息

    ·/root/install.log.syslog:存儲了安裝過程中留下的事件記錄

    ·/root/anaconda-ks.cfg:以Kickstart配置文件的格式記錄安裝過程中設置的選項信息

 

四、遠程登錄管理工具

    先分配網卡

    ifconfig eth0 192.168.X.X

 

2、SecureCRT遠程連接管理工具

 

3、Winscp文件拷貝工具

 

注意事項

    ·    Linux嚴格區分大小寫

    ·    Linux中所有內容以文件形式保存,包括硬件

        -    硬盤文件是/dev/sd[a-p]

        -    光盤文件是/dev/sr0等

 

    ·    Linux不靠擴展名區分文件類型(有擴展名,是為了方便管理員區分文件)

        -    壓縮包:“*.gz”、“*.bz2”、“.tar.bz2”、“*.tgz”等

        -    二進制軟件包:“.rpm”

        -    網頁文件:“*.html”、“*.php”

        -    腳本文件:“*.sh”

        -    配置文件:“*.conf”

 

    ·    Linux所有的存儲設備都必須掛載之后用戶才能使用,包括硬盤、U盤和光盤

    ·    Windows下的程序不能直接在Linux中安裝和運行



服務器管理和維護建議

1、Linux各目錄的作用

目錄名 目錄作用
/bin/ 存放系統命令的目錄,普通用戶和超級用戶都可以操作。不過放在/bin下的命令在單用戶模式下也可以執行
/sbin/ 保存和系統環境設置相關的命令,只有超級用戶可以使用這些命令進行系統環境設置,但是有些命令可以允許普通用戶查看
/usr/bin/ 存放系統命令的目錄,普通用戶和超級用戶都可以執行。這些命令和系統啟動無關,在單用戶模式下不能執行
/usr/sbin/ 存放根目錄系統不必要的系統管理命令,例如多數服務程序。只有超級用戶可以使用。大家其實可以注意到Linux的系統,在所有的“sbin”目錄中保存的命令只有超級用戶可以使用,“bin”目錄中保存的命令所有用戶都可以使用
/boot/ 系統啟動目錄,保存系統啟動相關的文件,如內核文件和啟動引導程序(grub)文件等
/dev/ 設備文件保存位置,我們已經說過Linux中所有內容以文件形式保存,包括硬件。那么這個目錄就是用來保存所有硬件設備文件的
/etc/ 配置文件保存位置。系統內所有采用默認安裝方式(rpm安裝)的服務的配置文件全部都保存在這個目錄當中,如用戶賬戶和密碼,服務的啟動腳本,常用服務的配置文件等
/home/ 普通用戶的家目錄。建立每個用戶時,每個用戶要有一個默認登錄位置,這個位置就是這個用戶的家目錄,所有普通用戶的家目錄就是在/home下建立一個和用戶名相同的目錄。如用戶user1的家目錄就是/home/user1
/lib/ 系統調用的函數庫保存位置
/lost+found/ 當系統以外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsckg工具會檢查這里,並修復已經損壞的文件系統。這個目錄只在每個分區中出現,例如/lost+found就是根分區的備份恢復目錄,/boot/lost+found就是/boot分區的備份恢復目錄
/media/ 掛載目錄,系統建議是用來掛載媒體設備的,例如軟盤和光盤
/mnt/ 掛載目錄,早期Linux中只有這一個掛載目錄,並沒有細分。現在這個目錄系統建議掛載額外設備,如U盤,移動硬盤和其他操作系統的分區
/misc/ 掛載目錄。系統建議用來掛載NFS服務的共享目錄。我們在剛剛已經解釋了掛載,童鞋們應該知道只要是一個已經建立的空目錄就可以作為掛載點。那么系統雖然准備了三個默認掛載目錄/media、/mnt、/misc,但是到底在哪個目錄中掛載什么設備都可以由管理員自己決定。例如超哥接觸Linux的時候,默認掛載目錄只有一個/mnt一個,所以養成了在/mnt下建立不同目錄掛載不同設備的習慣。如/mnt/cdrom掛載光盤,/mnt/usb掛載U盤,這都是可以的。
/opt/ 第三方安裝的軟件保存位置。這個目錄就是放置和安裝其他軟件的位置,我手工安裝的源碼包軟件都可以安裝到這個目錄當中。不過我還是更加習慣把軟件放置到/usr/local/目錄當中,也就是說/usr/local目錄也可以用來安裝軟件
/proc/ 虛擬文件系統,該目錄中的數據並不保存到硬盤當中,而是保存到內存當中。主要保存系統的內核,進程,外部設備狀態和網絡狀態燈。如/proc/cpuinfo是保存CPU信息的,/proc/devices是保存設備驅動的列表的,/proc/filesystems是保存文件系統列表的,/proc/net/是保存網絡協議信息的
/sys/ 虛擬文件系統。和/proc目錄相似,都是保存在內存當中的,主要是保存於內核相關信息的
/root/ 超級用戶的家目錄。普通用戶家目錄在“/home”下,超級用於家目錄直接在“/”下
/srv/ 服務數據目錄。一些系統服務啟動之后,可以在這個目錄中保存所需要的數據
/tmp/ 臨時目錄。系統存放臨時文件的目錄,該目錄下所有用戶都可以訪問和寫入。我們建議此目錄不能保存重要數據,最好每次開機都把該目錄清空。
/usr/ 系統軟件資源目錄。注意usr不是user的縮寫,而是“Unix Software Resource”的縮寫,所以不是存放用戶數據,而是存放用戶數據,而是存放系統軟件資源的目錄。系統中安裝的軟件大多數保存在這里,所以除了/usr/bin/和/usr/sbin/這兩個目錄,我在介紹幾個/usr/下的二級目錄
/var/ 動態數據保存位置。主要保存緩存、日志以及軟件運行所產生的文件

 

2、服務器注意事項

    ·    遠程服務器不允許關機,只能重啟

    ·    重啟時應該關閉服務

    ·    不要在服務器訪問高峰運行高負載命令

    ·    遠程配置防火牆時不要把自己踢出服務器

    ·    指定合理的密碼規范並定期更新

    ·    合理分配權限(給用戶分配權限,夠用就好)

    ·    定期備份重要數據和日志

 

Linux常用命令

命令格式

命令格式:命令 [-選項] [參數]

    例:ls -la /etc

說明:    

    1)個別命令使用不遵循此格式

    2)當有多個選項時,可以寫在一起

    3)簡化選項與完整選項

        -a等於 --all

      

 

目錄處理命令:ls

    命令名稱:ls

    命令英文原意:list

    命令所在路徑:/bin/ls

    執行權限:所有用戶

    功能描述:顯示目錄文件

    語法:ls 選項 [-ald] [文件或目錄]

        -a   顯示所有文件,包括隱藏文件

        -l    詳細信息顯示

        -d    查看目錄屬性

 

 

·-rw-r-r--

        -文件類型(-二進制文件d目錄 l軟鏈接文件)

        -rw- r-- r--

          u   g    o

          u所有者    g所屬組    o其他人

          r讀    w寫    x執行

 

Linux常用命令

    目錄處理命令mkdir

    命令名稱:mkdir

    命令英文原意:make directories

    命令所在路徑:/bin/mkdir

    執行權限:所有用戶

    語法:mkdir -p [目錄名]

    功能描述:創建新目錄

                    -p 遞歸創建

    范例:$mkdir -p /tmp/Japan/boduo

                $mkdir /tmp/Japan/longze/tmp/Japan/cangjing

 

目錄處理命令:cd

    命令名稱:cd

    命令英文原意:change directory

    命令所在路徑:shell內置命令

    執行權限:所有用戶

    語法:cd [目錄]

    功能描述:切換目錄

    范例:$ cd /tmp/Janpan/boduo    切換到指定目錄

                $ cd ..    回到上一級目錄

 

目錄處理命令:pwd

    命令名稱:pwd

    命令英文原意:print working directory

    命令所在路徑:/bin/pwd

    執行權限:所有用戶

    語法:pwd

    功能描述:顯示當前目錄

    范例:$ pwd

                /tmp/Japan

 

  文件處理命令:rmdir

    命令名稱:rmdir

    命令英文原意:rmdir

    命令所在路徑:/bin/rmdir

    執行權限:所有用戶

    語法:rmdir [目錄名]

    功能描述:刪除空目錄

    范例:$ rmdir /tmp/Japan/boduo

 

    目錄處理命令:cp

    命令名稱:cp

    命令英文原意:copy

    命令所在路徑:/bin/cp

    執行權限:所有用戶

    語法:cp -rp [原文件或目錄] [目標目錄]

                    -r 復制目錄

                    -p 保留文件屬性

    功能描述:復制文件或目錄

 

    目錄處理命令:mv

    命令名稱:mv

    命令所在路徑:/bin/mv

    執行權限:所有用戶

    語法:mv [原文件或目錄] [目標目錄]

    功能描述:剪切文件、改名

 

    目錄處理命令:rm

    命令名稱:rm

    命令英文原意:remove

    命令所在路徑:/bin/rm

    執行權限:所有用戶

    語法:rm -rf [文件或目錄]

                    -r 刪除目錄

                    -f 強制刪除

    功能描述:刪除文件

    范例:

        $ rm /tmp/yum.log

        刪除文件/tmp/yum.log

        $ rm -rf /tmp/Japan/longze

        刪除目錄/tmp/Japan/longze


  文件處理命令:touch

    命令名稱:touch

    命令所在路徑:/bin/touch

    執行權限:所有用戶

    語法:touch [文件名]

    功能描述:創建空文件

    范例:$ touch Japanlovestory.list

 

    文件處理命令:cat(簡單瀏覽)

    命令名稱:cat

    命令所在路徑:/bin/cat

    執行權限:所有用戶

    語法:cat [文件名]

    功能描述:顯示文件內容

                    -n 顯示行號

    范例:$ cat /etc/issue

                $ cat -n /etc/services

 

    命令名稱:tac

    命令所在路徑:/usr/bin/tac

    執行權限:所有用戶

    語法:tac [文件名]

    功能描述:顯示文件內容

    范例:$ tac /etc/issue

 

    文件處理命令:more(詳細瀏覽)

    命令名稱:more

    命令所在路徑:/bin/more

    執行權限:所有用戶

    語法:more [文件名]

                (空格)或f    翻頁

                (Enter)        換頁

                    q或Q            退出

    功能描述:分頁顯示文件內容

    范例:$ more /etc/services

 

    文件處理命令:less(與more大同小異,可PgUp向上翻頁,可“/”查找文件名,n為下一條)

    命令名稱:less

    命令所在路徑:/usr/bin/less

    執行權限:所有用戶

    語法:less [文件名]

    功能描述:分頁顯示文件內容(可向上翻頁)

    范例: $ less /etc/services

 

    文件處理命令:head

    命令名稱:head

    命令所在路徑:/usr/bin/head

    執行權限:所有用戶

    語法:head [文件名]

    功能描述:顯示文件前面幾行

                    -n 指定行數

    范例:$ head -n 20 /etc/services

 

    文件處理命令:tail

    命令名稱:tail

    命令所在路徑:/usr/bin/tail

    執行權限:所有用戶

    語法:tail [文件名]

    功能描述:顯示文件后面幾行

                -n 指定行數

                -f 動態顯示文件末尾內容

    范例:$ tail -n 18 /etc/services

 

 

鏈接命令

    文件處理命令:ln

    命令名稱:ln

    命令英文原意:link

    命令所在路徑:/bin/ln

    執行權限:所有用戶

    語法:ln -s [原文件] [目標文件]

                    -s 創建軟鏈接

    功能描述:生成鏈接文件

范例:

    $ln -s /etc/issue /tmp/issue.soft

        創建文件/etc/issue的軟鏈接/tmp/issue.soft

    $ln /etc/issue /tmp/issue.hard

        創建文件/etc/issue的硬鏈接/tmp/issue.hard

 

    軟鏈接特征:類似Windows快捷方式

    1、lrwxrwxrwx

    2、文件大小-只是符號鏈接

    3、/tmp/issue.soft->/etc/issue

    箭頭指向源文件

 

    硬鏈接特征:

    1、拷貝cp-p+同步更新

    echo "www.qq.com">>/etc/issue

    2、通過i節點識別

    3、不能跨分區

    4、不能針對目錄使用

 

 

權限管理命令chmod

    命令名稱:chmod

    命令英文原意:change the permissions mode of a life

    命令所在路徑:/bin/chmod

    執行權限:所有用戶

    語法:chmod [{ugoa}{+-=}{rwx}] [文件或目錄]

                            [mode=421] [文件或目錄]

                            -R 遞歸修改

    功能描述:改變文件或目錄權限

    權限的數字表示

        r ---- 4

        w ---- 2

        x ---- 1

    rwxrw-r--

        7 6 4

    范例:

        $ chmod g+w testfile

            賦予文件testfile所屬組寫權限

        $ chmod -R 777 testdir

            修改目錄testfile及其目錄下文件為所有用戶具有全部權限

r 讀權限 可以查看文件內容 可以列出目錄中的內容
w 寫權限 可以修改文件內容 可以在目錄中創建、刪除文件
x 執行權限 可以執行文件

可以進入目錄

其他權限管理命令

    命令名稱:chown

    命令英文原意:change file ownership

    命令所在路徑:/bin/chown

    執行權限:所有用戶

    語法:chown [用戶] [文件或目錄]

    功能描述:改變文件或目錄的所有者

    范例:$ chown shenchao fengjie

                改變文件fengjia的所有者為shenchao

 

    命令名稱:chgrp

    命令英文原意:change file group ownership

    命令所在路徑:/bin/chgrp

    執行權限:所有用戶

    語法:chgrp [用戶組] [文件或目錄]

    功能描述:改變文件或目錄的所屬組

    范例:$ chgrp lampbrother fengjie

            改變文件fengjie的所屬組為lampbrother

 

    命令名稱:umask

    命令英文原意:the user file-creation mask

    命令所在路徑:Shell內置命令

    執行權限:所有用戶

    語法:umask [-S]

                -S 以rwx形式顯示新建文件缺省權限

    功能描述:顯示、設置文件的缺省權限

    范例:$ umask -S

 

文件搜索命令

    文件搜索命令:find

    命令名稱:find

    命令所在路徑:/bin/find

    執行權限:所有用戶

    語法:find [搜索范圍] [匹配條件]

    功能描述:文件搜索

 

    $ find /etc -name init

    在目錄/etc中查找文件init

    -iname不區分大小寫

    $find / -size +204800

    在根目錄下查找大於100MB的文件

    +n 大於 -n小於 n等於

    $find /home -user shenchao

    在根目錄下查找所有者為shenchao的文件

    -group 根據所屬組查找

    $find /etc -cmin -5

    在/etc下查找5分鍾內被修改過屬性的文件和目錄

    -amin    訪問時間 access

    -cmin    文件屬性 change

    -mmin    文件內容 modify

    $find /etc -size +163804 -a -size -204800

    在/etc下查找大於80MB小於100MB的文件

    -a 兩個條件同時滿足

    -o 連個條件滿足任意一個即可

    $find /etc -name inittab -exec ls -l {} \;

    在/etc下查找inittab文件並顯示其詳細信息

    -exec/-ok 命令 {}\; 對搜索結果執行操作

    -type 根據文件類目查找

            f 文件        d 目錄        l 軟鏈接文件

    -inum 根據i節點查找

 

其他搜索命令

    文件搜索命令:locate

    命令名稱:locate

    命令所在路徑:/usr/bin/locate

    執行權限:所有用戶

    語法:locate 文件名

    功能描述:在文件資料庫中查找文件

    范例:$ locate inittab

 

    文件搜索命令:which

    命令名稱:which

    命令所在路徑:/usr/bin/which

    執行權限:所有用戶

    語法:which 命令

    功能描述:搜索命令所在目錄及別名信息

    范例:$ which ls

 

    文件搜索命令:whereis

    命令名稱:whereis

    命令所在路徑:/usr/bin/whereis

    執行權限:所有用戶

    語法:whereis [命令名稱]

    功能描述:搜索命令所在目錄及幫助文檔路徑

    范例:$ whereis ls

 

    文件搜索命令:grep

    命令名稱:grep

    命令所在路徑:/bin/grep

    執行權限:所有用戶

    語法:grep -iv [指定字串][文件]

    功能描述:在文件中搜尋字符串匹配的行並輸出

        -i 不區分大小寫

        -v 排除指定字串

    范例:#grep mysql /root/install.log

 

 

幫助命令

    幫助命令:man

    命令名稱:man

    命令英文原意:manual

    命令所在路徑:/usr/bin/man

    執行權限:所有用戶

    語法:man [命令或配置文件]

    功能描述:獲得幫助信息

    范例:$ man ls

                    查看ls命令的幫助信息

              $ man services

                    查看配置文件services的幫助信息

 

    命令名稱:help

    命令所在路徑:Shell內置命令

    執行權限:所有用戶

    語法:help命令

    功能描述:獲得Shell內置命令的幫助信息

    范例:$ help umask

                查看umask命令的幫助信息

 

用戶管理命令

    用戶管理命令:useradd

    命令名稱:useradd

    命令所在路徑:/usr/sbin/useradd

    執行權限:root

    語法:useradd用戶名

    功能描述:添加新用戶

    范例:$ useradd yangmi

 

    用戶管理命令:passwd

    命令所在路徑:/usr/bin/passwd

    執行權限:所有用戶

    語法:passwd用戶名

    功能描述:設置用戶密碼

    范例:$ passwd yangmi

 

    用戶管理命令:who

    命令名稱:who

    命令所在路徑:/usr/bin/who

    執行權限:所有用戶

    語法:who

    功能描述:查看登錄用戶信息

    范例:$ who

 

壓縮解壓命令

    命令名稱:gzip

    命令英文原意:GNU zip

    命令所在路徑:/bin/gzip

    執行權限:所有用戶

    語法:gzip [文件]

    功能描述:壓縮文件

    壓縮后文件格式:.gz

 

    壓縮解壓命令:gunzip

    命令名稱:gunzip

    命令英文原意:GNU unzip

    命令所在路徑:/bin/gunzip

    執行權限:所有用戶

    語法:gunzip [壓縮文件]

    功能描述:解壓縮.gz的壓縮文件

    范例:$ gunzip buoduo.gz

 

    壓縮解壓命令:tar

    命令名稱:tar

    命令所在路徑:/bin/tar

    執行權限:所有用戶

    語法:tar 選項[-zcf][解壓后文件名][目錄]

                    -c 打包

                    -v 顯示詳細信息

                    -f 指定文件名

                    -z 打包同時壓縮

    功能描述:打包目錄

    壓縮后文件格式:.tar.gz

    范例:

        $tar -zcf Japan.tar.gz Japan

    tar命令解壓縮語法:

        -x     解包

        -v    顯示詳細信息

        -f    指定解壓文件

        -z    解壓縮

    范例:$ -zxvf Japan.tar.gz

 

    壓縮解壓命令:zip

    命令名稱:zip

    命令所在路徑:/usr/bin/zip

    執行權限:所有用戶

    語法:

        zip 選項[-r][壓縮后文件名][文件或目錄]

            -r    壓縮目錄

        功能描述:壓縮文件或目錄

        壓縮后文件格式:.zip

    范例:

    $ zip buduo.zip boduo

    壓縮文件

    $ zip -r Japan.zip Japan

    壓縮目錄

 

壓縮解壓命令:unzip

    命令名稱:unzip

    命令所在路徑:/usr/bin/unzip

    執行權限:所有用戶

    語法:unzip [壓縮文件]

    功能描述:解壓zip的壓縮文件

    范例:$ unzip test.zip

 

    壓縮解壓命令:bzip2

    命令名稱:bzip2

    命令所在路徑:/usr/bin/bzip2

    執行權限:所有用戶

    語法:bzip2 選項 [-k] [文件]

                            -k 產生壓縮文件后保留原文件

    功能描述:壓縮文件

    壓縮后文件格式:.bz2

    范例:$ bzip2 -k boduo

                $ tar -cjf Japan.tar.bz2.Japan

 

    壓縮解壓命令:bunzip2

    命令名稱:bunzip2

    命令所在路徑:/usr/bin/bunzip2

    執行權限:所有用戶

    語法:bunzip2 選項 [-k] [壓縮文件]

                                -k 解壓縮后保留原文件

    功能描述:解壓縮

    范例:$ bunzip2 -k boduo.bz2

                $ tar -xjf Japan.tar.bz2

 

網絡命令

    指令名稱:write

    指令所在路徑:/usr/bin/write

    執行權限:所有用戶

    語法:write <用戶名>

    功能描述:給用戶發信息,以Ctrl+D保存結束

    范例:#write linzhiling

 

    指令名稱:wall

    命令英文原意:write all

    指令所在路徑:/usr/bin/wall

    執行權限:所有用戶

    語法:wall [message]

    功能描述:發廣播信息

    范例:# wall ShenChao is a honest man!

 

 

    命令名稱:ping

    命令所在路徑:/bin/ping

    執行權限:所有用戶

    語法:ping 選項 IP地址

                        -c 指定發送次數

    功能描述:測試網絡連通性

    范例:# ping 192.168.1.156

 

    命令名稱:ifconfig

    命令英文原意:interface configure

    命令所在路徑:/sbin/ifconfig

    執行權限:root

    語法:ifconfig 網卡名稱 IP地址

    功能描述:查看和設置網卡信息

    范例:#ifconfig eth0 192.168.8.250

 

 

    命令名稱:mail

    命令所在路徑:/bin/mail

    執行權限:所有用戶

    語法:mail [用戶名]

    功能描述:查看發送電子郵件

    范例:# mail root

 

    命令名稱:last

    命令所在路徑:/usr/bin/last

    執行權限:所有用戶

    語法:last

    功能描述:列出目前與過去登入系統的用戶信息

    范例:#last

 

命令名稱:lastlog

    命令所在路徑:/usr/bin/lastlog

    執行權限:所有用戶

    語法:lastlog

    功能描述:檢查某特定用戶上次登錄的時間

    范例:#lastlog

                #lastlog -u 502

 

    命令名稱:traceroute

    命令所在路徑:/bin/traceroute

    執行權限:所有用戶

    語法:traceroute

    功能描述:顯示數據包到主機間的路徑

    范例:# tracerroute www.qq.com

 

    命令名稱:netstat

    命令所在路徑:/bin/netstat

    執行權限:所有用戶

    語法:netstat [選項]

    功能描述:顯示網絡相關信息

    選項:

        -t :      TCP協議

        -u:    UDP協議

        -l :    監聽

        -r :    路由

        -n :    顯示IP地址和端口號

    范例:

        # netstat -tlun        查看本機監聽的端口

        # netstat -an            查看本機所有的網絡連接

        # netstat -rn            查看本機路由表

 

    

    命令名稱:setup

    命令所在路徑:/usr/bin/setup

    執行權限:root

    語法:setup

    功能描述:配置網絡

    范例:# setup

 

    掛載命令
    命令名稱:mount
    命令位置:/bin/mount
    執行權限:所有用戶

    命令語法:mount [-t 文件系統] 設備文件名 掛載點

    范例:# mount -t iso9660 /dev/sr0/mnt/cdrom

 

關機重啟命令

    1、shutdown命令

    [root@localhost~]#shutdown [選項]時間選項:

        -c:取消前一個關機命令

        -h:關機

        -r:重啟

 

    2、其他關機命令

    ·[root@localhost~]#halt

    ·[root@localhost~]#poweroff

    ·[root@localhost~]#init 0

 

    3、其他重啟命令

    ·[root@localhost~]#reboot

    `[root@localhost~]# init 6

 

    4、系統運行級別?

    ·0    關機

    ·1    單用戶

    ·2    不完全多用戶,不含NFS服務

    ·3    完全多用戶

    ·4    未分配

    ·5    圖形界面

    ·6    重啟

 

    [root@localhost ~]#cat /etc/inittab

    #修改系統默認運行級別

    id3:3:initdefault

 

    [root@localhost~]runlevel

    #查詢系統運行級別

 

5、退出登錄命令

    [root@localhost ~]#logout

 

第五講    文本編輯器Vim

5.1    Vim常用操作

Vim簡介

    Vim是一個功能強大的全屏幕文本編輯器,是Linux/UNIX上最常用的文本編輯器,它的作用是建立、編輯、顯示文本文件。

 

    Vim 沒有菜單,只有命令。



 

 

 

插入命令

命令 作用
a 在光標所在字符后插入
A 在光標所在行尾插入
i 在光標所在字符前插入
I 在光標所在行行首插入
o 在光標下插入就行
O 在光標上插入新行


定位命令

 

 

 

刪除命令

 

 

復制和剪切命令

 

 

替換和取消命令

 

 

搜索和搜索替換命令

 

 

 

 

 

Vim的一些小技巧

    ·    導入命令執行結果    :r  !命令

    ·    定義快捷鍵 :map 快捷鍵 觸發命令

        范例    :map P I= ESC

                    :map B 0x

    ·    連續行注釋    :n1.n2s/^/#/g

                                :n1.n2s/^#//g

                                :n1.n2g/^//g

    ·    替換    :ab mymail samlee@lampbrother.net



Linux軟件安裝

課程大綱

一、軟件包管理簡介

二、RPM包管理-rpm命令管理

三、RPM包管理-yum在線管理

四、源碼包管理

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

 

1、軟件包分類

    ·    源碼包

                -腳本安裝包

    ·    二進制包(RPM包、系統默認包)

2、源碼包

    源碼包的優點是:

    ·    開源,如果有足夠的能力,可以修改源代碼

    ·    可以自由選擇所需的功能

    ·    軟件是編譯安裝,所以更加適合自己的系統,更加穩定也效率更高

    ·    卸載方便

 

    源碼包的缺點:

    ·    安裝過程步驟較多,尤其安裝較大的軟件集合時(如LAMP環境搭建),容易出現拼寫錯誤

    ·    編譯過程時間較長,安裝比二進制安裝時間長

    ·    因為是編譯安裝,安裝過程中一旦報錯新手很難解決

 

3、RPM包

    二進制包的優點

        ·包管理系統簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和卸載

        ·安裝速度比源碼包安裝快的多

    二進制包的缺點:

        ·經過編譯,不再可以看到源代碼

        ·功能選擇不如源碼包靈活

        ·依賴性

 

rpm包管理-rpm命令管理

1、RPM包命名原則

    httpd-2.2.15-15.e16.centos.1.i686.rpm

    httpd            軟件包名

    2.2.15           軟件版本

    15                軟件發布的次數

    el6.centos    適合的linux平台

    i686            適合的硬件平台

    rpm            rpm包擴展名

 

2、RPM包依賴性

    ·樹形依賴:a>b>c

    ·環形依賴:a>b>c>a

    ·模塊依賴:模塊依賴查詢網站:www.rpmfind.net

 

 

1、包全名與包名

    ·包全名:操作的包是沒有安裝的軟件包時,使用包全名。而且要注意路徑

    ·包名:操作已經安裝的軟件包時,使用包名。是搜索/var/lib/rpm中的數據庫。

 

2、RPM安裝

    rpm-ivh包全名

    選項:

        -i(install)    安裝

        -v(verbose)    顯示詳細信息

        -h(hash)    顯示進度

        --nodeps    不檢測依賴性

 

3、RPM包升級

    rpm -Uvh 包全名

    選項:

        -U(upgrade)        升級

 

4、卸載

rpm -e 包名

 選項:

        -e(erase)    卸載

        --nodeps    不檢查依賴性

 

yum安裝

1、查詢是否安裝

    [root@localhost ~]#rpm -q 包名

    #查詢包是否安裝

    選項:

        -q    查詢(query)

    [root@localhost ~]#rpm -qa

    #查詢所有已經安裝的RPM包

    選項:

        -a    所有(all)

 

2、查詢軟件包詳細信息

    [root@localhost ~]# rpm -qi 包名

    選項:

        -i    查詢軟件信息(information)

        -p    查詢未安裝包信息(package)

 

3、查詢包中文件安裝位置

    [root@localhost ~]# rpm-ql 包名

    選項:

            -l    列表(list)

            -p    查詢未安裝包信息(package)

 

4、查詢系統文件屬於哪個RPM包

    [root@localhost ~]# rpm-qf    系統文件名

    選項:

        -f    查詢系統文件屬於哪個軟件包(file)

 

5、查詢軟件包的依賴性

    [root@localhost ~]#rpm -qR 包名

    選項:

        -R 查詢軟件包的依賴性(requires)

        -p    查詢未安裝包信息(package)

 

1、RPM包的校驗

    [root@localhost ~]#rpm -V已安裝的包選項:

        -V    校驗指定RPM包中的文件(verify)

驗證內容中的8個信息的具體內容如下:

    ·S    文件大小是否改變

    ·M    文件的類型或文件的權限(rwx)是否被改變

    ·5    文件MD5校驗和是否改變(可以看成文件內容是否改變)

    ·D    設備的中,從代碼是否改變

    ·L    文件路徑是否改變

    ·U    文件的屬主(所有者)是否改變

    ·G    文件的屬組是否改變

    ·T    文件的修改時間是否改變

文件類型

    ·c    配置文件(config file)

    ·d    普通文檔(documentation)

    ·g    “鬼”文件(ghost file),很少見,就是該文件不應該被這個RPM包包含

    ·l    授權文件(license file)

    ·r    描述文件(read me)

 

2、RPM包中文件提取

    [root@localhost ~]#rpm2cpio 包全名 | \ cpio-idv.文件絕對路徑

 

    rpm2cpio

    #將rpm包轉換為cpio格式的命令

 

    cpio

    #是一個標准工具,它用於創建軟件檔案文件和從檔案文件中提取文件

 

    [root@localhost ~]#cpio 選項 <[文件|設備]>選項:

        -i:copy-in模式,還原

        -d:還原時自動新建目錄

        -v:顯示還原過程

 

    [root@localhost ~]#rpm -qf /bin/ls

    #查詢ls命令屬於哪個軟件包

    [root@localhost ~]#mv /bin/ls/tmp/

    #造成ls命令誤刪除假象

    [root@localhost ~]#rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio-idv ./bin/ls

    #提取RPM包中ls命令到當前目錄的/bin/ls下

    [root@localhost ~]#cp /root/bin/ls /bin/

    #把ls命令復制會/bin/目錄,修復文件丟失

 

RPM包管理-yum在線管理

IP配置

1、IP地址配置

[root@localhost ~]setup

#使用setup工具

 

[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0

把ONBOOT="no"改為

ONBOOT="yes"

#啟動網卡

 

[root@localhost ~]#service network restart

#重啟網絡服務

 

2、網絡yum源

[root@localhost yum.repos.d]#vi /etc/yum.repos.d/CentOS-Base.repo

    ·[base]    容器名稱,一定要放在[]中

    ·name    容器說明,可以自己隨便寫

    ·mirrorlist    鏡像站點,這個可以注釋掉

    ·baseurl    我們的yum源服務器的地址。默認是CentOS官方的yum源服務器,是可以使用的,如果你覺得慢可以改成你喜歡的yum源地址

    ·enable    此容器是否生效,如果不寫成或寫成enable=1都是生效,寫成enable=0就是不生效

    ·gpgcheck    如果是1是指RPM的數字證書生效,如果是0則不生效

    ·gpgkey        數字證書的公鑰文件保存位置。不用修改

 

1、常用yum命令

1)查詢

[root@localhost yum.repos.d]#yum list

#查詢所有可用軟件包列表

 

[root@localhost yum.repos.d]# yum search 關鍵字

#搜索服務器上所有和關鍵字相關的包

 

2)安裝

[root@localhost yum .repos.d]#yum -y install 包名

選項:

    install 安裝

    -y    自動回答yes

 

3)升級

[root@localhost yum-.repos.d]#yum -y update 包名

選項:

    update        升級

    -y                自動回答yes

 

4)卸載

[root@localhost yum.repos.d]#yum -y remove 包名:

選項:

    remove 卸載

    -y            自動回答yes

 

2、YUM軟件組管理命令

[root@localhost ~]#yum grouplist

#列出所有可用的軟件組列表

 

[root@localhost ~]#yum groupinstall 軟件名組

#安裝指定軟件組,組名可以由grouplist查詢出來

 

[root@localhost ~]#yum groupremove 軟件組名

#卸載指定軟件組

 

光盤yum源搭建

光盤yum源搭建步驟

1)掛載光盤

[root@localhost ~]#mount /dev/cdrom /mnt/cdrom

2)讓網絡yum源文件失效

[root@localhost ~]#cd /etc/yum.repos.d/

[root@localhost yum.repos.d]#mv CentOS-Base.repo \

CentOS-Base.repo.bak

[root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo \

 CentOS-Debuginfo.repo.bak

[root@localhost yum repos.d]#mv CentOS-Vault.repo \

CentOS-Vault.repo.bak

3)修改光盤yum源文件

[root@localhost yum.repos.d]#vim CentOS-Media.repo

[c6-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom

#地址為你自己的光盤掛載地址

#    file:///media/cdrom/

#    file:///media/cdrecorder/

#注釋這兩個不存在的地址

gpgcheck=1

enabled=1

#把enanbled=0改為enabled=1,讓這個yum源配置文件生效

gpgkey=file:///etc/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

源碼包管理

源碼包和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

 

    ·而源碼包安裝的服務則不能被服務管理命令管理,因為沒有安裝到默認路徑中。所以只能用絕對路徑進行服務的管理,如:

    ·    /usr/local/apache2/bin/apachectl start

 

源碼包安裝過程

1、安裝准備

    ·    安裝C語言編譯器

    ·    下載源碼包

        http://mirror.bit.edu.cn/apache/httpd/

 

2、安裝注意事項

    ·    源代碼保存位置:/usr/local/src/

    ·    軟件安裝位置:/usr/local/

    ·    如何確定安裝過程報錯:

        -    安裝過程停止

        -    並出現error、warning或no的提示

 

· ./configure    軟件配置與檢查

    -    定義需要的功能選項。

    -    檢測系統環境是否符合安裝要求。

    -    把定義好的功能選項和檢測系統環境的信息都寫入Makefile文件,用於后續的編輯。

 

4、源碼包的卸載

    ·    不需要卸載命令,直接刪除安裝目錄即可。不會遺留任何垃圾文件

 

1、腳本安裝包

    ·    腳本安裝包並不是獨立的軟件包類型,常見安裝的是源碼包。

    ·    是人為把安裝過程寫成了自動安裝的腳本,只要執行腳本,定義簡單的參數,就可以完成安裝。

    ·    非常類似於Windows下軟件的安裝方式。

 

2、Webmin的作用

    Webmin是一個基於Web的Linux系統管理界面。您就可以通過圖形化的方式設置用戶帳號、Apache、DNS、文件共享等服務。

 

3、Webmin安裝過程

    ·下載軟件

        -http://sourceforge.net/projects/webadmin/files/webmin/

    ·解壓縮,並進入加壓縮目錄

    ·執行安裝腳本

 

    先把.tar.gz壓縮包copy至路徑下

    運行[root ]#tar -xvcf 文件包

    之后./setup.sh    #開始安裝

 

第七章    用戶和用戶組管理

用戶配置文件

用戶信息文件/etc/passwd

1、用戶管理簡介

    ·    所以越是對服務器安全性要求高的服務器,越需要建立合理的用戶權限等級制度和服務器操作規范。

    ·    在Linux中主要是通過用戶配置文件來查看和修改用戶信息。

 

2、/etc/passwd

    ·    第1字段:用戶名稱

    ·    第2字段:密碼標志

    ·    第3字段:UID(用戶ID)

        - 0:               超級用戶

        - 1-499:        系統用戶

        - 500-65535:普通用戶

    ·    第4字段:GID(用戶初始組ID)

    ·    第5字段:用戶說明

    ·    第6字段:家目錄

        -    普通用戶:/home/用戶名/

        -    超級用戶:/root/

    ·    第7字段:登錄之后的Shell

 

3、初始組和附加組

    ·    初始組:就是指用戶一登錄就立刻擁有這個用戶組的相關權限,每個用戶的初始組只能有一個,一般就是和這個用戶的用戶名相同的組名作為這個用戶的初始組。

    ·    附加組:指用戶可以加入多個其他的用戶組,並擁有這些組的權限,附加組可以有多個。

 

4、Shell是什么

    ·    Shell就是Linux的命令解釋器。

    ·    在/etc/passwd當中,除了標准Shell是/bin/bash之外,還可以寫如/sbin/nologin。

 

 

 

1、影子文件/etc/shadow

    ·    第1字段:用戶名

    ·    第2字段:加密密碼

        -    加密算法升級為SHA512散列加密算法

        -    如果密碼位是“!!”或“*”代表沒有密碼,不能登錄

    ·    第3字段:密碼最后一次修改日期

        -    使用1970年1月1日作為標准時間,每過一天時間戳加1

    ·    第4字段:兩次密碼的修改間隔時間(和第3字段相比)

    ·    第5字段:密碼有效期(和第3字段相比)

    ·    第6字段:密碼修改到期前的警告天數(和第5字段相比)

    ·    第7字段:密碼過期后的寬限天數(和第5字段相比)

        - 0:代表密碼過期后立即失效

        - 1:則代表密碼永久不會失效。

    ·    第8字段:帳號失效時間

        - 要用時間戳表示

    ·    第9字段:保留

 

2、時間戳換算

    ·    把時間戳換算為日期

        - date -d "1970-01-01 16066 days"

    ·    把日期換算為時間戳

        - echo $(($(date --date="2014/01/06" +%s)/86400+1))

 

用戶管理的相關文件

1、用戶的家目錄

    ·    普通用戶:/home/用戶名/,所有者和所屬組都是此用戶,權限是700

    ·    超級用戶:/root/,所有者和所屬組都是root用戶,權限是550

 

2、用戶的郵箱

    ·    /var/spool/mail/用戶名/

3、用戶模版目錄

    ·    /etc/skel/

 

用戶管理命令

用戶添加命令

1、useradd命令格式

[root@localhost ~]useradd [選項] 用戶名

選項:

    -u UID:手工指定用戶的UID號

    -d 家目錄:    手工指定用戶的家目錄

    -c 用戶說明:    手工指定用戶的說明

    -g 組名:        手工指定用戶的初始組

    -G 組名:    指定用戶的附加組

    -s shell:    手工指定用戶的登錄shell。默認是/bin/bash

 

2、添加默認用戶

    ·[root@localhost ~]#useradd sc

        -[root@localhost ~]#grep sc /etc/passwd

        -[root@localhost ~]#grep sc /etc/shadow

        -[root@localhost ~]#grep sc /etc/group

        -[root@localhost ~]#grep sc /etc/gshaow

        -[root@localhost ~]#ll -d /home/lamp/

        -[root@localhost ~]#ll /var/spool/mail/lamp

 

3、指定選項添加用戶

    · useradd -u 550 -G root,bin -d /home/lamp1 \-c "test user" -s /bin/bash sc

 

4、用戶默認值文件

    · /etc/default/useradd

        - GROUP=100                #用戶默認組

        - HOME=/home             #用戶家目錄

        - INACTIVE=-1                #密碼過期寬限天數(shadow文件7字段)

        - EXPIRE=                        #密碼失效時間(8)

        - SHELL=/bin/bash            #默認shell

        - SKEL=/etc/skel                #模版目錄

        - CREATE_MAIL_SPOOL=yes    #是否建立郵箱

 

    · /etc/login.defs

        - PASS_MAX_DAYS 99999    #密碼有效期(5)

        - PASS_MIN_DAYS 0            #密碼修改間隔(4)

        - PASS_MIN_LEN 5                #密碼最小5位(PAM)

        - PASS_WARN_AGE 7            #密碼到期警告(6)

        - UID_MIN            500            #最小和最大UID范圍

        - GID_MAX            60000

        - ENCRYPT_METHOD SHA512    #加密模式

 

 

修改用戶密碼passwd

1、passwd命令格式

    [root@localhost ~]#passwd [選項] 用戶名

    選項:

        -S    查詢用戶密碼的密碼狀態。僅root用戶可用。

        -l    暫時鎖定用戶。僅root用戶可用

        -u    解鎖用戶。僅root用戶可用

        --stdin    可以通過管道符輸出的數據作為用戶的密碼。

 

2、查看密碼狀態

    · [root@localhost ~]#passwd -S lamp lamp PS 2013-01-06 0 99999 7 -1

    #用戶名密碼設定時間(2013-01-06)密碼修改間隔時間(0)

    #密碼有效期(99999)警告時間(7)密碼不失效(-1)

 

3、鎖定用戶和解鎖用戶

    · [root@localhost ~]# passwd -l lamp

    · [root@localhost ~]# passwd -u lamp

 

4、使用字符串作為用戶的密碼

    · [root@localhost ~]# echo "123" | passwd --stdin lamp

 

修改用戶信息usermod/修改用戶密碼狀態chage

1、修改用戶信息usermod

[root@localhost ~]#usermod [選項] 用戶名

選項:

    -u UID:修改用戶的UID號

    -c 用戶說明:修改用戶的說明信息

    -G 組名:修改用戶的附加組

    -L:        臨時鎖定用戶(Lock)

    -U:        解鎖用戶鎖定(Unlock)

 

    · [root@localhost ~]#useradd -c "test user" lamp    #修改用戶的說明

    · [root@localhost ~]#usermod -G root lamp    #把lamp用戶加入root組

    · [root@localhost ~]#usermod -L lamp    #鎖定用戶

    · [root@localhost ~]#usermod  -U lamp    #解鎖用戶

 

2、修改用戶密碼狀態chage

    [root@localhost ~]chage [選項] 用戶名

    選項:

        -l:            列出用戶的詳細密碼狀態

        -d日期:    修改密碼最后一次更改日期(shadow3字段)

        -m 天數:    兩次密碼修改間隔(4字段)

        -M 天數:    密碼有效期(5字段)

        -W 天數:    密碼過期前警告天數(6字段)

        -l 天數:    密碼過后寬限天數(7字段)

        -E 日期:    帳號失效時間(8字段)

 

    · [root@localhost ~]chage -d 0 lamp

    #這個命令其實是把密碼修改日期歸0了(shadow第3字段)

    #這樣用戶一登陸就要修改密碼

 

刪除用戶userdel/用戶切換命令su

1、刪除用戶userdel

  [root@localhost ~]userdel [-r] 用戶名

  選項:

    -r  刪除用戶的同時刪除用戶家目錄

  手工刪除用戶

    · [root@localhost ~]#vi /etc/passwd

    · [root@localhost ~]#vi /etc/showdow

    · [root@localhost ~]#vi /etc/group

    · [root@localhost ~]#vi /etc/gshadow

    · [root@localhost ~]#rm -rf /var/spool/mail/lamp

    · [root@localhost ~]#rm -rf /home/lamp/

 

2、查看用戶ID

  [root@localhost ~]Id 用戶名

 

3、切換用戶身份su

  [root@localhost ~]#su [選項] 用戶名

  選項:

  - :  選項只使用“-”代表連帶用戶的環境變量一起切換

  -c 命令:僅執行一次命令,而不切換用戶身份

 

  · [lamp@localhost ~]$su - root

  #切換成root

  ·[lamp@localhost ~]su - root -c "useradd user3"

  #不切換成root,但是執行useradd命令添加user3用戶

 

用戶組管理命令

1、添加用戶組

  [root@localhost ~]#groupadd [選項] 組名

  選項:

    -g GID:    指定組ID

 

2、修改用戶組

  [root@locahost ~]#groupmod [選項] 組名

  選項:

    -g GID:    修改組ID

    -n 新組名:  修改組名

  [root@locahost ~]#groupmod -n testgrp group 1

  #把組名group1修改為testgrp

 

3、刪除用戶組

  [root@localhost ~]#groupdel 組名

 

4、把用戶添加入組或從組中刪除

  [root@localhost ~]#gpasswd 選項 組名

  選項:

    -a 用戶名:  把用戶加入組

    -d 用戶名:  把用戶從組中刪除

 

第八章  權限管理

ACL權限

ACL權限簡介與開啟

1、ACL權限簡介

 

 2、查看分區ACL權限是否開啟

  [root@localhost ~]# dumpe2fs -h /dev/sda3

  #dumpe2fs命令是查詢指定分區詳細文件系統信息的命令

  選項:

    -h 僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息

 

3、臨時開啟分區ACL權限

  [root@localhost ~]#mount -o remount,acl/

  #重新掛載根分區,並掛載加入acl權限

 

4、永久開啟分區ACL權限

  [root@localhost ~]#vi /etc/fstab

  UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl  l  l

  #加入acl

  [root@localhost ~]#mount -o remount /

  #重新掛載文件系統或重啟動系統,使修改生效

 

查看與設定ACL權限

1、查看ACL命令

  [root@localhost ~]#getfacle 文件名

  #查看acl權限

 

2、設定ACL權限的命令

  [root@localhost ~]#setfacl 選項 文件名

  選項:

    -m:  設定ACL權限

    -x:  刪除指定的ACL權限

    -b:  刪除所有的ACL權限

    -d:  設定默認ACL權限

    -k:  刪除默認ACL權限

    -R:  遞歸設定ACL權限

 

3、給用戶設定ACL權限

 

 

 

[root@localhost ~]#useradd zhangsan
[root@localhost ~]#useradd lisi
[root@localhost ~]#useradd st
[root@localhost ~]#groupadd tgroup
[root@localhost ~]#mkdir /project
[root@localhost ~]#chown root:tgroup /project/
[root@localhost ~]#chmod 770 /project/
[root@localhost ~]#setfacl -m u:st:rx /project/
#給用戶st賦予r-x權限,使用“u:用戶名:權限”格式

 

4、給用戶組設定ACL權限

 

[root@localhost ~]#groupadd tgroup2
[root@localhost ~]#setfacl -m g:tgroup2:rwx project/
#為組tgroup2分配ACL權限。使用“g:組名:權限”格式

 

 

最大有效權限與刪除ACL權限

1、最大有效權限mask

  ·  mask是用來指定最大有效權限的。如果我給用戶賦予了ACL權限,是需要和mask的權限“相與”才能得到用戶的真正權限

  修改最大有效權限

  [root@localhost /]#setfacl -m m:rx 文件名

  #設定mask權限為r-x。使用"m:權限"格式

 

2、刪除ACL權限

  [root@localhost ~]#setfacl -x u:用戶名 文件名

  #刪除指定用戶的ACL權限

  [root@localhost /]#setfacl -x g:組名 文件名

  #刪除指定用戶組的ACL權限

  [root@localhost /]#setfacl -b 文件名

  #會刪除文件的所有的ACL權限

 

默認ACL權限和遞歸ACL權限

1、遞歸ACL權限

  · 遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACL權限。

  · setfcal -m u:用戶名:權限 -R 文件名

2、默認ACL權限

  · 默認ACL權限的作用是如果給父目錄設定了默認ACL權限,那么父目錄中所有新建的子文件都會繼承父目錄的ACL權限。

  · setfacl -m d:u:用戶名:權限 文件名

 

文件特殊權限

SetUID

1、SetUID的功能

  · 只有可以執行的二進制程序才能設定SUID權限

  · 命令執行者要對該程序擁有x(執行)權限

  · 命令執行者在執行該程序時獲得該程序文件屬主的身份(在執行程序的過程中靈魂附體為文件的屬主)

  · SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效。

 

  ·passwd命令擁有SetUID權限,所以普通可以修改自己的密碼

  [root@localhost ~]#ll /usr/bin/passwd

  -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd

 

  ·cat命令沒有setUID權限,所以普通用戶不能查看/etc/shadow文件內容

  [root@localhost ~]# ll /bin/cat

  -rwxr-xr-x l root root 47976 6月 22 2012/ /bin/cat

 

2、設定SetUID的方法

  · 4代表SUID

    - chmod 4755 文件名

    - chmod u+s 文件名

 

3、取消SetUID的方法

  · chmod 755 文件名

  · chmod u-s 文件名

 

4、危險的SetUID

  · 關鍵目錄應嚴格控制寫權限。比如“/”、“/usr”等

  · 用戶的密碼設置要嚴格遵守密碼三原則

  · 對系統中默認應該具有SetUID權限的文件作一列表,定時檢查有沒有這之外的文件被設置了SetUID權限

 

SetGID

1、SetGID針對文件的作用

  · 只有可執行的二進制程序才能設置SGID權限

  · 命令執行者要對程序擁有x(執行)權限

  · 命令執行在執行程序的時候,組身份升級為該程序文件的屬組

  · SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效

 

  [root@localhost ~]# ll /usr/bin/locate

  -rwx--s--x 1 root slocate 35612 8月 24 2010 /usr/bin/locate

 

  [root@localhost ~]# ll /var/lib/mlocate/mlocate.db

  -rw-r---- 1 root slocate 1838850 1月 20 04:29 /var/lib/mlocate/mlocate.db

 

  · /usr/bin/locate是可執行二進制程序,可以賦予SGID

  · 執行用戶lamp對/usr/bin/locate命令擁有執行權限

  · 執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db數據庫擁有r權限,所以普通用戶可以使用locate命令查詢mlocate.db數據庫

  · 命令結束,lamp用戶的組身份返回為lamp組

 

2、SetGID針對目錄的作用

  · 普通用戶必須對此目錄擁有r和x權限,才能進入此目錄

  · 普通用戶在此目錄中的有效組會變成此目錄的屬組

  · 若普通用戶對此目錄擁有w權限時,新建的文件的默認屬組是這個目錄的屬組

 

3、設定SetGID

  · 2代表SGID

    - chmod 2755 文件名

    - chmod g+s 文件名

[root@locahost ~]#cd /tmp/
[root@locahost tmp]#mkdir dtest
[root@locahost tmp]#chmod g+s dtest
[root@locahost tmp]#ll -d dtest
[root@locahost tmp]#chmod 777 dtest/
[root@locahost tmp]#su -lamp
[root@locahost tmp]$cd /tmp/dtest/
[root@locahost dtest]$touch abc
[root@locahost dtest]$ ll

 

4、取消SetGID

  · chmod 755 文件名

  · chmod g-s 文件名

 

Sticky BIT

1、SBIT粘着位作用

  · 粘着位目前只對目錄有效

  · 普通用戶對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入權限

  · 如果沒有粘着位,因為普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。一但賦予粘着位,除了root可以刪除所有文件,普通用戶就算擁有w權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。

 

[root@localhost ~]#ll -d /tmp/
drwxrwxrwt.3 root root 4096 12月 13 11:22 /tmp/

 

2、設置與取消粘着位

· 設置粘着位

 - chmod 1755 目錄名

 - chmod o+t 目錄名

· 取消粘着位

  - chmod 777 目錄名

  - chmod o-t 目錄名

 

文件系統屬性chattr權限

1、chattr命令格式

[root@localhost ~]#chattr[+-=][選項]文件或目錄名

  +:增加權限

  -:刪除權限

  =:等於某權限

· 選項

  - i:如果對文件設置i屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據;如果對目錄設置i屬性,那么只能修改目錄下文件的數據,但不允許建立和刪除文件。

  - a:如果對文件設置a屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據;如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除。

 

2、查看文件系統屬性

[root@localhost ~]lsattr 選項 文件名

選項:

  -a 顯示所有文件和目錄

  -d 若目標是目錄,僅列出目錄本身的屬性,而不是子文件

 

系統命令sudo權限

1、sudo權限

  · root把本來只能超級用戶執行的命令賦予普通用戶執行

  · sudo的操作對象是系統命令

 

2、sudu使用

[root@localhost ~]#visudo

#實際修改的是/etc/sudoers文件

 

root ALL=(ALL)  ALL

#用戶名 被管理主機的地址= (可使用的身份)  授權命令(絕對路徑)

#%wheel  ALL=(ALL)  ALL

#%組名  被管理主機的地址=(可使用的身份)  授權命令(絕對路徑)

 

3、授權sc用戶可以重啟服務器

[root@localhost ~]#visudo

sc  ALL=/sbin/shutdown -r now

 

4、普通用戶執行sudo賦予的命令

[root@localhost ~]#su - sc

[sc@localhost ~]$sudo -l

#查看可用的sudo命令

[lamp@localhost ~]$ sudo/sbin/shutdown -r now

#普通用戶執行sudo賦予的命令

 

第九講  文件系統管理

回顧分區和文件系統

1、分區類型

  · 主分區:總共最多只能分四個

  · 擴展分區:只能有一個,也算作主分區的一種,也就是說主分區加擴展分區最多有四個。但是擴展分區不能存儲數據和格式化,必須再划分成邏輯分區才能使用。

  · 邏輯分區:邏輯分區是在擴展分區中划分的,如果是IDE硬盤,Linux最多支持59個邏輯分區,如果是SCSI硬盤Linux最多支持11個邏輯分區。

 

2、分區表示方法

 

 

分區的設備文件名
主分區1 /dev/sda1

主分區2

/dev/sda2
主分區3 /dev/sda3
擴展分區 /dev/sda4
邏輯分區1 /dev/sda5
邏輯分區2 /dev/sda6
邏輯分區3 /dev/sda7

 

 

分區的設備文件名
主分區1 /dev/sda1
擴展分區 /dev/sda2
邏輯分區1 /dev/sda5
邏輯分區2 /dev/sda6
邏輯分區3 /dev/sda7

 

 

2、文件系統

  · ext2:是ext文件系統的升級版本,Red Hat Linux 7.2版本以前的系統默認都是ext2文件系統。1993年發布,最大支持16TB的分區和最大2TB的文件(1TB=1024GB=1024*1024KB)

  · ext3:ext3文件系統是ext2文件系統的升級版本,最大的區別就是帶日志功能,以在系統突然停止時提高文件系統的可靠性。支持最大16TB的分區和最大2TB的文件。

  · ext4:它是ext3文件系統的升級版。ext4在性能、伸縮性和可靠性方面進行了大量改進。EXT4的變化可以說是翻天覆地的,比如向下兼容EXT3、最大1EB文件系統和16TB文件、無限數據子目錄、Extents連續數據庫概念、多塊分配、延遲分配、持久預分配、快速FSCK、日志校驗、無日志模式、在線碎片整理、inode增強、默認啟用barrier等。是CentOS 6.3的默認文件系統

  (1EB=1024PB=1024*1024TB)

 

文件系統常用命令

df命令、du命令、fsck命令和dump2fs命令

1、文件系統查看命令df

[root@localhost ~]#df [選項] [掛載點]

選項:

  -a 顯示所有的文件系統信息,包括特殊文件系統,如/proc、/sysfs

  -h 使用習慣單位顯示容量,如KB,MB或GB等

  -T 顯示文件系統顯示容量

  -m 以MB為單位顯示容量

  -k 以KB為單位顯示容量。默認就是以KB為單位

 

2、統計目錄或文件大小

[root@localhost ~]#du [選項] [目錄或文件名]

選項:

  -a  顯示每個子文件的磁盤占有量。默認只統計子目錄的磁盤占用量。

  -h  使用習慣單位顯示磁盤占用量,如KB,MB或GB等。

  -s  統計總占用量,而不列出子目錄和子文件的占用量

 

du命令和df命令的區別

  · df命令是從文件系統考慮的,不光要考慮文件占用的空間,還要統計被命令或程序占用的空間(最常見的就是文件已經刪除,但是程序並沒有釋放空間)

  · du命令是面向文件的,只會計算文件或目錄占用的空間。

 

3、文件系統修復命令fsck

[root@localhost ~]#fsck [選項] 分區設備文件名

選項:

  -a:不用顯示用戶提示,自動修復文件系統

  -y:自動修復。和-a作用一致,不過有些文件系統只支持-y

 

4、顯示磁盤狀態命令dumpe2fs

[root@localhost ~]#dumpe2fs 分區設備文件名

 

掛載命令

1、查詢與自動掛載

[root@localhost ~]#mount [-l]

#查詢系統中已經掛載的設備,-l會顯示卷標名稱

 

[root@localhost ~]mount -a

#依據配置文件/etc/fstab的內容,自動掛載

 

2、掛載命令格式

[root@localhost ~]#mount [-t 文件系統] [-L 卷標名]

[-o 特殊選項] 設備文件名掛載點

選項:

  -t 文件系統:加入文件系統類型來指定掛載的類型,可以ext3、ext4、iso 9660等文件系統

  -L 卷標名:  掛載指定卷標分區,而不是安裝設備文件名掛載

  -o 特殊選項:可以指明掛載的額外選項

參數 說明
atime/noatime 更新訪問時間/不更新訪問時間。訪問分區文件時,是否更新文件的訪問時間,默認為更新
async/sync 異步/同步,默認為異步
auto/noauto 自動/手動,mount -a命令執行時,是否會自動安裝/etc/fstab文件內容掛載,默認為自動
defaults 定義默認值,相當於rw,suld,dev,exec,auto,nouser,async這七個選項
exec/noexec 執行/不執行,設定是否允許在文件系統中執行可執行文件,默認是exec允許
remount 重新掛載已經掛載的文件系統,一般用於指定修改特殊權限
rw/ro 讀寫/只讀,文件系統掛載時,是否具有讀寫權限,默認是rw  
suld/nosuid  具有/不具有SUID權限,設定文件系統是否具有SUID和SGID的權限,默認是具有
user/nouser 允許/不允許普通用戶掛載,設定文件系統是否允許普通用戶掛載,默認是不允許,只有root可以掛載分區
usrquota 寫入代表文件系統支持用戶磁盤配額,默認不支持
grpquota 寫入代表文件系統支持組磁盤配額,默認不支持

 

[root@localhost ~]#mount -o remount,noexec /home

#重新掛載/boot分區,並使用noexec權限

[root@localhost sh]#cd /home

[root@localhost boot]#vi hello.sh

[root@localhost boot]#chmod 775 hello.sh

[root@localhost boot]#./hello.sh

[root@localhost boot]#mount -o remount.exec /home

#記得改回來,要不會影響系統啟動的

 

掛載光盤和U盤

1、掛載光盤

[root@localhost ~]mkdir /mnt/cdrom

#建立掛載點

 

[root@localhost ~]#mount -t iso9660 /dev/cdrom /mnt/cdrom

#掛載光盤

 

[root@localhost ~]#mount /dev/sr0 /mnt/cdrom

 

2、卸載命令

[root@localhost ~]#umount 設備文件名或掛載點

[root@localhost ~]#umount /mnt/cdrom

 

3、掛載U盤

[root@localhost ~]#fdisk -l

#查看U盤設備文件名

[root@localhost ~]#mount -t vfat /dev/sdb1 /mnt/usb/

 

注意:Linux默認是不支持NTFS文件系統的

 

 

[root@localhost boot]#

 

支持NTFS文件系統

1、下載NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g-download/

 

2、安裝NTFS-3G

[root@localhost ~]#tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz

#解壓

[root@localhost ~]#cd ntfs-3g_ntfsprogs-2013.1.13

#接入解壓目錄

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure
#編譯器准備.沒有指定安裝目錄,安裝到默認位置中

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make
#編譯

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install
#編譯安裝

 

3、使用

  [root@localhost ~]# mount -t ntfs-3g 分區設備文件名 掛載點

 

fdisk分區

fdisk命令分區過程

1、添加新硬盤(虛擬機添加)

2、查看新硬盤

[root@localhost ~]#fdisk -l

3、使用fdisk命令分區

[root@localhost ~]#fdisk /dev/sdb

 

 

4、重新讀取分區表信息

[root@localhost ~]#partprobe

 

5、格式化分區

[root@localhost ~]#mkfs -t ext4 /dev/sdb1

 

6、建立掛載點並掛載

[root@localhost ~]#mkdir /disk1

[root@localhost ~]#mount /dev/sdb1 /disk1/

 

分區自動掛載與fstab文件修復

1、/etc/fstab文件

  · 第一字段:分區設備文件名或UUID(硬盤通用唯一識別碼)

  · 第二字段:掛載點

  · 第三字段:文件系統名稱

  · 第四字段:掛載參數

  · 第五字段:指定分區是否被dump備份,0代表不備份,1代表每天備份,2代表不定期備份

  · 第六字段:指定分區是否被fsck檢測,0代表不檢測,其他數字代表檢測的優先級,那么當然1的優先級比2高

 

2、分區自動掛載

[root@localhost ~]#vi /etc/fstab

…省略部分輸出…

/dev/sdb1    /disk1      ext4  defaults    1  2

 

[root@localhost ~]#mount -a

#依據配置文件/etc/fstab的內容,自動掛載

 

3、/etc/fstab文件修復

[root@localhost ~]# mount -o remount.rw /

 

分配swap分區

1、free命令

[root@localhost ~]#free

#查看內存與swap分區使用情況

  · cached(緩存):是指把讀取出來的數據保存在內存當中,當再次讀取時,不用讀取硬盤而直接從內存當中讀取,加速了數據的讀取過程

  · buffer(緩沖):是指在寫入數據時,先把分散的寫入操作保存到內存當中,當達到一定程度再集中寫入硬盤,減少了磁盤碎片和硬盤的反復尋道,加速了數據的寫入過程

 

2、新建swap分區

[root@localhost ~]#fdisk /dev/sdb

別忘記把分區ID改為82

 

3、格式化

[root@localhost ~]# mkswap /dev/sdb6

 

4、加入swap分區

[root@localhost ~]#swapon /dev/sdb6

#加入swap分區

 

[root@localhost ~]#swapoff /dev/sdb6

#取消swap分區

 

5、swap分區開機自動掛載

[root@localhost ~]# vi /etc/fstab

/dev/sdb6  swap  swap  defaults  0 0

 

第十講  shell基礎

Shell概述

1、Shell是什么

  · Shell是一個命令行解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。

 

 

  · Shell還是一個功能相當強大的編程語言,易編寫,易調試,靈活性較強。Shell是解釋執行的腳本語言,在Shell中可以直接調用Linux系統命令。

 

2、Shell的分類

  · Bourne Shell:從1979起Unix就開始使用Bourne Shell,Bourne Shell的主文件名為sh。

  · C Shell:C Shell主要在BSD版的Unix系統中使用,其語法和C語言相類似而得名

  · Shell的兩種主要語法類型有Bourne和C,這兩種語法彼此不兼容。Bourne家族主要包括sh、Bash、psh、zsh;C家族主要包括:csh、tcsh

  · Bash:Bash與sh兼容,現在使用的Linux就是使用Bash作為用戶的基本Shell。

 

3、Linux支持的Shell

  · /etc/shells

 

Shell腳本的執行方式

1、echo輸出命令

[root@localhost ~]#echo [選項] [輸出內容]

選項:

  -e:  支持反斜線控制的字符轉換

 

 

 

[root@localhost ~]#echo -e "ab/bc"

#刪除左側字符

 

[root@localhost ~]#echo -e "a\tb\tc\nd\te\tf"

#制表符與換行符

 

[root@localhost ~]#echo -e

"x61\t\x62\t\x63\n\x64\t\x65\t\x66"

#按照十六進制ASCII碼也同樣可以輸出

 

2、第一個腳本

[root@localhost sh]# vi hello.sh

#!/bin/Bash

#The first program

#Author:shenchao (E-mail:)


Echo -e "Mr.Shen Chao is the most honest man in LampBrother"

3、腳本執行

  · 賦予執行權限,直接運行

    - chmod 755 hello.sh

    - ./hello.sh

  · 通過Bash調用執行腳本

    - bash hello.sh

  

 Bash的基本功能

1、歷史命令

[root@localhost ~]#history [選項] [歷史命令保存文件]

選項:

  -c:  清空歷史命令

  -w:  把緩存中的歷史命令寫入歷史命令保存文件~/.bash_history

 

  ` 歷史命令默認會保存1000條,可以在環境變量配置文件/etc/profile中進行修改

 

歷史命令的調用

  · 使用上、下箭頭調用以前的歷史命令

  · 使用“!n”重復執行第n條歷史命令

  · 使用“!!”重復執行上一條命令

  · 使用“!字串”重復執行最后一條以該字串開頭的命令

 

2、命令與文件補全

  · 在Bash中,命令與文件補全是非常方便與常用的功能,我們只要在輸入命令或文件時,按“Tab”鍵就會自動進行補全。

 

命令別名與常用快捷鍵

1、命令別名

[root@localhost ~]#alias 別名='原命令'

#設定命令別名

 

[root@localhost ~]#alias

#查詢命令別名

 

命令執行時順序

1、第一順位執行用絕對路徑或相對路徑執行的命令。

2、第二順位執行別名。

3、第三順位執行Bash的內部命令。

4、第四順位執行按照$PATH環境變量定義的目錄查找順序找到的第一個命令。

 

讓別名永久生效

[root@localhost ~]#vi /root/.bashrc

 

刪除別名

[root@localhost ~]#unalias 別名

 

2、Bash常用快捷鍵

 

輸入輸出重定向

1、標准輸入輸出

設備 設備文件名 文件描述符 類型
鍵盤 /dev/stdin 0 標准輸入
顯示器 /dev/sdtout 1 標准輸出
顯示器 /dev/sdterr 2   標准錯誤輸出

 

2、輸出重定向

 

 

 

 

 

3、輸入重定向

[root@localhost ~]# wc [選項][文件名]

選項:

  -c  統計字節數

  -w  統計單詞數

  -l  統計行數

 

  · 命令<文件    把文件作為命令的輸入

 

多命令順序執行與管道符

1、多命令順序執行

 

 例子:

[root@localhost~]#ls;date;cd /user;pwd

 

[root@localhost ~]#dd if=輸入文件 of=輸出文件 bs=字節數 count=個數

選項:

  if=輸入文件    制定源文件或源設備

  of=輸出文件    制定目標文件或目標設備

  bs=字節數    制定一次輸入/輸出多少字節,即把這些字節看做一個數據塊

  count=個數    制定輸入/輸出多少個數據塊

例子:

  [root@localhost ~]#date;dd if=/dev/zero of=/root/testfile bs=1k count=100000;date

 

[root@localhost ~]#ls anaconda-ks.cfg && echo yes

[root@localhost ~]#ls /root/test || echo "no

[root@localhost ~]#命令 && echo yes || echo no

 

2、管道符

命令格式:

[root@localhost ~]#命令1 | 命令2

#命令1的正確輸出作為命令2的操作對象

顏色顯示

 

例子:

[root@localhost ~]#ll -a /etc/ | more

[root@localhost ~]#netstat -an | grep "ESTABLISHEN"

 

[root@localhost ~]#grep [選項] “搜索內容” 文件名

選項:

  -i:  忽略大寫

  -n:  輸出行號

  -v:  反向查找

  --color=auto  搜索出的關鍵字用顏色顯示

 

通配符和其他特殊符號

1、通配符

 

 

 

[root@localhost ~]# cd /tmp/
[root@localhost ~]#rm -rf *
[root@localhost ~]#touch abc
[root@localhost ~]#touch abcd
[root@localhost ~]#touch 012
[root@localhost ~]#touch 0abc
[root@localhost ~]#ls ?abc
[root@localhost ~]#ls [0-9]*
[root@localhost ~]#ls [^0-9]*

 

2、Bash中其他特殊符號

 

 

單引號與雙引號

[root@localhost ~]#name=sc
[root@localhost ~]#echo '$name'
[root@localhost ~]#echo '$name'
[root@localhost ~]#echo ‘$(date)’
[root@localhost ~]#echo '$(date)'

 

Bash變量

用戶自定義變量

1、什么是變量

  · 變量是計算機內存的單元,其中存放的值可以改變。當shell腳本需要保存一些信息時,如一個文件名或是一個數字,就把它存放在一個變量中。每個變量有一個名字,所以很容易引用它。使用變量可以保存有用信息,使系統獲知用戶相關設置,變量也可以用於保存暫時信息。

 

2、變量設置規則

  · 變量名稱可以由字母、數字和下划線組成,但是不能以數字開頭。如果變量名是“2name”則是錯誤的。

  · 在Bash中,變量的默認類型都是字符串型,如果要進行數值運算,則必需指定類型為數值型。

  · 變量用等號連接值,等號左右兩側不能有空格

  · 變量的值如果有空格,需要使用單引號或雙引號包括。

  · 在變量的值中,可以使用“\”轉移符。

  · 如果需要增加變量的值,那么可以進行變量值的疊加。不過變量需要用雙引號包含“$變量名”或用${變量名}包含。

  · 如果是把命令的結果作為變量值賦予變量,則需要使用反引號或$()包含命令。

  · 環境變量名建議大寫,便於區分。

 

3、變量分類

  · 用戶自定義變量

  · 環境變量:這種變量中主要保存的是和系統操作環境相關的數據

  · 位置參數變量:這種變量主要是用來向腳本當中傳遞參數或數據的,變量名不能自定義,變量作用是固定的。

  · 預定義變量:是Bash中已經定義好的變量,變量名不能自定義,變量作用也是固定的。

 

4、本地變量

  · 變量定義

  [root@localhost ~]#name="shen chao"

  ·變量疊加

  [root@localhost ~]#aa=123

  [root@localhost ~]#aa="$aa"456

  [root@localhost ~]#aa=${aa}789

  ·變量調用

  [root@localhost ~]#echo $name

  ·變量查看

  [root@localhost ~]#set

  ·變量刪除

  [root@localhost ~]#unset name

 

1、環境變量是什么

  · 用戶自定義變量只在當前的shell中生效,而環境變量會在當前Shell和這個Shell的所有子Shell當中生效。如果把環境變量寫入相應的配置文件,那么這個環境變量就會在所有的Shell中生效。

 

2、設置環境變量

export 變量名=變量值

#申明變量

 

env

#查詢變量

 

unset 變量名

#刪除變量

 

3、系統常見環境變量

  · PATH:系統查找命令的路徑

  [root@localhost ~]#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/sh

  #PATH變量

 

  · PS1:定義系統提示符的變量

  

 

位置參數變量

1、位置參數變量

位置參數變量 作用
$n n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數需要用大括號包含,如${10}
$* 這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體
$@ 這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待
$# 這個變量代表命令中所有參數的個數

 

例子1:

  #!/bin/bash

  num1=$1

  num2=$2

  sum=$(($num1+$num2))

  #變量sum的和是num1加num2

  echo $sum

  #打印變量sum的值

 

例子2:

#!/bin/bash

echo "A total of $# parameters"

#使用$#代表所有參數的個數

echo "The parameters is:$*"

#使用$*代表所有的參數

echo "The parameters is:$@"

#使用$@也代表所有參數

 

例子3:¥*與$@的區別

#!/bin/bash

for i in "$*"

#$*中的所有參數看成是一個整體,所以這個for循環只會循環一次

  do

    echo "The parameters is:$i"

  done

  x=1

  for y in "$@"

  #$@中的每個參數都看成是獨立的,所以“$@”中有幾個參數,就會循環幾次

  do

    echo "The parameter$x is:$y"

    x=$(($x+1))

  done

 

預定義變量

1、預定義變量

預定義變量 作用
$? 最后一次執行的命令的返回狀態。如果這個變量的值為0,證明上一個命令正確執行;如果這個變量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了
$$ 當前進程的進程號(PID)
$! 后台運行的最后一個進程的進程號(PID)

 

2、接收鍵盤輸入

[root@localhost ~]#read [選項][變量名]

選項:

  -p “提示信息”:在等待read輸入時,輸出提示信息

  -t 秒數:    read命令會一直等待用戶輸入,使用此選項可以指定等待時間

  -n 字符數:    read命令只接受指定的字符數,就會執行

  -s:      隱藏輸入的數據,適用於機密信息的輸入

 

Bash運算符

數值運算和運算符

1、declare聲明變量類型

[root@localhost ~]decaler [+/-][選項] 變量名

選項:

  -: 給變量設定類型屬性

  +:  取消變量的類型屬性

  -i:  將變量聲明為整數型(integer)

  -x:  將變量聲明為環境變量

  -p:  顯示指定變量的被聲明的類型

 

2、數值運算——方法1

[root@localhost ~]# aa=11

[root@localhost ~]# bb=22

#給變量aa和bb賦值

[root@localhost ~]#decaler -i cc=$aa+$bb

 

方法2:expr或let數值運算工具

[root@localhost ~]#aa=11

[root@localhost ~]#bb=22

#給變量aa和變量bb賦值

[root@localhost ~]#dd=$(expr $aa + $bb)

#dd的值是aa和bb的和。注意“+”號左右兩側必須有空格

 

方法3:“$((運算式))”或“$[運算式]”

[root@localhost ~]#aa=11

[root@localhost ~]#bb=22

[root@localhost ~]#ff=$(($aa+$bb))

[root@localhost ~]#gg=$[$aa+$bb]

 

3、運算符

 

 

 

[root@localhost ~]#aa=$(((11+3)*3/2))

#雖然乘和除的優先級高於加,但是通過小括號可以調整運算優先級

 

[root@localhost ~]#bb=$((14%3))

#14不能被3整除,余數是2

 

[root@localhost ~]#cc=$((1 && 0))

#邏輯與運算只有想與的兩邊都是1,與的結果才是1,否則與的結果是0。

 

變量測試與內容替換

 

 

 

例子1:測試x=${y-新值}

[root@localhost ~]#unset y

#刪除變量

 

[root@localhost ~]#x=${y-new}

#進行測試

 

[root@localhost ~]#echo $x

new

#因為變量y不存在,所以x=new

 

[root@localhost ~]#y""

#給變量y賦值為空

 

[root@localhost ~]#x=${y-new}

#進行測試

 

[root@localhost ~]#echo $x

 

環境變量配置文件

環境變量配置文件簡介

1、source命令

[root@localhost ~]#source 配置文件

[root@localhost ~]#.配置文件

 

2、環境變量配置文件

  · 環境變量配置文件中主要是定義對系統的操作環境生效的系統默認環境變量,比如PATH、HISTSIZE、PS1、HOSTNAME等默認環境變量。

  ·/etc/profile

  ·/etc/profile.d/*.sh

  `~/.bash_profile

  `~/.bashrc

  `/etc/bashrc

 

 

 

/etc/profile的作用:

  ·  USER變量:

  ·  LOGNAME變量:

  ·  MAIL變量:

  ·  PATH變量:

  ·  HOSTNAME變量:

  ·  HISTIZE變量:

  ·  umask:

  ·  調動/etc/profile.d/*.sh文件

 

~/.bash_profile的作用

  ·調用了~/.bashrc文件。

  ·在PATH變量后面加入了“:$HOME/bin”這個目錄

 

其他配置文件和登錄信息

1、注銷時生效的環境變量配置文件

  ·~/.bash_logout

2、其他配置文件

  ·~/bash_history

3、Shell登錄信息

  · 本地終端歡迎信息:/etc/issue

 

   ` 遠程終端歡迎信息:/etc/issue.net

    - 轉義符在/etc/issue.net文件中不能使用

    - 是否顯示此歡迎信息,由ssh的配置文件/etc/ssh/sshd_config決定,加入“Banner /etc/issue.net”行才能顯示(記得重啟SSH服務)

 

  · 登錄后歡迎信息:/etc/mod

  不管是本地登錄,還是遠程登錄,都可以顯示此歡迎信息

 

第十一講  Shell編程

11.1  基礎正則表達式

1、正則表達式與通配符

  ·  正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep、awk、sed等命令可以支持正則表達式。

  ·  通配符用來匹配符合條件的文件名,通配符是完全匹配。ls、find、cp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配了。

 

2、基礎正則表達式

 

 

  “*”前一個字符匹配0次,或任意多次

  ·  grep"a*"test_rule.txt

  #匹配所有內容,包括空白行

  ·  grep"aa*"test_rule.txt

  #匹配至少包含有一個a的行

  ·  grep"aaa*"test_rule.txt

  #匹配最少包含兩個連續a的字符串

  ·  grep "aaaaa"test_rule.txt

  #則會匹配最少包含四個個連續a的字符串

 

 

“.”匹配除了換行外任意一個字符

  · grep "s..d"test_rule.txt

#"s..d"會匹配在s和d這兩個字母之間一定有兩個字符的單詞

  · grep "s.*d"test_rule.txt

#匹配在s和d字母之間有任意字符

  · grep ".*"test_rule.txt

#匹配所有內容

 

“^”匹配行首,“$”匹配行尾

  · grep "^M" test_rule.txt

#匹配以大寫“M”開頭的行

  · grep "n$" test_rule.txt

#匹配以小寫“n”結尾的行

  · grep -n "^$"test_rule.txt

#會匹配空白行

 

“[^]”匹配除中括號的字符以外的任意一個字符

  · grep "^[^a-z]" test_rule.txt

#匹配不用小寫字母開頭的行

  · grep "^[^a-zA-Z]"test_rule.txt

#匹配不用字母開頭的行

 

“\”轉義符

  · grep "\.$" test_rule.txt

#匹配使用“.”結尾的行

 

“\{n,m}”匹配其前面的字符至少出現n次,最多出現m次

  · grep "sa\{1,3}i"test_rule.txt

#匹配在字母s和字母i之間有最少一個a,最多三個a

 

11.2  字符截取命令

11.2.1  cut字段提取命令

[root@localhost ~]#cut [選項] 文件名

選項:

  -f 列號:    提取第幾列

  -d 分隔符:    按照指定分隔符分隔列

 

[root@localhost ~]#vi student.txt

ID    Name    gender    Mark

1     Liming    M      86

2     Sc      M      90

3     Gao     M      83

 

[root@localhost ~]#cut -f 2 student.txt

 

[root@localhost ~]#cut -f 2,3 student.txt

 

[root@localhost ~]#cut -d ":" -f 1,3

  /etc/passwd

 

cut命令的局限

[root@localhost ~]#df -h | cut -d " " -f 1,3

 

11.2.2  printf命令

printf  '輸出類型輸出格式'  輸出內容

輸出類型:

  %ns:  輸出字符串。n是數字指輸出幾個字符

  %ni:  輸出整數。n是數字指代輸出幾個數字

  %m.nf:  輸出浮點數。m和n是數字,指代輸出的整數位數和小數位數。如%8.2f共輸出8位數,其中2位是小數,6位是整數。

 

輸出格式:

  \a:  輸出警告聲音

  \b:  輸出退格鍵,也就是Backspace鍵

  \f:  清楚屏幕

  \n:  換行

  \r:  回車,也就是Enter鍵

  \t:  水平輸出退格鍵,也就是Tab鍵

  \v:  垂直輸出退格鍵,也就是Tab鍵

 

[root@localhost ~]#printf %s 1 2 3 4 5 6
[root@localhost ~]#printf %s %s %s 1 2 3 4 5 6
[root@localhost ~]#printf '%s %s %s`1 2 3 4 5 6
[root@localhost ~]#printf '%s %s %s\n' 1 2 3 4 5 6 

 

在awk命令的輸出中支持print和pintf命令

  · print:print會在每個輸出之后自動加入一個換行符(Linux默認沒有print命令)

  · printf:printf是標准格式輸出命令,並不會自動加入換行符,如果需要換行,需要手工加入換行符

 

#awk '{printf $2 "\t" $6 "\n"}' student.txt

#df -h | awk 'print $1 "\t" $3'

 

BEGIN

#awk 'BEGIN' {printf 'This is a transcript \n'}

{printf $2 "\t" $6 "\n"}' student.txt

 

FS內置變量

#cat /etc/passwd | grep '/bin/bash' | \ awk 'BEGIN {FS=":"} {printf $1 "\"' $3 "\n"}'

 

11.2.4  sed命令

sed命令

  ·  sed是一種幾乎包括在所有UNIX平台(包括Linux)的輕量級流編輯器。sed主要是用來將數據進行選取、替換、刪除、新增的命令。

 

[root@localhost ~]#sed [選項] '[動作]' 文件名

選項:

  -n:  一般sed命令會把所有數據都輸出到屏幕,如果加入此選擇,則只會把經過sed命令處理的行輸出到屏幕

  -e:  允許對輸入數據應用多條sed命令編輯

  -i:  用sed的修改結果直接修改讀取數據的文件,而不是由屏幕輸出。

動作:

  a \:  追加,在當前行后添加一行或多行。添加多行時,除最后一行外,每行末尾需要用“\”代表數據未完結。

  c \:  行替換,用c后面的字符串替換原數據行,替換多行時,除最后一行外,每行末尾需用“\”代表數據未完結

  o \:  插入,在當期行前插入一行或多行。插入多行時,除最后一行外,每行末尾需要用“\”代表數據未完結。

  d:  刪除,刪除指定的行。

  p:  打印,輸出指定的行

  s:  字串替換,用一個字符串替換另外一個字符串。格式為“行范圍s/舊字串/新字串/g”(和vim中的替換格式類似)。

 

行數據操作

[root@localhost ~]#sed ‘2p’ student.txt

#查看文件的第二行

 

[root@localhost ~]#sed -n '2p' student.txt

 

[root@localhost ~]#sed '2,4d' student.txt

#刪除第二行到第四行的數據,但不修改文件本身

 

[root@localhost ~]#sed '2a hello' student.txt

#在第二行后追加hello

 

[root@localhost ~]#sed '2i hello' \

world` student.txt

#在第二行前插入兩行數據

 

#sed '2c No such person' student.txt

#數據替換

 

11.3  字符處理命令

1、排序命令sort

[root@localhost ~]#sort [選項] 文件名

選項:

  -f:  忽略大小寫

  -n:  以數值型進行排序,默認使用字符串型排序

  -r:  反向排序

  -t:  指定分隔符,默認是分隔符是制表符

  -k n[,m]:按照指定的字符范圍排序。從第n字段開始,m字段結束(默認到行尾)

 

[root@localhost ~]#sort /etc/passwd
#排序用戶信息文件

[root@localhost ~]#sort -r /etc/passwd
#反向排序

[root@localhost ~]#sort -t ":" -k 3,3 /etc/passwd
#指定分隔符是“:”,用第三字段開頭,第三字段結尾排序,就是只用第三字段排序

[root@localhost ~]#sort -n -t ":" -k 3,3 /etc/passwd

 

2、統計命令wc

[root@localhost ~]#wc [選項] 文件名

選項:

  -l:  只統計行數

  -w:  只統計單詞數

  -m:  只統計字符數

 

11.4  條件判斷

1、按照文件類型進行判斷

 

 

兩種判斷格式

[root@localhost ~]#test -e /root/install.log

 

[root@localhost ~]#[-e /root/install.log]

 

[-d /root]&& echo "yes" || echo "no"

#第一個判斷命令如果正確執行,則打印“yes”,否則則打印“no”

 

2、按照文件權限進行判斷

 

 

3、兩個文件之間進行比較

 

 

 

ln /root/student.txt /tmp/stu.txt

#創建個硬鏈接吧

 

[ /root/student.txt -ef /tmp/stu.txt]&& echo "yes" || echo "no"

yes

#用test測試下,果然有用

 

4、兩個整數之間比較

 

 

5、字符串的判斷

 

 

 

aa=11

bb=22

#給變量aa和變量bb賦值

["$aa"=="bb"]&& echo "yes" || echo "no" no

#判斷兩個變量的值是否相等,明顯不相等,所以返回no。

 

6、多重條件判斷

 

11.5  流程控制

11.5.1  if語句

1、單分支if條件語句

if [ 條件判斷式 ];then

  程序

fi

或者

if [ 條件判斷式 ]

  then

    程序

fi

 

單分支條件語句需要注意幾個點

  ·  if語句使用fi結尾,和一般語言使用大括號結尾不同

  ·  [ 條件判斷式 ]就是使用test命令判斷,所以中括號和條件判斷式之間必須有空額

  ·  then后面跟符合條件之后執行的程序,可以放在[]之后,用“:”分割。也可以換行寫入,就不需要“:”了。

 

 

2、雙分支if條件語句

if [條件判斷式]

  then

    條件成立時,執行的程序

  else

    條件不成立時,執行的另一個程序

  fi

 

例子1:備份mysql數據庫

#!/bin/bash

#備份mysql數據庫。

# Author:shenchao (E-mail:shenchao@lampbrother.net)

 

ntpdate asia.pool.ntp.org &>/dev/null

#同步系統時間

date=$(date +%y%m%d)

#把當前系統時間按照“年月日”格式賦予變量date

size=$(du -sh /var/lib/mysql)

#統計mysql數據庫的大小,並把大小賦予size變量

 

11.5.2  case語句

 多分支case條件語句

  ·  case語句和if...elif...else語句一樣都是多分支條件語句,不過和if多分支條件語句不同的是,case語句只能判斷一種條件關系,而if語句可以判斷多種條件關系。

 

case $變量名 in

  “值1”)

    如果變量的值等於值1,則執行程序1

    ;;

  "值2)

    如果變量的值等於值2,則執行程序2

    ;;

  …省略其他分支…

  *)

    如果變量的值都不是以上的值,則執行此程序

    ;;

  esac

 

 

 

11.5.3  for循環

語法一

for 變量 in 值1 值2 值3…

  do

    程序

  done

 

 

 

 

 

 

語法二

  for((初始值;循環控制條件;變量變化))

    do

      程序

    done

 

 

 

 

11.5.4  while循環與until循環

1、while循環

·  while循環是不定循環,也稱作條件循環。只要條件判斷式成立,循環就會一直繼續,直到條件判斷式不成立,循環才會停止。這就和for的固定循環不太一樣了。

 

while [條件判斷式]

  do

    程序

  done

 

 

 

2、until循環

  ·until循環,和while循環相反,until循環時只要條件判斷式不成立則進行循環,並執行循環程序。一旦循環條件成立,則終止循環。

 

Linux服務管理

12.1  服務簡介與分類

1、服務的分類

 

 

 

啟動與自啟動

  ·  服務啟動:就是在當前系統中讓服務運行,並提供功能。

  ·  服務自啟動:自啟動是指讓服務在系統開機或重啟動之后,隨着系統的啟動而自動啟動服務。

 

查詢已安裝的服務

  ·  RPM包安裝的服務

    - chkconfig --list

  #查看服務自啟動狀態,可以看到所有RPM包安裝的服務

 

  ·  源碼包安裝的服務

    - 查看服務安裝位置,一般是/usr/local/下

 

RPM安裝服務和源碼包安裝服務的區別

  ·  RPM安裝服務和源碼包安裝服務的區別就是安裝位置的不同

    - 源碼包安裝在指定位置,一般是/usr/local/

    - RPM包安裝在默認位置中

 

12.2  RPM包安裝服務的管理

12.2.1  獨立服務的管理

 

 

  ·  /etc/init.d/:啟動腳本位置

  ·  /etc/sysconfig/:初始化環境配置文件位置

  ·  /etc/:配置文件位置

  ·  /etc/xinetd.conf:xinetd配置文件

  ·  /etc/xinetd.d/:基於xinetd服務的啟動腳本

  ·  /etc/lib/:服務產生的數據放在這里

  ·  /var/log/:日志

 

2、獨立服務的啟動

  ·  /etc/init.d獨立服務名  start|stop|status|restart|

  ·  service 獨立服務名  start|stop|status|restart|

 

3、獨立服務的自啟動

  ·  chkconfig [--level 運行級別] [獨立服務名] [on|off]

  ·  修改/etc/rc.d/rc.local文件

  ·  使用ntsysv命令管理自啟動

 

12.3  源碼包安裝服務的管理

1、源碼包安裝服務的啟動

  ·  使用絕對路徑,調用啟動腳本來啟動。不同的源碼包的啟動腳本不同。可以查看源碼包的安裝說明,查看啟動腳本的方法。

 

/usr/local/apache2/bin/apachectl start|stop

 

2、源碼包服務的自啟動

[root@lcaohost ~]#vi /etc/rc.d/rc.local

加入

/usr/local/apache2/bin/apachectl start

 

3、讓源碼包服務被服務管理命令識別

  ·  讓源碼包的apache服務能被service命令管理啟動

ln -s /usr/local/apache2/bin/apachetcl /etc/init.d/apache

 

  ·  讓源碼包的apache服務能被chkconfig與ntsysv命令管理自啟動

 

  vi /etc/init.d/apache

  #chkconfig:35 86 76

  #指定mod腳本可以被chkconfig命令管理。格式是:chkconfig:運行級別 啟動順序 關閉順序

  #description:source package apache

  #說明,內容隨意

 

 

12.4  服務管理總結

常見服務的作用

 

 

Linux系統管理

13.1  進程管理

13.1.1  進程查看

1、進程簡介

  ·  進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,並占用一定的系統資源。

 

2、進程管理的作用

  ·  判斷服務器健康狀態

  ·  查看系統中所有進程

  ·  殺死進程

 

3、查看系統中的所有進程

[root@localhost ~]#ps aux

#查看系統中所有進程,使用BSD操作系統格式

[root@localhost ~]ps -le

#查看系統中所有進程,使用Linux標准命令格式。

 

·USER:該進程是由哪個用戶產生的;

·PID:進程的ID號

·%CPU:該進程占用CPU資源的百分比,占用越高,進程越耗費資源;

·%MEM:該進程占用物理內存的百分比,占用越高,進程越耗費資源;

·VSZ:該進程占用虛擬內存的大小,單位KB

·RSS:該進程占用虛擬內存的大小,單位KB;

·TTY:該進程是在哪個終端中運行。其中tty1-tty7代表本地控制台終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-256代表虛擬終端。

·STAT:進程狀態。常見的狀態有:R:運行、S:睡眠、T:停止狀態、s:包含子進程、+:位於后台

·START:該進程的啟動時間

·TIME:該進程占用CPU的運算時間,注意不是系統時間

·COMMAND:產生此進程的命令名

 

4、查看系統健康狀態

[root@localhost ~]#top [選項]

選項:

  -d 秒數:指定top命令每隔幾秒。默認是3秒

在top命令的交互模式當中可以執行的命令:

  ?或h:  顯示交互模式的幫助

  P:    以CPU使用率排序,默認就是此項

  M:    以內存的使用率排序

  N:    以PID排序

  q:    退出top

 

 

 

 

 

 

 

 

 

 

 

 

 

5、查看進程樹

[root@localhost ~]#pstree [選項]

選項:

  -p:顯示進程的PID

  -u:   顯示進程的所屬用戶

 

13.1.2  終止進程

1、kill命令

[root@localhost ~]#kill -l

#查看可用的進程信號

 

 

 

 

[root@localhost ~]#kill -l 22354

#重啟進程

 

[root@localhost ~]#kill 22368

#強制殺死進程

 

2、killall命令

[root@localhost ~]#killall [選項][信號]進程名

#按照進程名殺死進程

選項:

  -i:交互式,詢問是否要殺死某個進程

  -l:忽略進程名的大小寫

 

3、pkill命令

[root@localhost ~]#pkill [選項][信號]進程名

#按照進程名終止進程

選項:

  -t 終端號:按照終端號踢出用戶

 

13.2  工作管理

1、把進程放入后台

  ·  tar -zcf etc.tar.gz /etc &

  `  [root@localhost ~]#top 

  #在top命令執行的過程中,按下ctrl+z快捷鍵

 

2、查看后台的工作

[root@localhost ~]#jobs [-l]

選項:

  -l:顯示工作的PID

 

注:“+”號代表一個放入后台的工作,也是工作恢復時,默認恢復的工作。“-”號代表倒數第二個放入后台的工作

 

3、將后台暫停的工作恢復到前台執行

[root@localhost ~]#fg %工作號

參數:

  %工作號:  %號可以省略,但是注意工作號和PID的區別。

 

4、把后台暫停的工作恢復到后台執行

[root@localhost ~]#bg %工作號

注:后台恢復執行的命令,是不能和前台有交互的,否則不能恢復到后台執行

 

13.3  系統資源查看

1、vmstat命令監控系統資源

[root@localhost ~]#vmstat [刷新延時 刷新次數]

 

例如:

[root@localhost proc]#vmstat 3 1

 

2、dmesg開機時內核檢測信息

[root@localhost ~]#dmesg

[root@localhost ~]dmesg | grep CPU

 

3、free命令查看內存使用狀態

[root@localhost ~]#free [-b|-k|-m|-g]

選項:

  -b:以字節為單位顯示

  -k:以KB為單位顯示,默認就是以KB為單位顯示

  -m:以MB為單位顯示

  -g:以GB為單位顯示

 

緩存和緩沖的區別

·  簡單來說緩存(cache)是用來加速數據從硬盤中“讀取”的,而緩沖(buffer)是用來加速數據“寫入”硬盤的。

 

5、uptime

  #顯示系統的啟動時間和平均負載,也就是top命令的第一行。w命令也可以看到這個數據。

 

6、查看系統與內核相關信息

  [root@localhost ~]#uname [選項]

  選項:

    -a:查看系統所有相關信息;

    -r:查看內核版本

    -s:查看內核名稱

 

判斷當前系統的位數

[root@localhost ~]#file /bin/ls

 

查詢當前Linux系統的發行版本

[root@localhost ~]#lsb_release -a

 

7、列出進程打開或使用的文件信息

[root@localhost ~]#lsof [選項]

#列出進程調用或打開的文件的信息

選項:

  -c 字符串:只列出以字符串開頭的進程打開的文件

  -u 用戶名:只列出某個用戶的進程打開的文件

  -p pid:列出某個PID進程打開的文件

 

13.4  系統的定時任務

1、crond服務管理與訪問控制

[root@localhost ~]#service crond restart

 

[root@localhost ~]chkconfig crond on

 

2、用戶的crontab設置

[root@localhost ~]#crontab [選項]

選項:

  -e:  編輯crontab定時任務

  -l:  查詢crontab任務

  -r:  刪除當前用戶所有的crontab任務

 

 

 

 

第十四講  日志管理

14.1  日志管理簡介

1、日志服務

·  在CentOS 6.x中日志服務已經由rsyslogd取代了原先的syslogd服務。rsylogd日志服務更加先進,功能更多。但是不論該服務的使用,還是日志文件的格式其實都是和syslogd服務相兼容的,所以學習起來基本和syslogd服務一致。

 

·  rsyslogd的新特點:

  -  基於TCP網絡協議傳輸日志信息;

  -  更安全的網絡傳輸方式;

  -  有日志消息的及時分析框架;

  -  后台數據庫;

  -  配置文件中可以寫簡單的邏輯判斷;

  -  與syslog配置文件相兼容。

 

確定服務啟動

[root@localhost ~]#ps aux | grep rsyslogd

#查看服務是否啟動

 

chkconfig --list | grep rsyslog

#查看服務是否自啟動

 

2、常見日志的作用

 

 

 

 

  ·  除了系統默認的日志之外,采用RPM方式安裝的系統服務也會默認把日志記錄在/var/log/目錄中(源碼包安裝的服務日志是在源碼包指定目錄中)。不過這些日志不是由rsyslogd服務來記錄和管理的,而是各個服務使用自己的日志管理文檔來記錄自身日志。

 

 

14.2  rsyslogd日志服務

1、日志文件格式

·  基本日志格式包含以下四列:

    - 事件產生的時間;

    - 發生事件的服務器的主機名;

    - 產生事件的服務名或程序名;

    - 事件的具體信息。

 

2、/etc/rsyslog.conf配置文件

authpriv.*                        /var/log/secure              

#服務名稱[連接符號]日志等級                  日志記錄位置

#認證相關服務,所有日志等級                  記錄在

  /var/log/secure日志中

 

 

 

 

 

 

 

 

 

 

 

 

14.3  日志輪替

1、日志文件的命名規則

·  如果配置文件中擁有“dateext”參數,那么日志會用日期來作為日志文件的后綴,例如“secure-20130605”。這樣的話日志文件名不會重疊,所以也就不需要日志文件的改名,只需要保存指定的日志個數,刪除多余的日志文件即可。

·  如果配置文件中沒有“dateext”參數,那么日志文件就需要進行改名了。當第一次進行日志輪替時,當前的“secure”日志會自動改名為“secure.1”,然后新建“sercure”日志,用來保存新的日志。當第二次進行日志輪替時,‘secure.1“會自動改名為“secure.2”,當前的“secure”日志會自動改名為“secure.1”,然后也會新建“secure”日志,用來保存新的日志,以此類推。

 

2、logrotate配置文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、把apache日志加入輪替

[root@localhost ~]#vi /etc/logrote.conf

/usr/local/apache2/logs/access_log {

  daily

  create

  rotate 30

}

 

4、logrotate命令

[root@localhost ~]#logrotate [選項] 配置文件名

選項:

  如果此命令沒有選項,則會按照配置文件中的條件進行日志輪替

  -v:顯示日志輪替過程。加了-v選項,會顯示日志的輪替的過程

  -f:強制進行日志輪替。不管日志輪替的條件是否已經符合,強制配置文件中所有的日志進行輪替。

 

第十五講  啟動管理

15.1  CentOS 6.x啟動管理

15.1.1 系統運行級別

1、運行級別

 

 

2、運行級別命令

[root@localhost ~]#runlevel

#查看運行級別命令

 

[root@localhost ~]#init 運行級別

#改變運行級別命令

 

3、系統默認運行級別

[root@localhost ~]#vim /etc/inittab

id:3:initdefault:

#系統開機后直接進入哪個運行級別

 

15.1.2  系統啟動過程

initramfs內存文件系統

·  CentOS 6.x中使用initramfs內存文件系統取代了CentOS 5.x中的initrd RAM Disk。他們的作用類似,可以通過啟動引導程序加載到內存中,然后加載啟動過程中所需要的內核模塊,比如USB、SATA、SCSI硬盤的驅動和LVM、RAID文件系統的驅動。

 

第十六講  備份與恢復

16.1  備份概述

1、Linux系統需要備份的數據

  ·  /root/目錄:

  ·  /home/目錄:

  ·  /var/spool/mail/目錄:

  ·  /etc/目錄:

  ·  其他目錄:

 

  安裝服務的數據

  ·  apache需要備份的數據

    -  配置文件

    -  網頁主目錄

    -  日志文件

  ·  mysql需要備份的數據

    -  源碼包安裝的mysql:/usr/local/mysql/data/

    -  RPM包安裝的mysql:/var/lib/mysql/

 

2、備份策略

  ·  完全備份:完全備份就是指把所有需要備份的數據全部備份,當然完全備份可以備份整塊硬盤,整個分區或某個具體的目錄。

 

增量備份

 

 差異備份

 

16.2  dump和restore命令

1、dump命令

[root@localhost ~]#dump [選項] 備份之后的文件名 原文件或目錄

選項:

  -level:    就是我們說的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 -l uj -f /root/boot.bak1.bz2 /boot/

  #增量備份/boot分區,並壓縮

  dump -W

  #查詢分區的備份時間及備份級別的

 

備份文件或目錄

  dump -0j -f /root/etc.dump.bz2 /etc/

  #完全備份/etc/目錄,只能使用0級別進行完全備份,而不再支持增量備份

 

2、restore命令

[root@localhost ~]#restore [模式選項] [選項]

模式選項:restore命令常用的模式有以下四種,這四個模式不能混用。

  -C:比較備份數據和實際數據的變化

  -i:進入交互模式,手工選擇需要恢復的文件。

  -t:查看模式,用於查看備份文件中擁有哪些數據。

  -r:還原模式,用於數據還原。

選項:

  -f:指定備份文件的文件名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM