LINUX系統管理

觀其大綱

第1部分 Linux的基礎知識
第1章 Linux概述 
第2章 Linux系統的安裝
KickStart開始自動安裝 
PXE網絡安裝 
第3章 X Window圖形用戶界面和應用軟件 
第4章 Shell的基本應用
常用Shell命令
通配符
正則表達式
vim
第2部分 Linux的系統管理
第5章 用戶和組管理 
第6章 磁盤與文件系統管理
磁盤的識別與分區
建立和管理文件系統 
文件系統的掛載 
管理交換空間 
磁盤配額 
第7章 邏輯卷管理 
第8章 進程管理 
管理進程 
系統監視工具
計劃任務 
第9章 軟件管理
YUM
源代碼安裝
軟件包管理
第10章 服務的管理 
管理服務
服務的可用性
服務管理工具
第3部分 Linux的網絡配置
第11章 網絡基礎 
第12章 訪問網絡文件共享服務
網絡文件系統NFS 
SMB/CIFS通用網絡文件系統 
自動掛載網絡存儲服務 自動掛載(autofs)
第13章 管理常用網絡服務 
管理NTP服務
管理CUPS打印服務 
管理SSH服務 
管理VNC服務 
第14章 常用網絡服務器配置 
Web服務配置
FTP服務配置 
DNS服務配置
DHCP服務配置 
Mail服務配置 
第4部分 Linux的安全設置
第15章 Linux安全設置
文件的安全設置ACL 
文件系統的特殊權限:SUID/SGID/Sticky Bit 
磁盤的安全加密 
日志管理
第16章 LDAP網絡用戶配置
第17章 防火墻基本設置
iptables
第18章 管理SELinux
第5部分 Linux系統的故障排除
第19章 Linux引導過程與內核管理 
1引導過程
運行級別Runlevel
GRUB的更改
內核管理
內核模塊管理
配置內核參數
第20章 系統恢復與故障排除
系統故障排除基礎
修復引導問題 
救援模式

大綱細節

第1部分 Linux的基礎知識
第1章 Linux概述 2
1.1 Linux簡介 2
1.1.1 Linux系統的產生 2
1.1.2 Linux系統發展歷程 3
1.1.3 Linux系統的應用 4
1.2 Linux的特點和組成 5
1.2.1 Linux特點 5
1.2.2 Linux系統的組成 6
1.2.3 Linux與其他操作系統的區別 6
1.3 Linux的版本介紹 8
1.3.1 Linux內核的版本 8
1.3.2 Linux發行版本 10
1.3.3 RedHat Enterprise Linux 6.0簡介 12
第2章 Linux系統的安裝 18
2.1 通過Anaconda進行圖形安裝 18
2.1.1 使用Anaconda安裝 18
2.1.2 獲取Linux的安裝軟件 18
2.1.3 確定安裝硬件 19
2.1.4 啟動Anaconda安裝程序 20
2.2 安裝后的初始化配置 26
2.3 使用KickStart進行自動安裝 30
2.3.1 KickStart介紹 30
2.3.2 產生KickStart配置文件 31
2.3.3 開始自動安裝 33
2.3.4 KickStart文件的實例 34
2.4 PXE網絡安裝 35
第3章 X Window圖形用戶界面和應用軟件 40
3.1 X Window簡介 40
3.1.1 X Window工作原理 40
3.1.2 X Window桌面環境 41
3.2 GNOME桌面環境 41
3.2.1 桌面與系統面板 41
3.2.2 Nautilus文件管理器 43
3.2.3 GNOME首選項 44
3.2.4 GNOME系統設置 45
3.2.5 登錄窗口切換 46
3.3 Linux下的常用應用軟件 47
3.3.1 OpenOffice簡介 47
3.3.2 圖像處理軟件GIMP 49
3.3.3 看圖軟件Gwenview 50
3.3.4 文件查看器Document Viewer 50
3.3.5 網頁瀏覽器FireFox 51
3.3.6 電影播放機 52
第4章 Shell的基本應用 53
4.1 Shell命令概述 53
4.1.1 Shell簡介 53
4.1.2 Shell的啟動 54
4.1.3 Shell命令格式 55
4.1.4 常用Shell命令 56
4.2 Bash的應用 61
4.2.1 命令補齊 61
4.2.2 命令歷史記錄 62
4.2.3 命令別名 63
4.2.4 通配符 63
4.3 正則表達式、管道與重定向 64
4.3.1 正則表達式 64
4.3.2 管道與重定向 67
4.4 文本編輯器vim 69
4.4.1 vim簡介 69
4.4.2 vim的3種模式 70
4.4.3 vim的進入與退出 71
4.4.4 vim的基本操作命令 72
4.4.5 vim的高級命令 76
第2部分 Linux的系統管理
第5章 用戶和組管理 80
5.1 什么是用戶 80
5.1.1 用戶賬號文件/etc/passwd 80
5.1.2 用戶影子文件/etc/shadow 82
5.1.3 組賬號文件/etc/group 83
5.1.4 用戶組影子文件/etc/gshadow 84
5.2 用戶管理 85
5.2.1 添加用戶 85
5.2.2 刪除用戶 87
5.2.3 修改用戶信息 87
5.3 組管理 87
5.3.1 創建用戶組 87
5.3.2 刪除用戶組 88
5.3.3 修改用戶組信息 88
5.4 使用用戶管理器管理用戶和組 89
5.4.1 啟動Red Hat用戶管理器 89
5.4.2 添加用戶 90
5.4.3 修改用戶屬性 90
5.4.4 添加用戶組 91
5.4.5 修改用戶組屬性 92
第6章 磁盤與文件系統管理 93
6.1 磁盤的識別與分區 93
6.1.1 磁盤的分類 93
6.1.2 磁盤的組成 95
6.1.3 管理分區 97
6.2 建立和管理文件系統 99
6.2.1 管理文件系統 99
6.2.2 文件系統類型 101
6.2.3 文件系統結構 103
6.3 文件系統操作命令 104
6.3.1 文件與目錄操作命令 104
6.3.2 壓縮和解壓縮命令 106
6.3.3 文件和目錄權限管理命令 111
6.4 文件系統的掛載 113
6.4.1 使用命令行掛載文件系統 113
6.4.2 永久掛載文件系統 116
6.4.3 卸載文件系統 118
6.5 管理交換空間 118
6.6 磁盤配額 121
6.6.1 磁盤配額的作用 121
6.6.2 創建磁盤配額 122
第7章 邏輯卷管理 125
7.1 通用LVM概念和術語 125
7.1.1 LVM簡介 125
7.1.2 LVM基本術語 126
7.2 建立LVM卷 127
7.2.1 創建分區 127
7.2.2 創建物理卷 128
7.2.3 創建卷組 128
7.2.4 創建邏輯卷 128
7.2.5 創建文件系統 129
7.2.6 掛載文件系統 129
7.3 管理LVM卷 130
7.3.1 卸載卷 130
7.3.2 查看卷信息 130
7.3.3 調整LVM卷 132
7.4 LVM高級應用 134
7.4.1 卷快照 134
7.4.2 移動卷 136
7.5 LVM圖形化管理工具 138
7.5.1 管理物理卷 138
7.5.2 管理與配置邏輯卷 139
第8章 進程管理 142
8.1 什么是進程 142
8.1.1 進程的概念 142
8.1.2 進程的狀態 142
8.1.3 進程的類型 143
8.2 進程管理 143
8.2.1 啟動進程 143
8.2.2 管理進程 144
8.2.3 終止進程 148
8.2.4 桌面環境下管理進程 149
8.3 系統監視工具 150
8.3.1 桌面環境下監視系統 150
8.3.2 系統監視命令 151
8.4 計劃任務 152
8.4.1 一次性計劃任務——at調度 152
8.4.2 周期性計劃任務——cron調度 153
第9章 軟件管理 155
9.1 使用YUM 155
9.1.1 Linux下的可執行文件 155
9.1.2 傳統管理軟件的方法 156
9.1.3 RPM 156
9.1.4 YUM 157
9.2 安裝RPM軟件 164
9.2.1 RPM的介紹 164
9.2.2 RPM軟件包文件 165
9.2.3 RPM命令 166
9.3 源代碼安裝 170
9.3.1 獲得軟件 170
9.3.2 編譯前的準備工作 171
9.3.3 開始編譯 173
9.3.4 安裝與部署 174
9.4 軟件包管理 175
9.4.1 啟用軟件包管理工具 175
9.4.2 查看軟件 175
9.4.3 安裝與卸載軟件 177
第10章 服務的管理 178
10.1 管理服務 178
10.1.1 服務的介紹 178
10.1.2 服務的啟動管理 179
10.2 服務的可用性 181
10.2.1 設置獨立服務的開機啟用 181
10.2.2 使用chkconfig管理服務啟動 182
10.3 服務管理工具 183
10.3.1 ntsysv 183
10.3.2 服務設置 184
第3部分 Linux的網絡配置
第11章 網絡基礎 188
11.1 網絡配置基礎 188
11.2 網絡的基本配置 193
11.2.1 基本配置 193
11.2.2 高級配置 194
11.3 系統網絡配置文件 195
11.4 網絡設置工具 197
11.4.1 設置主機名稱命令hostname 197
11.4.2 配置網絡接口命令ifconfig 197
11.4.3 設置路由命令route 199
11.4.4 檢查網絡狀況命令netstat 199
11.4.5 ping命令 201
11.4.6 nslookup命令 202
11.4.7 traceroute命令 203
第12章 訪問網絡文件共享服務 204
12.1 網絡文件系統NFS 204
12.1.1 NFS服務簡介 204
12.1.2 配置NFS服務 205
12.1.3 NFS服務配置實例 206
12.2 SMB/CIFS通用網絡文件系統 207
12.2.1 Samba服務概述 207
12.2.2 配置Samba 208
12.2.3 創建Samba服務器 209
12.3 自動掛載網絡存儲服務 213
12.3.1 自動掛載(autofs)服務概述 213
12.3.2 配置autofs服務 213
12.3.3 autofs服務配置實例 215
第13章 管理常用網絡服務 217
13.1 管理NTP服務 217
13.1.1 NTP服務簡介 217
13.1.2 配置NTP服務 218
13.1.3 NTP的創建實例 219
13.2 管理CUPS打印服務 220
13.2.1 CUPS的介紹 220
13.2.2 CUPS的組件 221
13.2.3 管理CUPS服務 222
13.3 管理SSH服務 224
13.3.1 SSH服務簡介 224
13.3.2 配置SSH服務 225
13.3.3 SSH的管理 226
13.4 管理VNC服務 228
13.4.1 VNC概述 228
13.4.2 配置VNC服務 229
13.3.3 VNC的創建實例 230
第14章 常用網絡服務器配置 233
14.1 Web服務配置 233
14.1.1 Apache服務器 233
14.1.2 配置Apache服務器 234
14.1.3 創建Apache服務器 235
14.2 FTP服務配置 236
14.2.1 FTP服務器概述 236
14.2.2 配置vsftpd 237
14.2.3 創建FTP服務器 237
14.3 DNS服務配置 238
14.3.1 DNS介紹 238
14.3.2 DNS配置文件 239
14.3.3 創建DNS服務器 242
14.3.4 DNS測試命令 244
14.4 DHCP服務配置 245
14.4.1 DHCP服務器介紹 245
14.4.2 配置DHCP服務 245
14.4.3 創建DHCP服務器 247
14.5 Mail服務配置 248
14.5.1 SMTP服務器介紹 248
14.5.2 配置postfix服務 248
14.5.3 創建postfix服務器 250
第4部分 Linux的安全設置
第15章 Linux安全設置 254
15.1 文件的安全設置ACL 254
15.1.1 什么是ACL 254
15.1.2 配置使用ACL 255
15.1.3 ACL配置實例 255
15.1.4 文件系統的特殊權限:SUID/SGID/Sticky Bit 257
15.2 磁盤的安全加密 259
15.2.1 通過加密分區啟用數據保密 259
15.2.2 使用圖形工具加密分區 261
15.3 日志管理 263
15.3.1 日志系統概述 264
15.3.2 管理日志服務 265
15.3.3 日志的格式 267
15.3.4 集中式日志服務 267
第16章 LDAP網絡用戶配置 269
16.1 LDAP簡介 269
16.1.1 LDAP的特性 269
16.1.2 常用名稱解釋 270
16.1.3 OpenLDAP介紹 270
16.2 建立LDAP域服務器 271
16.2.1 安裝軟件包 271
16.2.2 配置LDAP服務器 271
16.2.3 初始化LDAP數據庫 272
16.2.4 啟動LDAP服務 273
16.3 使用LDAP服務器進行網絡身份認證 274
16.3.1 準備工作 274
16.3.2 加入LDAP域 275
16.4 網絡掛載主目錄 276
第17章 防火墻基本設置 278
17.1 Linux下防火墻的基本設置 278
17.1.1 Linux防火墻概述 278
17.1.2 iptables防火墻內核模塊 280
17.1.3 iptables命令格式 281
17.2 主機防火墻 283
17.2.1 iptables防火墻的運行與管理 283
17.2.2 管理主機防火墻規則 285
17.2.3 常用的主機防火墻規則 286
17.2.4 使用圖形界面管理主機防火墻規則 287
17.3 NAT網絡地址轉換 289
17.3.1 NAT簡介 289
17.3.2 使用iptables配置源NAT 290
17.3.3 使用iptables配置目的NAT 291
第18章 管理SELinux 294
18.1 基本SELinux安全性概念 294
18.1.1 SELinux介紹 294
18.1.2 SELinux的優點 294
18.1.3 SELinux的詞匯 295
18.1.4 SELinux初始化過程 296
18.2 SELinux模式 297
18.2.1 SELinux兩種狀態 297
18.2.2 查看SELinux的狀態 298
18.2.3 改變SELinux的狀態 298
18.2.4 手工修改SELinux模式 300
18.3 SELinux上下文 300
18.3.1 安全上下文的格式 300
18.3.2 查看對象的安全上下文 301
18.3.3 修改對象的安全上下文 301
18.3.4 安全上下文與程序控制 302
18.4 SELinux布爾值 303
18.4.1 查看SELinux布爾值 303
18.4.2 修改SELinux布爾值 304
18.4.3 SELinux布爾值訪問實例 304
18.5 監控SELinux沖突 305
第5部分 Linux系統的故障排除
第19章 Linux引導過程與內核管理 310
19.1 引導過程 310
19.1.1 BIOS 310
19.1.2 啟動加載程序 311
19.1.3 載入內核 311
19.1.4 執行init進程 312
19.1.5 初始化系統環境 312
19.1.6 建立用戶接口 314
19.2 運行級別Runlevel 315
19.2.1 Runlevel 315
19.2.2 查看與切換Runlevel 317
19.2.3 管理init服務 317
19.3 GRUB的更改 319
19.3.1 關于GRUB的簡介 319
19.3.2 使用GRUB 319
19.3.3 配置GRUB 321
19.4 內核管理 322
19.4.1 內核的版本 323
19.4.2 內核的組件 323
19.4.3 升級內核 324
19.5 內核模塊管理 326
19.5.1 內核模塊的位置 326
19.5.2 查看模塊信息 327
19.5.3 查看已加載模塊 328
19.5.4 自動加載模塊 328
19.6 配置內核參數 329
19.6.1 /proc目錄 329
19.6.2 使用sysctl修改內核參數 332
19.6.3 修改GRUB修改內核參數 333
第20章 系統恢復與故障排除 335
20.1 系統故障排除基礎 335
20.1.1 故障排除的基本原則 335
20.1.2 故障排除的常用方法 336
20.1.3 故障排除的技巧 336
20.2 修復引導問題 337
20.2.1 系統的啟動過程 337
20.2.2 單用戶模式 338
20.3 救援模式 341
20.3.1 救援模式介紹 341
20.3.2 啟動救援模式 341
20.3.3 切換硬盤環境 344




熟知概念

第1部分 Linux的基礎知識

第1章 Linux概述

第2章 Linux系統的安裝

KickStart開始自動安裝 
PXE網絡安裝


  • PXE
    PXE,全稱Pre-boot Execution Environment 預啟動執行環境
    通過網絡接口啟動計算機,不依賴本地存儲設備或本地已安裝的操作系統
    C/S的工作模式
    由intel公司開發的最新技術
    PXE客戶端會調用IP,UDP,DHCP,TFTP等網絡協議
    PXE客戶端其實是指網卡有PXE client,存放在網卡的ROM中,當服務器啟動時候bios會把pxe client調到內存中執行
  • kickstart
    Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數,并生成一個名為ks.cfg的文件。如果Kickstart文件涵蓋了安裝過程中可能出現的所有需要填寫的參數,那么安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然后就去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啟系統,并結束安裝。

第3章 X Window圖形用戶界面和應用軟件

第4章 Shell的基本應用

  • 常用Shell命令

    shell常用命令

    檢查遠程端口是否對bash開放:
    echo >/dev/tcp/8.8.8.8/53 && echo "open"
    讓進程轉入后臺:
    Ctrl + z
    將進程轉到前臺:
    fg
    產生隨機的十六進制數,其中n是字符數:
    openssl rand -hex n
    在當前shell里執行一個文件里的命令:
    source /home/user/file.name
    截取前5個字符:
    ${variable:0:5}
    SSH debug 模式:
    ssh -vvv user@ip_address
    SSH with pem key:
    ssh user@ip_address -i key.pem
    用wget抓取完整的網站目錄結構,存放到本地目錄中:
    wget -r --no-parent --reject "index.html" http://hostname/ -P /home/user/dirs
    一次創建多個目錄:
    mkdir -p /home/user/{test,test1,test2}
    列出包括子進程的進程樹:
    ps axwef
    創建 war 文件:
    jar -cvf name.war file
    測試硬盤寫入速度:
    dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
    測試硬盤讀取速度:
    hdparm -Tt /dev/sda
    獲取文本的md5 hash:
    echo -n "text" | md5sum
    檢查xml格式:
    xmllint --noout file.xml
    將tar.gz提取到新目錄里:
    tar zxvf package.tar.gz -C new_dir
    使用curl獲取HTTP頭信息:
    curl -I http://www.example.com
    修改文件或目錄的時間戳(YYMMDDhhmm):
    touch -t 0712250000 file
    用wget命令執行ftp下載:
    wget -m ftp://username:password@hostname
    生成隨機密碼(例子里是16個字符長):
    LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
    快速備份一個文件:
    cp some_file_name{,.bkp}
    訪問Windows共享目錄:
    smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir
    執行歷史記錄里的命令(這里是第100行):
    !100
    解壓:
    unzip package_name.zip -d dir_name
    輸入多行文字(CTRL + d 退出):
    cat > test.txt
    創建空文件或清空一個現有文件:
    > test.txt
    與Ubuntu NTP server同步時間:
    ntpdate ntp.ubuntu.com
    用netstat顯示所有tcp4監聽端口:
    netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]
    '
    qcow2鏡像文件轉換:
    qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \precise-server-cloudimg-amd64-disk1.raw
    重復運行文件,顯示其輸出(缺省是2秒一次):
    watch ps -ef
    所有用戶列表:
    getent passwd
    Mount root in read/write mode:
    mount -o remount,rw /
    掛載一個目錄(這是不能使用鏈接的情況):
    mount --bind /source /destination
    動態更新DNS server:
    nsupdate < <EOF update add $HOST 86400 A $IP send EOF
    遞歸grep所有目錄:
    grep -r "some_text" /path/to/dir
    列出前10個最大的文件:
    lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
    顯示剩余內存(MB):
    free -m | grep cache | awk '/[0-9]/{ print $4" MB" }'
    打開Vim并跳到文件末:
    vim + some_file_name
    Git 克隆指定分支(master):
    git clone git@github.com:name/app.git -b master
    Git 切換到其它分支(develop):
    git checkout develop
    Git 刪除分支(myfeature):
    git branch -d myfeature
    Git 刪除遠程分支
    git push origin :branchName
    Git 將新分支推送到遠程服務器:
    git push -u origin mynewfeature
    打印歷史記錄中最后一次cat命令:
    !cat:p
    運行歷史記錄里最后一次cat命令:
    !cat
    找出/home/user下所有空子目錄:
    find /home/user -maxdepth 1 -type d -empty
    獲取test.txt文件中第50-60行內容:
    < test.txt sed -n '50,60p'
    運行最后一個命令(如果最后一個命令是mkdir /root/test, 下面將會運行: sudo mkdir /root/test):
    sudo !!
    創建臨時RAM文件系統 – ramdisk (先創建/tmpram目錄):
    mount -t tmpfs tmpfs /tmpram -o size=512m
    Grep whole words:
    grep -w "name" test.txt
    在需要提升權限的情況下往一個文件里追加文本:
    echo "some text" | sudo tee -a /path/file
    列出所有kill signal參數:
    kill -l
    在bash歷史記錄里禁止記錄最后一次會話:
    kill -9 $$
    掃描網絡尋找開放的端口:
    nmap -p 8081 172.20.0.0/16
    設置git email:
    git config --global user.email "me@example.com"
    To sync with master if you have unpublished commits:
    git pull --rebase origin master
    將所有文件名中含有”txt”的文件移入/home/user目錄:
    find -iname "txt" -exec mv -v {} /home/user ;
    將文件按行并列顯示:
    paste test.txt test1.txt
    shell里的進度條:
    pv data.log
    使用netcat將數據發送到Graphite server:
    echo "hosts.sampleHost 10 date +%s" | nc 192.168.200.2 3000
    將tabs轉換成空格:
    expand test.txt > test1.txt
    Skip bash history:
    < space >cmd
    去之前的工作目錄:
    cd -
    拆分大體積的tar.gz文件(每個100MB),然后合并回去:
    split –b 100m /path/to/large/archive /path/to/output/files cat files* > archive
    使用curl獲取HTTP status code:
    curl -sL -w "%{http_code}\n" www.example.com -o /dev/null
    設置root密碼,強化MySQL安全安裝:
    /usr/bin/mysql_secure_installation
    當Ctrl + c不好使時:
    Ctrl +
    獲取文件owner:
    stat -c %U file.txt
    block設備列表:
    lsblk -f
    找出文件名結尾有空格的文件:
    find . -type f -exec egrep -l " +$" {} ;
    找出文件名有tab縮進符的文件
    find . -type f -exec egrep -l $'\t' {} ;
    用”=”打印出橫線:全選復制放進筆記
    printf '%100s\n' | tr ' ' =

  • 通配符

* - 通配符,代表任意字符(0到多個)
? - 通配符,代表一個字符
# - 注釋
/ - 跳轉符號,將特殊字符或通配符還原成一般符號
| - 分隔兩個管線命令的界定
; - 連續性命令的界定
~ - 用戶的根目錄
$ - 變量前需要加的變量值
! - 邏輯運算中的"非"(not)
/ - 路徑分隔符號
>, >> - 輸出導向,分別為"取代"與"累加"
' - 單引號,不具有變量置換功能
" - 雙引號,具有變量置換功能
` - quote符號,兩個``中間為可以先執行的指令
() - 中間為子shell的起始與結束
[] - 中間為字符組合
{} - 中間為命令區塊組合
Ctrl+C - 終止當前命令
Ctrl+D - 輸入結束(EOF),例如郵件結束的時候
Ctrl+M - 就是Enter
Ctrl+S - 暫停屏幕的輸出
Ctrl+Q - 恢復屏幕的輸出
Ctrl+U - 在提示符下,將整行命令刪除
Ctrl+Z - 暫停當前命令
&& - 當前一個指令執行成功時,執行后一個指令
|| - 當前一個指令執行失敗時,執行后一個指令

其中最常用的是*、?、[]和 ‘。下面舉幾個簡單的例子:
1,ls test* <== *表示后面不論接幾個字符都接受(沒有字符也接受)
2,ls test? <== ?表示后面當且僅當接一個字符時才接受
3,ls test??? <== ???表示一定要接三個字符
4,cp test[1~5] /tmp <== test1, test2, test3, test4, test5若存在,則復制到/tmp目錄下
5,cd /lib/modules/' uname -r'/kernel/drivers <== 被 ' ' 括起來的命令先執行

  • 正則表達式
    正則表達式元字符、元符號分類列表
    我們在下面的表格中列出了JavaScript支持的元字符和元符號。

  • 表1:特殊字符
    元字符 含義
    \0 匹配null字符,對應的十六進制值為\x00
    \b 匹配退格字符,對應的十六進制值為\x08
    \n 匹配換行字符,對應的十六進制值為\x0A
    \r 匹配回車字符,對應的十六進制值為\x0D
    \f 匹配換頁字符,對應的十六進制值為\x0C
    \t 匹配制表(TAB)字符,同時對應于水平制表符\x09和垂直制表符\x0B
    \xhh 匹配用2個十六進制數字表示的字符
    \uhhhh 匹配用4個十六進制在數字表示的字符,這些字符是Unicode字符
    \cchar 匹配命名的控制字符
    提示:特殊字符是指那些不容易進行直接書面表達或不容易直接使用鍵盤輸入的字符。

  • 表2:字符類
    元字符或元符號 含義
    [...] 匹配列表中給出的任何字符。該列表可以是一個字符,也可以是多個字符,還可以是使用“-”表示的字符范圍。例如[a]表示匹配單個字母a,[ab]表示匹配字母a或字母b,[a-z]表示匹配任何一個小寫字母,[0-9]表示匹配任何單個的數字,[a-z0-9]表示匹配任何單個的小寫字母或數字,等等
    [^...] 匹配列表中沒有給出的任何單個字符。該元字符與[...]的意義剛好相反。例如:[a]表示匹配任何不是字母a的字符,[ab]表示任何不是字母a或字母b的字符,[^a-z]表示任何不是小寫字母的任何字符,等等
    . 匹配除了回車和換行符之外的任何字符
    \w 元符號,相當于[a-zA-Z0-9_],匹配任何字母、數字、下劃線字符,這樣的字符也稱為單詞字符
    \W 元符號,相當于[^a-zA-Z0-9_],匹配除了字母、數字、下劃線字符之外的任何字符
    \d 元符號,相當于[0-9],匹配任何單個的數字字符
    \D 元符號,相當于[^0-9],匹配除了數字之外的任何單個字符
    \s 元符號,匹配空白字符,空白字符是指空格、Tab字符和回車換行符
    \S 元字符,匹配任何非空白字符

  • 表3:定位元字符
    元字符 含義
    ^ 匹配字符串的開始位置,或多行匹配模式中(\m)每一行的開始位置
    $ 匹配字符串的結束位置,或多行匹配模式下(\m)每一行的結束位置
    \b 匹配單詞邊界。這個元字符用于單詞匹配。單詞邊界有4種形式:
    1、當字符串第一個字符是單詞字符時,位于第一個字符前面;
    2、當字符串最后一個字符是單詞字符時,位于最后一個字符后面;
    3、在單詞字符和非單詞字符之間,緊跟在單詞字符后面;
    4、在非單詞字符和單詞字符之間,緊跟在非單詞字符后面
    \B 匹配非單詞邊界,這個元字符匹配\b不匹配的每一個位置
    x(?=y) 正向前查匹配。也就是說,只有在x后面跟上y時,才匹配x成功。例如:使用正則表達式/Hello(?=World)/進行匹配時,只有Hello后面跟著World時匹配才算成功,所以,這個正則表達式匹配HelloWorld,但是不匹配Hello,也不匹配Hello123
    x(?!y) 反向前查匹配。只有在x后面不跟著y時,才匹配x成功。例如:在使用正則表達式/Hello(?!World)/進行匹配時,只有Hello后面不跟著World時才匹配成功。所以這個正則表達式匹配Hello,也匹配Hello123(同時也匹配里面的Hello),但是不匹配HelloWorld

  • 表4:模式修飾符
    元字符 含義
    g 進行全局匹配
    m 多行匹配
    i 不區分大小寫匹配

  • 表5:限定符
    元字符 含義
    x? 匹配0個或1個x。例如:/ab?/匹配a、ab、ac、abc,但是不匹配bc
    x+ 匹配1個或多個x。例如:/ab+/匹配ab、abb、abbbc,但是不匹配a、ac
    x* 匹配0個或多個x。例如:/ab*/匹配a、ab、abb、abbbc,但是不匹配bc
    x{n} 匹配n個x。例如:/a{3}/匹配aaa、aaac,但是不匹配aa、a、abc
    x{n,} 匹配n個或多個x。例如:/a{3,}/匹配aaa、aaaa,但是不匹配aa、a、abc
    x{n,m} 匹配n到m個x。例如:/a[2,4]/匹配aa、aaa、aaaa,但是不匹配a、aaaaa

  • 貪婪匹配原則
    在JavaScript中,正則表達式進行匹配時默認使用的是貪婪匹配原則,即盡可能多的匹配字符串。例如,使用正則表達式/1{3,4}/來匹配字符串1111111,得到的結果為:1111和111。即先匹配4個字符,然后才匹配3個字符。

  • 表6:分組和替換元字符
    元字符 含義
    x|y 匹配x或y,例如:/cat|dog/匹配cat或dog
    (sub) 反向引用,將子表達式sub作為一個整體處理,括號的作用相當于代數中括號的作用。并將捕獲的子匹配保存在\1,\2,......和$1,$2,......中。例如:/a(bc)+/中,加號元字符作用在子表達式bc上,它匹配abc、abcbc,但是不匹配a和ac
    (?:sub) 分組子模式,但是不捕獲子模式。它的作用與(sub)類似,稱為無記憶匹配
    \1,\2,\3,... 在正則表達式中,分別包含與正則表達式中第一個反向引用、第二個反向引用、第三個反向引用...相匹配的子串
    $1,$2,$3,... 在替換中,分別包含與正則表達式中第一個反向引用、第二個反向引用。第三個反向引用...相匹配的子串

vim
全局:/etc/vimrc
用戶個人:~/.vimrc
1、行號
顯示:set nu
取消顯示:set nomber, set nonu
2、括號匹配高亮
匹配:set showmatch, set sm
取消:set nosm
3、自動縮進
啟用:set ai
禁用:set noai
4、高亮搜索
啟用:set hlsearch
禁用:set nohlsearch
5、語法高亮
啟用:syntax on
禁用:syntax off
6、忽略字符大小寫
啟用:set ic
禁用:set noic
7、設置tab鍵縮進4個空格
set tabstop=4

image.png
image.png

第2部分 Linux的系統管理

第5章 用戶和組管理

在Linux中用戶和組被稱為安全權限模型的核心要素,本文主要是講解一些用戶和組管理的命令,其中的命令包括useradd、userdel、usemod、chfn、chsh、chage、passwd、groupadd、groupmod、groupdel、gpasswd、su,本文只要說的是一些常用的選項,如果需要別的選項,請獲取命令幫助
Linux中用戶類別分為:管理員用戶和普通用戶,其中管理員用戶的UID為0,普通用戶的UID為1-65535,
普通用戶又分為系統用戶和登陸用戶,其中系統用戶的UID為1-499,登陸用戶的UID為500-65535,
創建用戶
useradd等同于adduser,格式為useradd [options] UserName
其中常用選項包括以下幾個:
-u UID:指定用戶的UID,如果不指定的話,就在最后一個用戶的基礎上+1,useradd創建的第一個賬號的UID為500;
-g GID:指定用戶的GID,即用戶的基本組ID,但是GID要實現存在才可以,也可以直接使用組名
-G GID:指定用戶的額外組,當時GID要實現存在才可以,也可以直接使用組名
-d 目錄:指定用戶的家目錄,這個家目錄最好是不要存在的文件夾,如果目錄已經存在,會出現shell環境變量錯誤
-c 備注:為用戶添加備注信息
-s shell:指定用戶的默認shell,應該指定使用/etc/shells文件中出現的shell類型
-m:創建用戶時,強制給用戶創建家目錄,默認情況下會在/home目錄下創建一個跟用戶名同名的文件夾來作為用戶的家目錄
-M:創建用戶時,不創建用戶家目錄
刪除用戶
userdel:用于刪除用戶,默認情況下會保留用戶的家目錄,如果想連家目錄一起刪除的話,應該使用-r選項
格式為 userdel [options] UserName
修改用戶的屬性信息
chsh:修改用戶的默認shell
chfn:修改用戶的備注信息,會依次輸入用戶的名稱、辦公地址、辦公電話、家庭電話
usermod:修改用戶的屬性信息
格式為 usermod [options] UserName
-a :追加
-u UID:修改用戶的UID
-g GID:修改用戶基本組的GID,也可以直接使用基本組的組名
-G GID:修改用戶的額外組的GID,也可以直接使用基本組的組名,默認狀態下會覆蓋原有的附加組,如果想要添加附加組,請在該選項前加-a選項
-c string:修改用戶的備注信息
-d 目錄:默認不會遷移用戶的家目錄,如果要遷移,請以-m選項一起使用
-s shell:修改用戶的默認shell ,應該指定使用/etc/shells文件中出現的shell類型
-l 名稱:修改用戶的登陸名稱,但是不修改用的UID,GID
-e 時間:修改用戶的過期時間
-f 時間:修改用戶的非活動時間。
-L 用戶名:鎖定用戶賬號
-U 用戶名:將鎖定的用戶賬號進行解鎖
chage:修改用戶的日期屬性
-E:距離1970-1-1號的時間天數,過了這個時間,賬號不可訪問
-I: 設置非活動期限
-m:修改密碼最小使用時間
-M:修改密碼最長使用時間
-W:修改密碼警告時間
查看用戶的相關信息
id 查看用戶的id號
格式:id [options] UserName
-n:只顯示名稱
-u:只顯示用戶的UID
-g:顯示用戶的基本在GID
-G:顯示用戶的額外組的GID
修改用戶密碼
密碼安全性策略:
1、足夠復雜
2、足夠長、盡量交叉使用數字、大寫字母、小寫字母和特殊字符
3、盡量避免使用易猜測的密碼:
4、定期更換
passwd 修改用戶的密碼
格式:passwd [options] 用戶名
說明:普通用戶只能修改自身的密碼,管理員可以設定自身和所有普通用戶的密碼,在設定其他用戶密碼是直接使用passwd 用戶名即可
-l:鎖定用戶
-u:解鎖用戶
-n:設定用戶密碼的最少使用時間
-x:設定用戶密碼的最長使用時間
-w:設定用戶密碼的警告時間
-i:設定用戶密碼的非活動時間
/etc/passwd中的格式
用戶名:密碼占位符:UID:GID(基本組ID):用戶備注信息(多個以,隔開):家目錄:默認shell
/etc/shadow中的格式
用戶名:密碼:最近的一次密碼修改時間距離1970-1-1的時間:最短使用期限:最長使用期限:警告時間:非活動時間(登陸就要修改密碼):賬號的過期期限:預留段
組的管理:
用戶組分為普通組和管理員組,在用戶看來,組可以分為兩類:基本組和額外組,額外組也叫附加組,組的管理和用戶的管理基本類似,這里就不再做累贅

第6章 磁盤與文件系統管理

磁盤的識別與分區
建立和管理文件系統 
文件系統的掛載


一. 磁盤基本知識和分區
1)設備類型如下
塊設備:block,存取單位“塊”,例如磁盤設備
字符設備:char,存取單位“字符”,例如鍵盤

2)設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信,也就是可以進行數據的輸入輸出設備號碼,用來在內核中進行標記,設備只有數據屬性(元數據),沒有數據內容
主設備號:major number, 標識設備類型
次設備號:minor number, 標識同一類型下的不同設備
硬盤接口類型:
并行:數據傳輸由多根線完成,可能有電磁干擾
IDE:133MB/s
SCSI:640MB/s

3) 分區管理工具:fdisk, parted, sfdisk
fdisk:對于一塊硬盤來講,最多只能管理15分區;
做完分區后,查看內核是否已經識別新的分區:
# cat /proc/partations

二. Linux文件系統管理:
1) Linux文件系統: ext2, ext3, ext4(centos6中比較常見), xfs, btrfs, reiserfs, jfs, swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2(紅帽的), OCFS2(oracle的)
分布式文件系統:ceph, moosefs, mogilefs, GlusterFS, Lustre

   根據其是否支持"journal"功能:
     日志型文件系統: ext3, ext4, xfs, ...
      非日志型文件系統: ext2, vfat

  文件系統的組成部分:
     內核中的模塊:ext4, xfs, vfat
     用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

Linux的虛擬文件系統:VFS------linux系統上可同時使用多種文件系統類型,最終都統一成VFS來進行管理,使用cat /proc/filesystems來查看系統支持的文件系統類型,lsmod能查看已裝載的模塊

2)創建文件系統(格式化):
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE, 例如 mkfs.ext4 /dev/sda5, 使用blkid /dev/sda5可以顯示該分區的基本信息
ext4
xfs
btrfs
vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE, 和(1)等效

3) mkswap:創建交換分區

4) 其它常用工具:
blkid:塊設備屬性信息查看
dumpe2fs: -h:查看超級塊信息
dumpe2fs /dev/sda5 會詳細的顯示文件系統信息,或者說是布局信息,比如分組情況,塊信息,inode位置等

5) 文件系統檢測(常用于異常關機導致文件系統出錯的情況):
fsck: File System Check
fsck.FS_TYPE,例如/dev/sda5的文件類型是ext2,那么檢測命令為: fsck.ext2 /dev/sda5

三. 掛載命令
將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為稱之為掛載;
根文件系統(rootfs): /etc/, /bin, /sbin, /lib, /lib64, /proc(內核輸出文件), /sys, /dev等, 這些目錄文件所在的分區就是根文件系統,這些文件都不能單獨分區。

注意:掛載點下原有文件在掛載完成后會被臨時隱藏,卸載后可見,所以掛載最好用空目錄;

  1. 掛載方法:mount DEVICE MOUNT_POINT
    mount:不加任何參數,(通過查看/etc/mtab文件)顯示當前系統已掛載的所有設備
    mount [-fnrsvw] [-t vfstype] [-o options] device dir
    dir:掛載點
    事先存在;建議使用空目錄;
    進程正在使用中的設備無法被卸載,可以使用-f參數強制卸載;
    例如:mount -r -L 'MYDATA' /mydata #/dev/sda5的標簽是MYDATA,這里只讀,用標簽來掛載
    注意:查看內核追蹤到的已掛載的所有設備:cat /proc/mounts
    -o options:(掛載文件系統的附加選項)
    例如:原先mount /dev/sda3 /mydata,不用卸載,直接mount -o remount,rw /dev/sda3 (/mydata)
    注意:上述選項可多個同時使用,彼此使用逗號分隔;
    默認掛載選項:defaults,相當于rw, suid, dev, exec, auto, nouser, and async

2)卸載命令:
# umount DEVICE
# umount MOUNT_POINT
查看正在訪問指定文件系統的進程:
# fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:(只有管理員能執行,此命令用于不能正常卸載掛載的情況)
# fuser -km MOUNT_POINT

3)掛載交換分區:
啟用:swapon (前提是創建掛載分區,例如mkswap /dev/sda6, 然后 swapon /dev/sda6)
禁用:swapoff [OPTION]... [DEVICE]

四. 文件掛載的配置文件:/etc/fstab, 實現開機自動掛載文件系統
每行定義一個要掛載的文件系統,各字段含義如下:
要掛載的設備或偽文件系統 掛載點 文件系統類型 掛載選項 轉儲(就是備份)頻率 自檢次序

五. 文件系統上的其它概念:

  1. Inode: Index Node, 索引節點-----用來存儲文件屬性,比如大小,文件類型,文件數據block位置等元數據,但是不包括文件名

理解inode,要從文件儲存說起。
文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當于0.5KB)。
操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。
文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。

使用mke2fs可以設定inode
-N #:為數據空間創建個多少個inode;
-m #: 為管理人員預留的空間占據的百分比;
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關閉指定特性
例如:
mke2fs -b1024 -m 3 -L MYDATA /dev/sda5

  1. 鏈接文件:
    硬鏈接:
    不能夠對目錄進行;
    不能跨分區進行;
    指向同一個inode的多個不同路徑;創建文件的硬鏈接即為為inode創建新的引用路徑,因此會增加其引用計數;

    符號鏈接:相當于一個快捷方式
    可以對目錄進行;
    可以跨分區;
    指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數;

六. 一些相關的常用命令

1) 內存空間使用狀態:
free [OPTION]
-m: 以MB為單位
-g: 以GB為單位

2) 文件系統空間占用等信息的查看工具:
df:
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式輸出; (有時候掛載點文件名太長的話,會以2行顯示,使用-P就會強制一行顯示)

3) 查看某目錄總體空間占用狀態:
du:
du [OPTION]... DIR
-h: human-readable
-s: summary
比如看一個文件夾多大 du -sh /usr

  • 命令總結:mount, umount, free, df, du, swapon, swapoff, fuser
    fuser功能
    fuser 可以顯示出當前哪個程序在使用磁盤上的某個文件、掛載點、甚至網絡端口,并給出程序進程的詳細信息.
    顯示使用某個文件的進程信息
    $ fuser -um /dev/sda2

管理交換空間

linux swap交換空間
linux內存通過 virtual memory 虛擬內存來管理整個內存, 虛擬內存管理著物理內存,也管理著swap交換空間。

swap的使用場景

swap主要有兩個用處

1、當系統需要比物理內存更多的內存空間的時候,內核會把內存里邊用得比較少的內存頁面swap out到交換分區,以空出物理內存給當前應用來快速運行。

2、某些應用啟動的時候初始化但是隨后的應用運行期間不再使用的內存頁面,系統會把這部分頁面也swap out到交換空間,以留出物理內存頁面給其他應用或者磁盤緩存。

linux的這種內存管理策略主要用來節約物理內存,提升當前應用的執行速度。但是swap不能當做擴充內存的一個手段,因為swap讀寫屬于磁盤io,要比物理內存的io慢得多。

如果系統頻繁的swap out內存頁面到交換分區,隨后又swap in交換分區到內存頁面,這說明系統在尋找空閑內存來是多個應用同時運行,也就是說當前系統任務比較繁忙,但是可用內存又不足了,這時候唯一的辦法只能通過提高物理內存來解決。

因此衡量一個系統內存用量是否到了瓶頸,就可以通過觀察swap用量和si so的頻率來評估。

生成swap

swap空間有兩種形式:一是交換分區,二是交換文件。總之對它的讀寫都是磁盤操作。

1、交換分區

交換分區可以在安裝操作系統的時候分配,也可以進入系統后用fdisk來劃分一個交換分區

比如在磁盤上劃分一個/dev/sda5分區,然后標記為交換分區。

然后使用mkswap命令在該分區上面建立交換分區文件系統:

mkswap /dev/sda5

最后激活交換分區:

swapon /dev/sda5

2、交換文件

交換空間也可以是文件,只需要用dd命令在磁盤上建立分配了大小的文件/home/swapfile

建立交換分區文件系統

mkswap /home/swapfile

最后激活它

swapon /home/swapfile

swap空間大小的分配策略

swap空間大小的分配眾說紛紜,有說物理內存兩倍的,有說物理內存一樣大小的,也有說物理內存一半的。在不同場景下,這些說法應該都是對的。(因此拿一個絕對說法當面試題的,考官可能也不真正的懂swap)

下面是紅帽系的分配策略:

Swap should equal 2x physical RAM for up to 2 GB of physical RAM, and then an additional 1x physical RAM for any amount above 2 GB, but never less than 32 MB.

So, if:

M = Amount of RAM in GB, and S = Amount of swap in GB, then

<pre class="screen" style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word;">If M < 2
S = M *2
Else
S = M + 2

居然有個if else的偽代碼來計算swap
所以怎么分,還得看具體應用場景,只要不離譜,都是正確的。

swap優化

linux內2.6增加一個新參數來管理swap,叫做swappiness ,Swappiness 可以有 0 到 100 的值。設置這個參數為較低的值會減少內存的交換,從而提升一些系統上的響應度。

值越高,內存頁面越多的swap out到交換空間,值越低,越多的應用使用物理內存空間。因此要想最大限度的使用物理內存,應該盡量減小swappiness的值甚至設置為0。

linux默認設置為60,臨時修改它的值:
echo 10 > /proc/sys/vm/swappiness
要永久修改可以在/etc/sysctl.conf文件修改vm.swappiness參數


磁盤配額 (quota)
一,磁盤管理的概念:
Linux系統是多用戶任務操作系統,在使用系統時,會出現多用戶共同使用一個磁盤的情況,如果其中少數幾個用戶占用了大量的磁盤空間,勢必壓縮其他用戶的磁盤的空間和使用權限。因此,系統管理員應該適當的開放磁盤的權限給用戶,以妥善分配系統資源。

二,什么是磁盤配額:
磁盤配額是一種磁盤空間的管理機制,使用磁盤配額可限制用戶或組在某個特定文件系統中所能使用的最大空間。

三,磁盤配額的步驟:
1,創建要磁盤配額的用戶(add)
修改內核fstab,對根目錄開啟磁盤配額限制


image.png

2,執行quotacheck命令,創建aquota.user文件
輸入命令quotacheck -avgu
3,執行edquota命令,設置用戶的配額
4,啟動配額管理
輸入quotaon -avgu:啟動磁盤配額
5,查看用戶的磁盤配額
quota username

第7章 邏輯卷管理

1.什么是LVM

LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,Linux用戶安裝Linux操作系統時遇到的一個常見的難以決定的問題就是如何正確地評估各分區大小,以分配合適的硬盤空間。普通的磁盤分區管理方式在邏輯分區劃分好之后就無法改變其大小,當一個邏輯分區存放不下某個文件時,這個文件因為受上層文件系統的限制,也不能跨越多個分區來存放,所以也不能同時放到別的磁盤上。而遇到出現某個分區空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨著Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調整各個分區大小。

LVM(邏輯分區)的創建順序:物理分區-物理卷-卷組-邏輯卷-掛載。


20160803164634261.jpg

物理卷(Physical Volume,PV):就是指硬盤分區,也可以是整個硬盤或已創建的軟RAID,是LVM的基本存儲設備。

卷組(Volume Group,VG):是由一個或多個物理卷所組成的存儲池,在卷組上能創建一個或多個邏輯卷。

邏輯卷(Logical Volume,LV):他是Linux環境下對磁盤分區進行管理的一種機制。當邏輯分區放不下某些文件時,又不能夸分區來存放,邏輯卷可以在不停機的情況下方便調整各分區的大小。


第8章 進程管理

管理進程

●查看所有運行中的進程
●查看進程消耗資源
●定位個別進程并且對其執行指定操作
●改變進程的優先級
●殺死指定進程
●限制進程可用的系統資源等
介紹Linux進程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

1 pstree

linux中,每一個進程都是由其父進程創建的,顯示進程的樹狀圖來展示進程間關系

2 ps

是Linux 中最基礎的瀏覽系統中的進程的命令。能列出系統中運行的進程,包括進程號、命令、CPU使用量、內存使用量等。
ps -a - 列出所有運行中/激活進程
ps -ef |grep - 列出需要進程
ps -aux 顯示進程信息

3 top

‘top’是一個更加有用的命令,可以監視系統中不同的進程所使用的資源。它提供實時的系統狀態信息。顯示進程的數據包括PID、進程屬主、優先級、%CPU、%memory等。可以使用這些顯示指示出資源使用量。

4.htop

htop與top很類似,但是htop是交互式的文本模式的進程查看器。它通過文字圖形化地顯示每一個進程的CPU和內存使用量、swap使用量。使用上下光標鍵選擇進程,F7和F8改變優先級,F9殺死進程。Htop不是系統默認安裝的,所以需要額外安裝。

5.nice

通過nice命令的幫助,用戶可以設置和改變進程的優先級。提高一個進程的優先級,內核會分配更多CPU時間片給這個進程。默認情況下,進程以0的優先級啟動。進程優先級可以通過top命令顯示的NI(nice value)列查看。
進程優先級值的范圍從-20到19。值越低,優先級越高。
nice <優先值> <進程名> - 通過給定的優先值啟動一個程序

6.renice

renice命令類似nice命令。使用這個命令可以改變正在運行的進程優先值。注意,用戶只能改變屬于他們自己的進程的優先值。
renice -n -p - 改變指定進程的優先值

7.kill

這個命令用于發送信號來結束進程。如果一個進程沒有響應殺死命令,這也許就需要強制殺死,使用-9參數來執行。
killall -9 - 殺死所有擁有同樣名字的進程

8.ulimit

該命令用于控制系統資源在shell和進程上的分配量。對于系統管理員是最有用的,可以管理重度使用和存在性能問題的系統。限制資源大小可以確保重要進程持續運行,其他進程不會占用過多資源。
ulimit -a - 顯示當前用戶關聯的資源限制

9.w

w 提供當前登錄的用戶及其正在執行的進程的信息。顯示信息頭包含信息,如當前時間、系統運行時長、登錄用戶總數、過去的1,5,15分鐘內的負載均衡數。

10.pgrep

pgrep的意思是"進程號全局正則匹配輸出"。該命令掃描當前運行進程,然后按照命令匹配條件列出匹配結果到標準輸出。對于通過名字檢索進程號是很有用。
pgrep -u mint sh
這個命令將會顯示用戶為‘mint’和進程名為‘sh’的進程ID。

11.fg , bg

有時,命令需要很長的時間才能執行完成。對于這種情況,我們使用‘bg’命令可以將任務放在后臺執行,而用‘fg’可以調到前臺來使用。

12 pidof

用于查找指定名稱的進程的進程號id號。

13 free 內存使用情況

free 命令顯示了系統的可用和已用的物理內存及交換內存的總量,以及內核用到的緩存空間。

14. iostat - CPU 平均負載和磁盤活動

iostat 命令用于匯報 CPU 的使用情況,以及設備、分區和網絡文件系統(NFS)的 IO 統計信息。

15. sar - 監控、收集和匯報系統活動

sar 命令用于收集、匯報和保存系統活動信息。要查看網絡統計,

16. mpstat - 監控多處理器的使用情況

mpstat 命令顯示每個可用處理器的使用情況,編號從 0 開始

17. pmap - 監控進程的內存使用情況

pmap 命令用以顯示進程的內存映射,使用此命令可以查找內存瓶頸。

18. iotop - I/O 監控

iotop 命令利用 Linux 內核監控 I/O 使用情況,它按進程或線程的順序顯示 I/O 使用情況。

19. glances - 密切關注 Linux 系統

glances 是一款開源的跨平臺監控工具。它在小小的屏幕上提供了大量的信息,還可以工作于客戶端-服務器模式下。

20 /proc 文件系統 - 各種內核信息

/proc 文件系統提供了不同硬件設備和 Linux 內核的詳細信息。更多詳細信息,請參閱 Linux 內核 /proc 文檔。常見的 /proc 例子:

# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts</pre>

系統監視工具
每個系統管理員都要知道的 30 個 Linux 系統監控工具

計劃任務

計劃任務:在某個時段自動執行某個任務。
Linux 系統中有兩條指令用于設置計劃任務,at、cron

at計劃任務:只執行一次,然后就沒有然后了

[root@localhost ~]# date  #查詢當前系統時間 
Tue Aug 23 23:34:26 CST 2016 
[root@localhost ~]# at 23:36  #設置計劃任務,在23:36分執行 
at> mkdir /root/1607  #輸入要執行的命令 
at> <EOT> #輸入ctrl+d退出 
job 6 at Tue Aug 23 23:36:00 2016 
[root@localhost ~]# at –l #查看當前的計劃任務(執行一次的) 
[root@localhost ~]# atq #同上 
[root@localhost ~]# at 20:00 2017-10-1 #計劃任務的特殊格式(在未來的某一天) 
[root@localhost ~]# at now +10min #計劃任務的特殊格式(在10min后)

對于系統來說 :計劃任務 就是在某個特定的時刻 執行一個腳本文件
創建成功的at計劃任務會在/var/spool/at/目錄下成生一個可執行的腳本文件
/var/spool/at/*
每一個腳本都對應一個at計劃任務
刪除at計劃任務:
atrm 命令
atrm + 計劃任務的編號


cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。

crond是cron執行計劃任務的服務,crond命令會定期檢查是否有要執行的工作,如果有,便會自動執行該工作。
linux任務調度的工作主要分為以下兩類:
*系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存. 例如/tmp 臨時目錄
*個人執行的工作:某個用戶定期要做的工作,由每個用戶自行設置。
systemctl status crond #查詢服務狀態

crontab的參數:
crontab -u #指定某個用戶的cron服務;
crontab -l #列出cron服務的詳細內容;
crontab -r #刪除cron服務;
crontab -e #編輯cron服務;
crontab -u root -l # root查看自己的cron計劃任務:
crontab -u san -r # root想刪除san的cron計劃任務:
**cron文件語法:
分 小時 日 月 星期 命令
crontab -u root -e

    1. 每天晚上21:30 重啟apache
      30 21 * * * /etc/init.d/httpd restart
    1. 每月1、10、22日的4 : 45重啟apache。
      45 4 1,10,22 * * /etc/init.d/httpd restart
    1. 每月1到10日的4 : 45重啟apache。
      45 4 1-10 * * /etc/init.d/httpd restart
    1. 周一到周五每天晚上 21:15 寄一封信給 root@xuegod63:
      15 21 * * 1-5 mail -s "hi" root@localhost < /etc/fstab

第9章 軟件管理

YUM
源代碼安裝
軟件包管理

第10章 服務的管理

管理服務
服務的可用性
服務管理工具

第3部分 Linux的網絡配置

第11章 網絡基礎

第12章 訪問網絡文件共享服務

網絡文件系統NFS 
SMB/CIFS通用網絡文件系統 
自動掛載網絡存儲服務 自動掛載(autofs)

第13章 管理常用網絡服務

管理NTP服務
管理CUPS打印服務 
管理SSH服務 
管理VNC服務

第14章 常用網絡服務器配置

Web服務配置
FTP服務配置 
DNS服務配置
DHCP服務配置 
Mail服務配置

第4部分 Linux的安全設置

第15章 Linux安全設置

文件的安全設置ACL 
文件系統的特殊權限:SUID/SGID/Sticky Bit 
磁盤的安全加密 
日志管理

第16章 LDAP網絡用戶配置

第17章 防火墻基本設置

iptables

第18章 管理SELinux

第5部分 Linux系統的故障排除

第19章 Linux引導過程與內核管理

引導過程
運行級別Runlevel
GRUB的更改
內核管理
內核模塊管理
配置內核參數

第20章 系統恢復與故障排除

系統故障排除基礎
修復引導問題 
救援模式

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容