linux基礎內容

計算機系統

計算機硬件

  • 主機
    • CPU
    • 內存
    • 主板
  • 外部設備
    • 存儲 (硬盤 光盤 閃存)
    • 輸入設備 (鍵盤 鼠標等)
    • 輸出設備 (顯示器 音箱等)

計算機軟件

  • 系統軟件
    • 操做系統
    • 編譯和解釋系統
    • 系統服務程序
    • 網絡軟件
  • 應用軟件
    • 文字處理軟件
    • 各類應用軟件包

馮諾依曼體系結構

  • 輸入
  • 輸出
  • 運算器
  • 控制器
  • 寄存器

計算機系統計量單位

轉換關係 字節數
1B=8bit 2^0B
1KB=1024B 2^10B
1MB=1024KB 2^20B
1GB=1024MB 2^30B
1TB=1024GB 2^40B
1PB=1024TB 2^50B
1EB=1024PB 2^60B

服務器

服務器組成

  • CPU
  • 內存
  • 磁盤
    • 機械硬盤(IDE/SATA/SCSI/SAS)
    • 固態硬盤
  • 網卡
  • 電源
  • 主板
  • RAID卡
    • RAID0
    • RAID1
    • RAID5
    • RAID6
    • RAID10
    • RAID50
    • RAID60
  • 遠程管理卡
  • 光驅

服務器種類

  • 機架式服務器

規格 :html

厚度 用U表示 1U=1.75英寸=4.445CM=4.45CMnode

寬度 19英寸mysql

  • 刀片服務器linux

  • 塔式服務器正則表達式

服務器品牌

  • dell
    • r610 r710
    • r620/r630 r720/r730
  • IBM
    • 3650
    • 3850
    • 3950
  • HP
  • 聯想
  • 浪潮

操做系統

什麼是操做系統

  • 用戶與計算機硬件之間用於傳遞信息的系統程序軟件
  • 管理和控制計算機硬件與軟件資源的計算機程序,直接運行在"裸機"上

操做系統種類

  • Windows
  • Linux
  • Unix
  • macOS

Linux系統

Linux特色

  • 開放源代碼,能夠自由修改
  • unix系統兼容,具有幾乎全部unix的優秀特性
  • 可自由傳播,無任何商業化版權制約
  • 適合Intel x86 CPU系列架構的計算機

Linux發展史

  • 1969年unix在貝爾實驗室誕生
  • 1978年誕生BSD(Berkeley Software Distribution)系統。
  • 此後,各大廠商及商業公司根據自身公司的硬件架構,並以BSD系統爲基礎,開發出了各類版本的unix系統
  • 1984年,Andrew S. Tanenbaum 開發了用於教學的unix系統,命名爲MINIX,並將MINIX系統運行在X86的PC計算機平臺
  • 1984年,Richard Matthew Stallman發起GNU項目計劃,得到自由軟件基金(FSF)會支持,並遵循GPL協議,目標是創建一個開源的類Unix系統
  • 1990年,芬蘭赫爾辛基大學學生Linus Torvalds 首次接觸MINIX系統
  • 1991年,Linus Torvalds開始在MINIX上編寫各類驅動程序等操做系統內核組件
  • 1991年末,Linus Torvalds 公開了Linux內核源碼0.02版(http://www.kernel.org)
  • 1993年,linux1.0版發行,linux轉向GPL協議
  • 1994年,linux的第一個商業發行版Slackware問世

Linux系統組成

  • Linux內核
  • GNU項目組件(gcc bash 等)
  • 其它必要的應用程序

Linux發行版

  • Redhat系列
    • redhat
    • fedora
    • centos
  • Debian系列
    • Debian
    • Ubuntu
  • Slackware系列
  • arch系列

Linux目錄文件操做

命令格式

命令 [選項] [參數]sql

ls -l /etc/hostsshell

目錄操做

建立目錄

mkdir /data

查看目錄下內容

ls /data

查看目錄自己

ls -d /data

切換目錄

cd
cd /data
cd ~
cd -
cd ..

查看當前所在目錄

pwd

目錄更名(或移動目錄)

mv /data /wuxing

複製目錄

cp -r /wuxing /root/

刪除目錄

rm -r /wuxing

絕對路徑和相對路徑

  • 絕對路徑: 從 / 開始
  • 相對路徑: 從當前目錄開始
  • 全部目錄和文件相關的操做均可以使用絕對路徑和相對路徑

文件操做

建立文件

建立空文件

touch oldboy.txt

建立有內容的文件

echo oldboy > oldboy.txt  #覆蓋
echo 123456 >> oldboy.txt #追加

查看文件內容

查看文件內容命令不少數據庫

cat oldboy.txt
head oldboy.txt
tail oldboy.txt
more oldboy.txt
less oldboy.txt
grep  sed  awk

查看文件自己

ls -l oldboy.txt

修改文件名(或移動文件)

mv oldboy.txt oldgirl.txt

複製文件

cp oldgirl.txt /tmp/

修改文件內容

vi/vim  oldgirl.txt

vi編輯器簡單操做步驟express

  • vi oldgirl.txt #打開文件
  • 輸入字母i,進入插入模式,編輯文件
  • 編輯完成後,按Esc,再輸入 :wq 保存退出

刪除文件

rm oldgirl.txt

命令分類

  • 內置命令
  • 外部命令
  • 別名
  • 函數
type cd

命令幫助

本地幫助

  • 命令 --help編程

  • man 命令/配置文件

  • help 命令 (用於linux內置命令)
  • info 命令

在線幫助

搜索 linux ls 命令
http://man.linuxde.net/
http://linux.51yip.com/
https://www.gnu.org/software/coreutils/manual/coreutils.html

經常使用快捷鍵

tab鍵   命令或路徑補全功能
ctrl+c  終止當前命令或程序
ctrl+d  退出當前shell
ctrl+l  清屏
ctrl+a  命令行光標移到行首
ctrl+e  命令行光標移到行尾
ctrl+u  命令行刪除光標到行首的內容
ctrl+k  命令行刪除光標到行尾的內容
ctrl+r  命令行搜索
ctrl+s  鎖屏
ctrl+q  解鎖

目錄結構

http://www.pathname.com/fhs/pub/fhs-2.3.html

Linux目錄機制

  • Linux系統只有一個根 /
  • 一切從根開始
  • 整個根目錄就是一顆倒掛的樹
  • 目錄結構和設備是分離的,任何一個目錄均可能對應一個不一樣的磁盤或分區
  • 磁盤設備必須掛載才能使用

查看目錄樹

tree

目錄結構詳細

/usr 文件系統的主要部分

目錄 含義
/usr/bin 基本用戶命令二進制文件
/usr/sbin 系統命令二進制文件
/usr/lib 基本共享庫和內核模塊
/usr/lib64 64位共享庫
/usr/local 本地安裝軟件存放目錄(源碼安裝軟件默認目錄)
/usr/include C程序包含的頭文件
/usr/src 程序源碼目錄
/usr/share 與體系結構無關的數據
/usr/share/man 幫助目錄
/usr/share/doc 文檔目錄

centos7系統運行級別

/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target

/boot 引導加載程序的靜態文件

/dev 設備文件

  • /dev/null
  • /dev/zero
  • /dev/sda
  • /dev/sr0

/etc 系統配置文件

網卡配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0

DNS配置文件

/etc/resolv.conf

主機名配置文件

/etc/hostname

設置主機名

hostnamectl set-hostname wuxingge

hosts文件

/etc/hosts

文件系統自動掛載列表

/etc/fstab
[root@oldboyedu ~]# blkid 
/dev/sda1: UUID="1515d309-b3aa-4df7-8a0a-a6bf5d0587c9" TYPE="xfs" 
/dev/sda2: UUID="e5256992-206d-4ade-bb70-7ca46ec94998" TYPE="swap" 
/dev/sda3: UUID="7189cadf-e438-4507-a4ef-4e304c4c3d40" TYPE="xfs" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

開機自動啓動程序

/etc/rc.local  -> /etc/rc.d/rc.local

系統默認運行級別

/etc/inittab

各系統運行級別執行的任務

/etc/rc.d/rc0.d/
/etc/rc.d/rc1.d/
/etc/rc.d/rc2.d/
/etc/rc.d/rc3.d/
/etc/rc.d/rc4.d/
/etc/rc.d/rc5.d/
/etc/rc.d/rc6.d/

環境變量配置文件

  • /etc/profile 系統環境變量
  • /etc/profile.d/*.sh 軟件特有的環境變量
  • ~/.bash_profile 用戶特定的環境變量

別名與函數配置文件

  • ~/.bashrc 用戶特定的別名和函數
  • /etc/bashrc 系統別名和函數

系統登陸提示信息

/etc/issue 認證前的輸出信息,默認輸出版本內核信息
/etc/issue.net
/etc/motd 設置認證後的輸出信息

系統信息相關

[root@repo ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
[root@repo ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@repo ~]# uname -a
Linux repo.novalocal 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

selinux配置文件

/etc/selinux/config

本次關閉selinux

setenforce 0

查看selinux狀態

getenforce

語言字符集配置文件

/etc/locale.conf

設置語言字符集

localectl set-locale LANG=zh_CN.utf8

/home 用戶家目錄

/opt 附加應用程序軟件包

/root root用戶家目錄

/run 運行時變量數據(pid文件)

/run/lock/ 鎖文件

/proc 內核和進程信息虛擬文件系統

文件 含義
/proc/cpuinfo 處理器的信息
/proc/meminfo 內存信息
/proc/devices 當前運行內核所配置的全部設備清單
/proc/filesystems 文件系統
/proc/dma 當前正在使用的DMA通道
/proc/interrupts 正在使用的中斷和曾經有多少箇中斷
/proc/ioports 當前正在使用的I/O端口

/sys 虛擬的目錄(內存中的信息)

/tmp 臨時文件

/var 變化的文件

目錄 含義
/var/cache 應用程序緩存數據
/var/lib 變化的數據
/var/log 日誌文件和目錄
/var/opt /opt的變量數據
/var/spool 應用程序假脫機數據
/var/tmp 系統從新引導之間保留的臨時文件

系統相關日誌文件

/var/log/messages
/var/log/secure
/var/log/dmesg

/mnt 臨時文件系統的掛載點

/media 可移動設備的掛載點

/srv 系統提供的服務數據

文件屬性(元數據)

文件屬性信息

[root@repo ~]# ll -i /etc/hosts
101031 -rw-r--r--. 1 root root 159 6月   4 17:17 /etc/hosts
含義
第一列 inode號
第二列 文件類型及權限(第二列共11個字符:其中第一個字符是文件類型,隨後的9個字符爲文件的對應權限,最後一個字符點號 . 是和selinux有關的一個標識)
第三列 硬連接個數
第四列 文件全部者(屬主)
第五列 文件所屬的組(屬組)
第六列 文件大小
第7、8、九列 修改時間
第十列 文件名

inode和block

  • 硬盤格式化的時候,操做系統將硬盤分紅兩個區域。一個是數據區,存放文件數據;另外一個是inode區(inode table),存放inode所包含的信息。

  • inode號是文件在磁盤上的惟一標識
  • inode 用來存放文件的屬性和指向其block的指針
  • 一個文件佔一個inode,至少佔用一個block
  • 磁盤讀取或寫入數據是按block爲單位進行的
  • 讀或者寫一個block稱爲一次IO

文件三要素

  • 目錄項(文件名)
  • inode
  • block
文件類型 目錄項 inode block
文件 文件名 inode號 文件內容
目錄 目錄名 inode號 目錄中的文件名

找文件過程

  • 首先,系統找到這個文件名對應的inode號碼

  • 其次,經過inode號碼,獲取inode信息

  • 最後,根據inode信息,找到文件數據所在的block,讀出數據

查看文件inode

ls -li

查看文件屬性詳細信息

stat /etc/hosts

查看磁盤inode

df -i

查看磁盤block

df -h

磁盤空間滿

inode使用完或block使用完都表示磁盤空間使用完

文件類型

文件類型標識符 文件類型
- 普通文件(文本文件、二進制文件、數據文件、壓縮文件)
d 目錄(directory)
l 軟連接(link)
b 塊設備(block)
c 字符設備(character)
s socket文件
p 管道文件(pipe)

查看文件類型

file /etc/hosts

權限

權限 含義 數字表示
r 4
w 2
x 執行 1
- 沒有任何權限 0
屬主 屬組 其餘用戶
rw- r-- r--
6 4 4

連接數

硬連接

  • 具備相同inode號的文件(互爲硬連接),本質是一個文件
  • 目錄自帶硬連接但不能作硬連接
  • 硬連接不能跨文件系統

目錄硬連接說明

[root@oldboy test]# ls -ldi oldboy oldboy/. oldboy/oldboydir/..
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy/.
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy/oldboydir/..

建立硬連接

ln oldboy.txt OLDBOY.TXT

刪除文件本質

  • 刪除文件的全部硬連接

文件刪除條件

  • 文件硬連接數爲0
  • 文件沒有進程佔用

軟連接(符號連接)

  • 軟連接文件指向源文件
  • 軟連接與源文件是不一樣的文件
  • 能夠跨文件系統

建立軟連接

ln -s oldboy.txt old.txt

用戶和組

用戶類型

UID 用戶類型 用戶特性
0 超級用戶root linux系統超級管理員
1-999 虛擬用戶 不能登陸系統
1000-65535 普通用戶 能夠登陸系統

文件時間

  • modify mtime 文件內容(block)修改時間

  • change ctime 文件屬性(元數據)改變時間

  • access atime 文件內容訪問時間

ls -lhi

7 8 9 三列是時間(修改時間)

文件歸檔

tar [選項] 歸檔文件 【文件或目錄】

參數 參數說明 其餘說明
-z gzip壓縮格式
-c 建立歸檔
-f 指定歸檔文件
-r 給歸檔文件中添加文件
-t 列出歸檔文件的內容
-x 從歸檔中提取文件
-v 顯示執行過程
-C <目錄> 指定解壓到的目錄
--exclude=文件目錄 排除文件 --exclude=/etc/services --exclude=c --exclude=b
-h 須要打包的文件是軟連接用此參數
-P 從/開始打包

軟件包管理

rpm

  • rpm 紅帽軟件包管理工具
  • rpm管理的軟件包是rpm包

rpm命令格式

rpm  [選項...]  參數

查詢選項

選項 含義
-q 查詢
-a 全部
-p 軟件包
-f 文件屬於哪一個軟件包
-l 軟件包中的文件列表
-c 軟件包中的配置文件
-R 軟件包依賴

安裝/升級/卸載選項

選項 含義
-i 安裝
-v 顯示附加信息
-h 安裝時輸出hash記號
-e 卸載
-U 升級
--nodeps 不檢查依賴

yum

rpm包管理工具,自動解決依賴關係

yum命令格式

yum  [選項]  command  [參數]

經常使用command

  • clean
clean all 清除所有
clean packages 清除臨時包文件(/var/cache/yum 下文件)
clean headers 清除rpm頭文件
clean oldheaders 清除舊的rpm頭文件
  • list
list   可安裝和可更新的RPM包
repolist 顯示資源庫的配置
list installed 已安裝的包
list extras 已安裝且不在資源庫的包
deplist     列出包的依賴
  • 安裝/重裝/卸載/升級
install      安裝包
localinstall     安裝本地的RPM包
groupinstall   組安裝
reinstall       從新安裝包
remove         卸載包
update         更新包
  • 搜索
search        搜索包
provides      搜索文件屬於哪一個包
  • 其它
history     查看yum歷史操做
info installed 已安裝包的信息

yum源配置

  • yum源配置文件 /etc/yum.repos.d/*.repo
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

二進制包

  • 下載
  • 解壓

源碼包

  • 下載
  • 解壓
  • 進入目錄
  • 配置
./configure
  • 編譯
make
  • 安裝
make install
wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4/manpages-zh-1.5.1.tar.gz


./configure --disable-zhtw  --prefix=/usr/local/zhman
make
make install


alias cman='man -M /usr/local/zhman/share/man/zh_CN'

用戶管理

Linux是一個多用戶多任務的操做系統

用戶做用

  • 登陸認證

  • 管理計算機資源

用戶組

  • 組是一個邏輯概念,將用戶分紅不一樣的組,方便管理
  • Linux中用戶與組的關係是多對多

用戶分類

UID 用戶類型
0 超級用戶root
1-499/1-999 虛擬用戶
>500/> 1000 普通用戶

組分類

gid 組類型
0 root組
1-499/1-999 系統用戶組
>500/> 1000 普通用戶組

用戶相關文件

  • /etc/passwd

用戶相關信息

root x 0 0 root /root /bin/bash
帳號 密碼佔位符 UID GID 用戶說明 家目錄 登陸shell
  • /etc/shadow

密碼相關信息

帳號 用戶帳號名稱
密碼 加密後的口令
最近更改密碼的時間 從1970年1月1日起,到用戶最後一次更改密碼的天數
禁止修改密碼的天數 從1970年1月1日起,到用戶能夠更改密碼的天數
用戶必須更改口令的天數 從1970年1月1日起,到用戶必須更改密碼的天數
警告更改密碼的期限 用戶密碼過時前多少天提示用戶更改密碼
不活動時間 在用戶密碼過時以後到禁用帳戶的天數
失效時間 從1970年1月1日起,到用戶被禁用的天數
標誌 保留
  • /etc/default/useradd

添加用戶時的默認配置

GROUP=100  依賴於/etc/login.defs 的USERGROUPS_ENAB參數,若是爲no,則此處控制
HOME=/home       把用戶家目錄建在/home 下
INACTIVE=-1   是否啓用帳號過時停權,-1表示不啓用
EXPIRE=   帳號終止日期,不設置表示不啓用
SHELL=/bin/bash     新用戶默認所用的shell類型
SKEL=/etc/skel        配置新用戶家目錄的環境配置文件路徑
CREATE_MAIL_SPOOL=yes  建立mail文件
  • /etc/login.defs

用戶認證的默認屬性

PASS_MAX_DAYS   99999    一個密碼最長可使用的天數
PASS_MIN_DAYS   0     更換密碼的最小天數
PASS_MIN_LEN    5   密碼的最小長度
PASS_WARN_AGE   7       密碼失效前提早多少天開始警告
  • /etc/skel/

用來存放新用戶的環境配置文件,爲新建立的用戶添加初始化配置

[root@localhost ~]# ll /etc/skel/ -a
總用量 28
drwxr-xr-x.   2 root root   76 9月  25 15:45 .
drwxr-xr-x. 101 root root 8192 10月 28 12:01 ..
-rw-r--r--.   1 root root   18 5月  11 08:16 .bash_logout
-rw-r--r--.   1 root root  141 5月  11 08:16 .bash_profile
-rw-r--r--.   1 root root  312 5月  11 08:16 .bashrc
-rw-r--r--.   1 root root  658 5月  12 00:06 .zshrc

組相關文件

  • /etc/group 組信息文件
  • /etc/gshadow 組密碼信息文件

建立用戶

useradd

選項 說明
-u uid 指定用戶id
-g initial_group 用戶登陸起始用戶組(主要組)
-G group,[...] 附加組(次要組)
-M 不建立家目錄。通常建立虛擬用戶是不建立家目錄,部署服務時要建立虛擬用戶
-s shell 指定用戶登陸系統後使用的shell
-d home_dir 指定家目錄
-r 建立虛擬用戶
-c comment 註釋說明信息
-m 用戶目錄如不存在則自動建立
-e expire_date 帳號終止日期(帳號過時時間) 日期 -e "+30 day" -e "2016/12/20"
-f 帳號過時幾往後永久停權

查看用戶信息

id root

查看用戶登陸系統的信息

w
who
users
last
lastlog

切換用戶

su  [選項]  用戶
選項 說明
- 使切換後的用戶登陸本身對應的shell
-c 以另一個用戶身份執行一個命令
-m 切換用戶時,不登陸本身的shell
-s 切換用戶時,登陸指定的shell

修改用戶

usermod

選項 註釋說明
-u uid 指定用戶id
-g initial_group 用戶登陸起始用戶組(主要組)
-G group,[...] 附加組(次要組)
-s shell 指定用戶登陸系統後使用的shell
-d home_dir 指定家目錄
-m newhome_dir 將家目錄內容移至新位置 (僅於 -d 一塊兒使用)
-L 凍結用戶的密碼,使之沒法登陸,實際就是修改/etc/shadow 的密碼欄,在前面加上 ! useradd -e chage -E 或 passwd -l 都有相似效果
-U 取消凍結用戶密碼,使之恢復登陸
-c comment 註釋說明信息
-e expire_date 帳號終止日期(帳號過時時間) 日期 -e "+30 day" -e "2016/12/20"
-f 帳號過時幾往後永久停權

刪除用戶

userdel  用戶名

選項

-r 刪除用戶家目錄

密碼管理

passwd

passwd [選項...] <用戶名>

選項 說明
-k 保留即將過時的用戶在期滿後仍然能使用
-d 刪除用戶密碼,僅能以root權限操做
-l 鎖定用戶,僅能經過root操做
-u 解除鎖定
-f 強制操做,只有root才能操做
-x 兩次密碼修改的最大天數,後面接數字,只有root才能操做
-n 兩次密碼修改的最小天數,後面接數字,只有root才能操做
-w 在距多少天提醒用戶修改密碼,只有root才能操做
-i 在密碼過時後多少天,用戶被禁用,只有root才能操做
-S 查詢用戶的密碼狀態,只有root才能操做
--stdin 從stdin讀入密碼

組管理

gpasswd

gpasswd [-a user] [-d user] [-A user,...] [-M user,...] [-r] [-R] groupname

選項 含義
-a 添加用戶到組
-d 從組刪除用戶
-A 指定管理員
-M 指定組成員和-A的用途差很少
-r 刪除密碼
-R 限制用戶登入組,只有組中的成員才能夠用newgrp加入該組

sudo

做用

以其餘用戶身份執行一條命令

某個用戶可使用不一樣角色,執行不一樣的命令

sudo命令格式及選項

sudo [選項] [command]

選項 含義
-l 列出用戶在主機上可使用的命令
-u 用戶名 指定以某個用戶身份執行特定的命令(默認是root)
-k 刪除時間戳(時間戳默認5分鐘失效)
-v 跟蹤最新的時間戳

sudo配置文件

visudo <====> vim /etc/sudoers

sudo受權語法規則

用戶或組 主機 能夠切換的用戶角色 命令
root ALL= (ALL) ALL
User_Alias ADMINS = jsmith,mikem, %groupname Host_Alias FILESERVERS = fs1,fs2 Runas_Alias OP = root Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

用戶別名

User_Alias KAIFA_ADMINS = kaifa01, kaifa02
User_Alias OLD_ADMINS = oldboy, oldgirl, %sa
User_Alias OLD_NETADMINS = leo,maya

主機別名

Host_Alias     FILESERVERS = fs1, fs2

角色別名

Runas_Alias  OP1 = root, oldboy
Runas_Alias  OP2 = root, oldgirl

命令別名

Cmnd_Alias    USERCMD = /usr/bin/passwd [a-zA-Z0-9]*, /bin/chown, /bin/chmod, !/usr/bin/passwd root
Cmnd_Alias   DISKCMD = /sbin/fdisk, /sbin/parted
Cmnd_Alias   NETMAGCMD = /sbin/ifconfig, /etc/init.d/network
Cmnd_Alias   CTRLCMD = /usr/sbin/reboot, /usr/sbin/halt
Cmnd_Alias   KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat

sudo日誌審計

visudo 最後添加

Defaults        logfile=/var/log/sudo.log

各類開源跳板機或堡壘機

  • jumpserver
  • gateone
  • teleport

文件權限

[root@localhost ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1514 10月 18 21:28 /etc/passwd

linux系統的三種權限

  • 全部者(屬主):當用戶建立文件時,建立者就是這個文件的屬主
  • 用戶的屬組: 同組人
  • 其餘人

三種基本權限

權限 含義 八進制數字表示
r 4
w 2
x 執行 1
- 沒有任何權限 0
屬主 屬組 其餘用戶
rw- r-- r--
6 4 4

三種基本權限對文件目錄含義

權限 文件 目錄
r:讀 查看閱讀 列出目錄中文件列表
w:寫 對文件內容增 刪 改操做 在目錄中建立文件 刪除文件 修改文件名
x:執行 運行 可使用cd命令進入目錄

訪問文件時,linux權限的執行順序

  • 訪問者是屬主嗎?若是是,啓用用戶權限,不是,執行下一步
  • 是屬組成員嗎? 若是是, 啓用組權限
  • 以上都不是,啓用其餘人權限
  • 以上都沒經過,被拒絕訪問

權限設置

chmod命令格式

chmod [選項]... 模式[,模式]... 文件...
chmod [選項]... 八進制模式 文件...

模式

用戶類型 操做字符 權限字符
ugoa +-= rwx-

八進制模式

三個八進制數: 屬主 屬組 其餘人

chown 修改文件屬主和屬組

chown  [選項]...  [全部者][:[組]] 文件

經常使用選線 -R

chown  用戶   文件或目錄
chown  :組    文件或目錄
chown  用戶:組  文件或目錄
chown  用戶.組  文件或目錄

各類權限組合對文件目錄的做用

權限 針對文件 針對目錄
--- 什麼都作不了 什麼都作不了
r-- 能夠查看文件內容 只能看到文件名
-w- 對文件寫操做會覆蓋文件內容 什麼都作不了
--x 什麼都作不了 能夠cd
rw- 正常讀寫 只能查看文件名
r-x 可讀可執行 能夠cd 能夠查看
-wx 對文件寫操做會覆蓋文件內容 能夠cd 能夠寫 不能查看
rwx 什麼均可以作 什麼均可以作

umask

  • 控制默認權限
  • 系統內核文件默認權限是666
  • 系統內核目錄默認權限是777

umask默認值

  • root用戶:umask(022)
  • 其它用戶:umask(002)

修改umask值

umask 數字

文件默認權限控制

  • 文件默認權限=系統內核文件默認權限-umask
  • 目錄默認權限=系統內核目錄默認權限-umask

對於文件 umask值任意一位是奇數時, 減umask值 後, 對應位爲奇數的 加1

默認權限與權限安全臨界點

  • inux的默認權限就是安全的臨界點,也是最佳的權限
  • 目錄 755 文件 644 是相對安全的臨界點

特殊權限位

  • suid
  • sgid
  • sticky(粘滯位)

suid

4(SUID) 設置SUID的文件,不管誰執行此文件,他都有文件全部者的權限

  • SUID 權限僅對二進制程序(binary program)有效
  • 執行者對於該程序須要具備x的可執行權限;
  • 本權限僅在執行該程序的過程當中有效 (run-time);
  • 執行者將具備該程序擁有者 (owner) 的權限。

sgid

2(SGID) 設置SGID的目錄,不管誰來此目錄,他都有目錄所屬組的權限

  • SGID 能夠針對目錄來設置,目錄設置sgid後,普通用戶放到這個目錄下的文件的用戶組跟這個目錄走
  • SGID 對二進制程序的做用跟suid相似
  • 程序執行者對於該程序來講,需具有 x的權限
  • 執行者在執行的過程當中將會得到該程序羣組的支持

sticky(粘滯位)

1(sticky) 存放在該目錄的文件只容許屬主操做

特殊權限位設置

chmod  4755  filename  
chmod  u+s filename
chmod  g+s filename
chmod  +t  /tmp
suid sgid sticky
4 2 1

chmod沒有執行權限修復

install

install [選項]... 源文件 目標文件

install -m 755 chmod /bin/chmod

隱藏權限

設置隱藏權限

chattr

chattr [選項] 參數(文件)

+  -  =

i 不可改變

a 只能添加數據,不能刪除 通常用於日誌文件

A atime不可修改 S 磁盤I/O同步

c 數據存取時通過壓縮
d 不備份

j 日誌功能 從ext3開始有此功能
s 保密性的刪除文件,硬盤空間所有回收
u 最大限度保存數據

查看隱藏權限

lsattr  文件名

進程管理

程序

靜態的指令集合

不佔用系統的運行資源

不能申請系統資源、不能被系統調度、也不能做爲獨立運行的單位

進程概念

進程(Process)是一個程序在其自身的虛擬地址空間中的一次執行活動。
一個程序的動態執行過程,它具備生命期,是動態的產生和消亡的

資源申請、調度和獨立運行的單位,所以,它使用系統中的運行資源

進程的類型

  • 交互進程
  • 批處理進程
  • 守護進程

進程的屬性

  • 每一個進程都存在於機器的物理內存中
  • 每一個進程都有一個PID做爲進程識別號
  • 每一個進程除了PID以外還有另外4個識別號
    • 實際用戶識別號
    • 實際組識別號
    • 有效用戶識別號
    • 有效組識別號

進程的輸入輸出環境

打開文件的描述符

  • 幾乎每一個進程都從外部源讀取信息或將信息寫入外部源,一般是二者兼有
  • 在Linux系統中,打開文件的描述符充當信息源或接收器
  • 進程從文件描述符中讀取信息或者將信息寫入文件描(數字)述符中
  • 文件描述符能夠與常規文件、設備節點、網絡套接字鏈接,甚至和其餘描述符鏈接,構成管道(容許進程間通訊)

內存映射文件

最常被用來存放進程的可執行代碼,也用於其餘類型的非串行數據訪問

文件系統環境

和進程相關的文件系統概念,例如進程的當前工做目錄、和進程的umask(用來爲新生成文件設置權限)

環境變量

全部環境變量的集合,稱爲進程的環境

遺留信息

  • 每一個進程都以PID或進程id來識別,PID在進程建立時指定
  • 每一個進程都有一個明肯定義的父進程和可能被充分定義的子進程
  • 一個進程自己的身份、其子進程的身份,以及在某種程度上其同胞進程的身份都是由該進程來維護的

憑證

  • 每一個進程在一個一個給定用戶id和組id集合環境下運行。這些憑證限制進程所能訪問的資源
    • 文件操做
    • 和其餘哪些進程通訊

資源統計和限制

  • 內存大小
  • 打開的文件數目
  • CPU時間總量及其餘

進程的啓動方式

  • 前臺啓動
  • 後臺啓動
  • 調度啓動

進程管理工具

ps

進程選擇

-A,-e,ax   全部進程
-C,commmand    全部command的實例
-U,--user    username     屬於user的全部進程
-t,--tty  terminal    從terminal啓動的全部進程
-p,p,--pid  N     Pid爲N的進程

-eo

選項 含義
user 用戶名
uid UID
pid 進程號
ppid 父進程號
size 內存大小
vsize 總虛擬內存大小
share 共享頁面文件數量
nice 進程優先級
pmem 物理內存佔用率
trs 程序執行代碼駐留大小
rss 進程使用的總物理內存數 kbytes
time cpu使用時間
stat 進程狀態
cmd(args) 命令內容

#### 輸出選擇

選項 含義
-f 詳盡列表
-l,l 長格式
-j,j 做業格式

top

按鍵

按鍵 含義
q 退出
h或? 幫助
S 設置兩次更新之間的時間(以秒爲單位)
Space 更新顯示
M 根據內存大小對進程排序
P 根據CPU(處理器)佔用對進程排序
U 顯示特定用戶的進程
K 殺死進程(給進程發送信號)
R 更改進程優先級
z 高亮顯示
x 選中列
shift + < 或 > 移動選中列
c 命令詳細

選項

選項 含義
-d secs 在兩次刷新之間延遲secs秒(默認爲5秒)
-n N 刷新N次後退出
-p 只監控指定的進程PID
-i 只顯示正在使用CPU的進程
-H 顯示線程
-u 只查看指定用戶名的進程
-b 將輸出編排成易處理格式,適合輸出到文件處理

顯示結果說明

列名 含義
PID 進程ID
USER 進程全部者
PR 進程優先級
NI 負值表示高優先級,正值表示低優先級
VIRT 進程啓動後使用虛擬內存總量(KB), VIRT=SWAP+RES
RES 實際物理內存使用大小(KB),RES=CODE+DATA
SHR 共享內存大小(KB),可能與其它進程共享的內存;計算進程使用物理內存大小: RES-SHR
S 進程狀態; R 運行, S 休眠, D 不可中斷, T 中止, Z 殭屍
%CPU 上次更新到如今的CPU時間佔用百分比
%MEM 使用物理內存百分比
TIME+ 使用CPU總時間
COMMAND 命令名稱和參數

進程的狀態

  • 在Linux系統中,第一個進程由內核在啓動時運行
  • 其餘全部進程都是父進程自我複製或派生(forking)的結果
  • 一個進程由另外一個進程執行的過程叫作exec
  • 新命令由進程(一般是Shell)運行,首先派生(fork),繼而執行(exec)。這種機制被稱爲派生和執行(forkandexec)機制
  • 進程老是處於五種狀態之一
  • 當進程終止時,父進程負責收集進程的返回值和資源使用信息
  • 若是父進程在子進程以前終止,失去父進程的子進程託孤給第一個進程

五種狀態

  • 可運行(R)
    • 處於可運行狀態的進程,一旦有機會,就會訪問CPU
    • 在任何給定時間內只有一個進程能夠在CPU上運行
  • 自願(可中斷的)睡眠(S)(可中斷睡眠(等待事件完成))
  • 非自願(不可中斷或強制)睡眠(D)
    • 內核迫使進程進入非自願睡眠狀態
    • 當資源被釋放時,內核會喚醒進程並將設置爲可運行狀態
  • 中止的(掛起的)進程(T)( 被掛起的進程在被用戶從新啓動前不會執行任何操做 )
  • 殭屍進程(Z)
    • 每一個快要終止的進程會經歷一個短暫的殭屍狀態
    • 有時有些進程會一直停留在殭屍狀態

狀態其它說明

符號 含義
< 高優先級
N 低優先級
L 將頁面鎖定到內存中
s 是session領導者
l 是多線程的
+ 位於前臺進程組中

進程如何啓動

  • 引導系統時,Linux內核啓動第一個進程。一個已存在的進程繼續派生,全部其餘進程得以啓動
  • 在一般狀況下,建立一個新進程是爲了運行一個指定的命令(例如,bash Shell建立運行chmod命令的進程)
  • Linux(和UNIX)系統不一樣於其餘操做系統,進程建立和命令執行是兩個不一樣的概念
    • 不運行新命令也能夠建立新進程
    • 不建立新進程也能夠運行新命令

建立新進程

  • 新進程經過一種名叫派生的方式建立
  • 當進程派生時,它建立本身的一個副本
  • 新派生的進程(子進程)幾乎精確複製了原進程(父進程)
  • 子進程繼承了與父進程內存徹底同樣的副本,繼承了父進程任何打開的文件,而且繼承徹底同樣的父進程擁有的任何參數。例如當前工做目錄或umask
  • 執行新命令(exec)
    • 執行新命令時,當前進程清除並釋放出它的大多數資源,從文件系統中指定的命令那裏裝入一套新指令。新程序從程序的入口點開始執行

父進程與子進程直接的區別

  • 子進程的遺留信息(子進程有不一樣的進程ID和父進程ID)
  • fork()系統調用的返回值

進程如何終止

  • 經過選擇退出(exit)正常終止
  • 接收到信號而非正常終止

孤兒進程

若是父進程在子進程以前終止,這個子進程就變成了孤兒進程

殭屍進程

  • 當進程退出,釋放大多數資源和它的父進程收集它的返回值、釋放剩餘資源這兩段時間之間,子進程處於一個特殊狀態,被稱爲殭屍進程(zombie)
  • 每一個進程都會通過一個短暫的殭屍狀態

進程優先級

數字越小,優先級越高

範圍

-20(最大優先級)~19(最小優先級)

進程優先級修改

renice -15 -p 3371    #進程號爲3371的進程優先級設置爲-15

進程間通訊(IPC)方式

  • 管道
  • 信號
  • 消息隊列
  • 共享內存
  • 套接字(socket)
    • 本地(unix /tmp/mysql.sock )
    • 網絡 ( tcp 10.0.0.51:3306 10.0.0.51:36572 1224/mysqld )

信號

爲何要發送信號

  • 硬件異常
  • 軟件狀態
  • 終端中斷
  • 其餘進程

kill發送信號

信號名 信號數字 含義
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + )
KILL 9 強制終止
TERM 15 終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)

trap

trap "reboot" 2   #獲取2信號,執行reboot命令
trap ""  2   #屏蔽一個信號
trap 2    #恢復信號

做業

Bash容許前臺運行一個做業,後臺運行多個做業

從shell提示符運行命令時,除非特別指定,命令會在前臺運行

經過給命令行附加一個「&」字符,任何指定的命令也能夠在後臺運行

做業管理

jobs    #查看後臺做業
ctrl+z  #掛起當前的前臺做業,並將其置於後臺
bg  %num    # 將後臺做業由stoped變成running
fg  %num    #把後臺的做業搬到前臺
kill  %N    #終止後臺做業N
&    #後臺運行程序
nohup   #將程序以忽略掛起信號的方式運行起來,被運行的程序的輸出信息將不會顯示到終端

screen

screen -S test    #建立一個名稱爲test會話,並進入此會話
Ctrl+a+d     #按Ctrl+a,而後再按d  暫時離開當前會話
screen -ls   #查看全部screen會話
screen -r test   #進入test會話

進程相關內存文件

  • /proc

    • 進程號目錄

      • cmdline
      • comm
      • exe -> /usr/sbin/sshd
      • fd
      • smaps
      • status
    • cpuinfo

    • diskstats

    • filesystems

    • fs

    • loadavg

    • meminfo

    • swaps

    • uptime

    • vmstat

  • /sys
    • dev
    • devices
    • fs
    • kernel
    • module

服務管理

服務:啓動後在後臺執行,等待用戶或其餘軟件調用

分類

  • 系統服務--服務對象是linux系統自己
  • 網絡服務--服務對象是網絡中的其餘客戶端

啓動方法

  • 獨立系統服務
    • 一經啓動,後臺駐留,無論是否被用到
    • 響應速度快
    • 佔用資源
  • 臨時服務
    • 用時啓動,使用完畢結束
    • 節省資源
    • 響應慢

獨立系統服務管理

C6

/etc/init.d/* ----> /etc/rc.d/init.d/*

service   servername  start/stop/restart/reload/status

C7

/usr/lib/systemd/system/*.service

systemctl  start/status/stop/restart/reload  servername

開機啓動設置

C6

chkconfig   servername   on/off

開機啓動的本質

ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle

備註

S表示服務開啓
K表示服務關閉

C7

systemctl   enable/disable  servername

開機啓動本質

Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.

設置開機啓動項目

/etc/rc.local -----> /etc/rc.d/rc.local

臨時服務管理

xinetd

計劃任務

計劃任務種類

  • 突發性(只執行一次) -- at batch
  • 週期性 -- cron

at

只執行一次的任務

服務

atd

相關文件

/etc/at.allow   #容許使用at的用戶
/etc/at.deny    #禁止使用at的用戶
/var/spool/at/   #計劃任務存放位置

at命令選項

選項 含義
-m 完成工做後,使用郵件通知用戶
-l 查看計劃任務
-d 刪除
-v 詳細信息
-c 查看工做的詳細內容

時間格式

HH:MM [YY-MM-DD]

操做步驟

at 04:00
at> command
ctrl+d 退出

cron

週期性執行任務

服務

crond

相關文件

/etc/cron.allow
/etc/cron.deny
/etc/cron.d
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/var/spool/cron/
/etc/crontab

crontab命令選項

-u 用戶名   指定用戶名稱
-e 定製計劃任務
-l 查看計劃任務

計劃任務中的內容

任務
0-59 0-23 1-31 1-12 0-7 命令或腳本

計劃任務中的特殊符號

符號 含義
* 任什麼時候間
, 分隔時間
- 時間範圍
/n 每隔n個單位

計劃任務須要注意的問題

執行的任務的輸出必定要重定向

vi編輯器

linux下的文本編輯器

插入(編輯)模式

命令 含義
i 在當前光標插入
a 在當前光標後面插入
o 在當前行下一行插入一個新的空行並進入編輯模式
O 在當前行上一行插入一個新的空行並進入編輯模式
C 把光標所在位置到行尾的內容刪除並進入編輯模式

命令模式

  • 移動光標
含義 命令
移動到文件的最後一行 G
移動到文件的第一行 gg
把光標移動到行尾 $
把光標移動到行首 ^
移動到第100行 100gg 100G
移動光標到括號的另外一半 %
  • 複製剪切粘貼刪除等操做
含義 命令
複製當前行 yy
粘貼 p
剪切當前的內容 dd
剪切光標到行首內容 d^
剪切光標到行尾內容 d$
剪切一個單詞 dw
剪切當前行到最後一行內容 dG
剪切當前行到第一行內容 dgg
撤銷 u
恢復 ctrl + r
剪切光標位置一個字符 x
替換光標位置一個字符 r

末行模式(:)

含義 命令
顯示行號 :set nu
取消顯示行號 :set nonu
取消高亮顯示 :noh
保存文件內容 :w
退出 :q
保存文件內容並退出 :wq
強制退出 :q!
強制保存退出 :wq!
n1到n2行查找word1並替換爲word2 :n1,n2s#word1#word2#g
全文查找word1並替換爲word2 :%s#word1#word2#g
將n1到n2行的內容移動到n3行後面 :n1,n2 m n3
將n1到n2行的內容拷貝到n3行後面 :n1,n2 co n3
刪除n1到n2行的內容 :n1,n2d
刪除空行及所有是空白字符的行 :g/^\s*$/d
刪除全部行尾的空白字符 :%s#\s*$##
保存當前文件到filename文件 :w filename
將n1到n2行的內容保存成filename文件 :n1,n2 w filename
讀入filename文件內容並加載到當前文件 :r filename
暫時離開vi到命令行模式下執行command的顯示結果 :!command
幫助 :h :wq
切換到下一個文件 :bn
切換到上一個文件 :bp

末行模式(/或?)

  • / 向下搜索
  • ? 向上搜索

視圖模式

  • 一、 ctrl + v / shift + v

  • 二、 光標(任意移動光標的命令)選中

  • 三、 命令

    • 批量插入模式 I

    • 批量刪除內容 x

  • 四、 esc 退出視圖模式(插入模式須要退出)

shell基礎

  • 命令補全和文件路徑補全tab

  • 快捷鍵
  • 命令記憶功能
  • 別名功能
  • shell執行命令順序
  • shell類型
  • shell環境加載文件
  • 字符流處理
  • 變量相關
  • shell符號

快捷鍵

ctrl+c  終止當前命令或程序
ctrl+d  退出當前shell
ctrl+l  清屏
ctrl+a  命令行光標移到行首
ctrl+e  命令行光標移到行尾
ctrl+u  命令行刪除光標到行首的內容
ctrl+k  命令行刪除光標到行尾的內容
ctrl+y   粘貼
ctrl+r  命令行搜索
ctrl+  <   光標左移一個單詞
ctrl+  >   光標右移一個單詞
ctrl+s  鎖屏
ctrl+q  解鎖

別名功能

本身設置一個命令,執行時實際上是執行另外一個命令

[root@repo ~]# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

shell執行命令順序

別名--->函數--->內置命令--->外部命令(可執行文件)

shell類型

  • 交互式shell
  • 非交互式shell

shell環境配置文件

/etc/profile           通用的有效環境變量
/etc/profile.d/*.sh    軟件包特有的環境變量
~/.bash_profile        用戶特有的環境變量
~/.bashrc             用戶特有的別名、shell功能和shell選項
/etc/bashrc           通用別名、shell功能和shell選項
~/.bash_logout       用戶退出shell執行
~/.bash_history      命令歷史記憶功能history

登陸式shell

登陸式shell加載配置文件順序

/etc/profile -> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

非登陸式shell

~/.bashrc -> /etc/bashrc

退出shell

~/.bash_logout

shell環境加載文件

source(或.)  文件

字符流處理

輸入與輸出

  • 標準輸入 0 鍵盤
  • 標準輸出 1 顯示器
  • 標準錯誤 2 顯示器

輸入輸出重定向

  • 輸入重定向
< (或  0<)   覆蓋  
<< (或 0<<)  追加
  • 輸出重定向
> (1>)    覆蓋
>> (1>>)  追加
  • 錯誤輸出重定向
2>    覆蓋
2>>   追加
  • 標準輸出與錯誤輸出合併
2>&1    &>

管道(|)

  • | 將前者命令的標準輸出交給後者命令的輸入
  • |& 將前者命令的錯誤輸出交給後者命令的輸入
  • |xargs 前面命令的標準輸出傳給後面命令,做爲後面命令的參數

子shell

  • 子shell的本質是shell的子進程
  • 子進程是由父進程的概念引伸而來,在linux系統下,咱們所運行的應用程序幾乎都是從init(systemd)(pid爲1的進程)進程延伸出來的
  • shell子進程是從一個父shell進程調用shell程序而產生的一個全新的shell

  • source(或 .)

  • export

變量相關

變量

  • 存儲程序運行過程當中的一些中間結果,爲了方便之後調用
  • 變量表明一個有名字的,具備特定屬性的一個存儲單元
  • 它用來存放數據,也就是存放變量的值
  • 在程序運行期間,變量的值是能夠改變的

Variables變量 are used to store保存、儲存
information信息 to be referenced被之後調用
and manipulated操做或更改 in a computer program程序.
They also而且還 provide提供 a way方式 of labeling標記 data數據 with a descriptive描述性 name,
so our programs can be understood理解 more clearly更清晰 by the reader閱讀者 and ourselves咱們本身.
It is helpful to think of variables as containers容器 that hold保持、保存 information(若是咱們把變量看做成是一個保存信息的容器是更容易理解的).
Their sole主要 purpose目的 is to label標記 and store存儲 data in memory內存裏. This data數據 can then而後 be used使用它 throughout整個 your program

變量名

  • 由字母、數字、下劃線組成
  • 必須以字母或者下劃線開頭,通常以字母開頭
  • 不能是編程語言保留字(關鍵字)
  • 變量命名要見名知意

變量賦值

變量名=變量值

變量取值

$變量名

環境變量

  • 通常用於定義shell的運行環境,保證shell命令的正確執行
  • shell經過環境變量來肯定登陸用戶名、命令路徑、終端類型、登陸目錄等,可用於全部子進程中

  • 定義它的shell及其子shell可使用,使用export申明

特殊變量

?  獲取執行上一個命令的返回值
$  獲取當前執行腳本的進程號
!  獲取上一個後臺進程號信息
_  獲取上一個命令的最後一個參數

shell符號

元字符

/   根目錄或者路徑分隔符
~   用戶家目錄
#   註釋
.  當前目錄 隱藏文件名開頭
..  上級目錄
$   取變量值
\   轉義符號(或 續行符)
!   執行歷史記錄中的命令(或取反)
&   後臺執行命令
()   子shell中執行命令
{}   {a,g,l}  {1..100}  {1..10..2}

引號

符號 含義
'' 單引號 強引用 全部字符都不解析
"" 雙引號 弱引用 能夠解析 $ \ ! | | \`

命令關係符

符號 含義
; 順序執行每一個命令
&& 前面執行成功, 則執行後者
|| 前面執行失敗, 則執行後者

通配符

匹配命令參數

符號 含義
* 匹配任意多個字符
? 匹配任意一個字符
[] 匹配括號中任意一個字符a-z,0-9,A-Z,a-Z
[^] 排除括號中任意一個字符a-z,0-9,A-Z,a-Z

shell模式匹配

shopt 內置命令啓用shell選項 (extglob) 則會識別幾個擴展模式匹配運算符

  • 查看
shopt |grep extglob
  • 開啓
shopt -s extglob
  • 關閉
shopt -u extglob
符號 含義
?(pattern-list) 匹配給定模式零或一次
*(pattern-list) 匹配給定模式零次或屢次
+(pattern-list) 匹配給定模式一次或屢次
@(pattern-list) 匹配給定模式之一
!(pattern-list) 匹配除了給定的模式

重要命令

find

find [path...] [expression]

  • 默認路徑爲當前目錄;默認表達式爲 -print
  • 表達式組成:操做符、選項、測試表達式以及動做

操做符

優先級遞減;未作任何指定時默認使用 -and

( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

比較測試

N 能夠是 +N 或 -N 或 N

表達式

-type [bcdpflsD]
-name 匹配模式
-iname 匹配模式 
-size N[bcwkMG] 
-atime N
-ctime N 
-mtime N 
-amin N
-cmin N
-mmin N
-uid N
-gid N 
-used N 
-user NAME
-group 名稱
-inum N
-perm [-/]MODE
-regex PATTERN
-iregex 匹配模式
-path PATTERN 
-ipath 匹配模式


-anewer FILE  
-empty 
-false 
-fstype 類型 
-ilname 匹配模式
-links N 
-lname 匹配模式 
-cnewer 文件
-newer 文件
-nouser 
-nogroup 
-readable 
-writable 
-executable
-wholename PATTERN 
-true  
-xtype [bcdpfls]
-context 文本

操做

-delete

-print
-print0
-printf 格式

-fprintf 文件 格式 
-fprint0 文件 
-fprint 文件 

-ls 
-fls 文件 

-prune

-exec 命令 ; 
-exec 命令 {} + 

-quit
-ok 命令 ;

echo

選項

-n     不自動換行
-e    支持轉義字符

字體顏色

echo -e "\033[30m 黑色字oldboy trainning \033[0m"
echo -e "\033[31m 紅色字oldboy trainning \033[0m"
echo -e "\033[32m 綠色字oldboy trainning \033[0m"
echo -e "\033[33m 黃色字oldboy trainning \033[0m"
echo -e "\033[34m 藍色字oldboy trainning \033[0m"
echo -e "\033[35m 紫色字oldboy trainning \033[0m"
echo -e "\033[36m 天藍字oldboy trainning \033[0m"
echo -e "\033[37m 白色字oldboy trainning \033[0m"

背景顏色

echo -e "\033[40;37m 黑底白字 welcome to old1boy\033[0m"
echo -e "\033[41;37m 紅底白字 welcome to old2boy\033[0m"
echo -e "\033[42;37m 綠底白字 welcome to old3boy\033[0m"
echo -e "\033[43;37m 黃底白字 welcome to old4boy\033[0m"
echo -e "\033[44;37m 藍底白字 welcome to old5boy\033[0m"
echo -e "\033[45;37m 紫底白字 welcome to old6boy\033[0m"
echo -e "\033[46;37m 天藍白字 welcome to old7boy\033[0m"
echo -e "\033[47;30m 白底黑字 welcome to old8boy\033[0m"

cat

選項

-n     顯示全部行行號
-A    顯示全部

輸出

cat<<-EOF
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
EOF

輸入輸出

cat >> /etc/profile <<'EOF'
$PATH
EOF

date

語法

date [OPTION]... [+FORMAT]

選項

選項 說明
-s 設置日期與時間
-d 顯示字符串所指的日期與時間 -2day +48Hour +1440Min

格式

符號 含義
%F 年月日
%T 時分秒
%w 星期 週日顯示0
%u 星期 週日顯示7
%Y
%m
%d
%H
%M
%S

seq

語法

seq [OPTION]... FIRST INCREMENT LAST

選項 說明
-s 指定分隔符(默認\n)
-w 使輸出字符串寬度相等
-f FORMAT 指定格式
seq  -s " "  -f "stu%g"  10 15

sort

選項 說明
-r 降序
-o 把排序後的結果輸出到文件
-n 以數字排序
-k 指定列 -k 1.2 第一列第二個字符開始到本列最後一個字符
-t 指定分隔符
-h 以人類可讀排序
-R 隨機排序
-u 去除重複行
-f 忽略大小寫

uniq

選項 說明
-c 打印出現的次數
-d 只打印重複行
-D 只打印重複行,而且把全部重複行打印出來
-u 只打印不重複行
-i 忽略大小寫
-f N 比較時跳過前N列
-s N 比較時跳過前N個字符
-w N 對每行第N個字符之後內容不作比較

cut

選項 說明
-b 選中第幾個字符
-c 選中多少個字符
-d 指定分隔符,默認是空格
-f 指定字段

tr

語法

tr [OPTION]... SET1 [SET2]

默認是將set1中的字符替換爲set2中的字符

選項

選項 說明
-c set1的補集
-d 刪除set1中字符
-s 把set1中連續重複的字符以單獨一個字符表示

wc

-c     打印文件字節數,一個英文字母1字節,一個漢字佔2-4字節
-m    打印文件字符數,一個漢字佔2個字符
-l    打印文件行數
-L     打印最長行的長度,也能夠統計字符串的長度

set

  • 顯示shell變量的名稱和值
  • 設置shell位置參數的值
  • 設置或取消設置shell選項
    • -x 打開調試模式
    • +x 關閉調試模式

env

bash

選項 說明
-c bash從字符串中讀入命令,若是字符串後還有變量就被設定爲從$0開始的位置參數
-n 檢測腳本是否正確,並不執行腳本
-x 執行腳本,輸出執行過程

正則表達式

匹配位置

符號 含義
^ 匹配開頭
$ 匹配結尾
^$ 匹配開頭結尾 (即空行)
\<...\> 錨定邊界

匹配內容

  • . 任意一個字符

  • []
    • [abc] 匹配a或者b或者c任意一個字符
    • [^abc] 匹配非a且非b且非c 任意一個字符
    • [a-z] 匹配a到z中的任意一個字符
  •   轉義
    • \b 單詞邊界
    • \w [a-Z0-9]中任意一個字符
    • \W [^a-Z0-9]
    • \s 任意一個空白字符
    • \S 任意一個非空白字符
  • | 或
  • () 分組 (把多個內容當作一個總體)

匹配次數

  • * 重複前面一個字符任意屢次(0次或屢次)
  • + 重複前面一個字符1次或屢次
  • ? 重複前面一個字符0次或1次
  • {}
  • a{n,m} 匹配a這個字符 n到m次
  • a{n,} 匹配a這個字符至少n次
  • a{,m} 匹配a這個字符最多m次
  • a{n} 匹配a這個字符n次

備註

擴展正則表達式

  • ?
  • |
  • ()
  • {}

grep

語法

grep   [OPTION]...    PATTERN   [FILE]...
選項 說明
-o 僅顯示匹配的內容
-i 忽略大小寫
-n 顯示行號
-v 反向選擇
-E 擴展的grep
-A 顯示匹配字符串及其後n行
-B 顯示匹配字符串及其前n行
-C 顯示匹配字符串及其先後各n行
-w 匹配單詞
-c 包含關鍵字的有多少行
-m 匹配地幾個
-a 在二進制文件中,以文本文件方式搜索
-l 匹配多個文件時,顯示匹配的文件名
-r 遞歸
-P 調用perl正則

perl正則

名字 表達式 含義
(零寬度正預測先行斷言 ) (?=subexp) 若是匹配到右邊則成功
(零寬度負預測先行斷言) (?!subexp) 若是沒有匹配到右邊則成功
(零寬度正回顧後發斷言) (?<=subexp) 若是匹配到左邊則成功
(零寬度負回顧後發斷言) (?<!subexp) 若是沒有匹配到左邊則成功
[root@bogon ~]# ip a s eth0 |grep -Po '(?<=inet )([0-9]{1,3}\.?){4}'
10.0.0.130
[root@bogon ~]# ip a s eth0 |grep -Po '([0-9]{1,3}\.?){4}(?=/[0-9]{1,2})'
10.0.0.130

sed

語法

sed [option] '條件{sed-commands...}' [input-file]

選項

-n      取消默認輸出,常與sed軟件的p命令連用
-r     支持擴展正則表達式,默認只支持基本正則表達式
-i      修改文件內容(修改磁盤上的數據),sed軟件默認只修改內存中的數據
-e      每一個 -e 選項後可接一個命令
-s     把後面的多個文件當作一個一個的單獨文件 ,sed默認會把多個文件當作一個文件
-f      選項後面能夠接sed腳本的文件名

sed命令

p     打印模式空間的內容,一般p與選項 -n 一塊兒使用
=     打印行號

a     追加,在指定行後添加一行或多行文本
i      插入,在指定行前添加一行或多行文本

d    刪除指定的行

c 取代指定的行

s 替換

  • Ms#▇#▲#Ng
  • 把▇替換爲▲
  • ▇能用正則表達式,但▲不能用,必須是具體的
  • Ms 第M行處理,無g標誌,只處理第一處,有g標誌則處理所有
  • Ng 從第N處開始處理到結尾
  • N 只處理第N處 ( N的取值範圍: 1<N<512 )

  • 分組替換
    • \1爲第一個記住的模式,即第一個小括號中匹配的內容
    • \2爲第二個記住的模式,即第二個小括號中匹配的內容
    • sed最多能夠記住9個
    • &表明▇
  • 擴展
    • \u 將下一個字符轉爲大寫
    • \l 將下一個字符轉爲小寫

y

根據對應位置轉換字符

w

另存,把模式空間的內容保存到文件中

q

退出sed

!

不執行命令,放在命令前面

;

鏈接兩個命令

N

不清空模式空間,並讀取下一行數據並追加到模式空間

標籤(本段內容可忽略)

:label

定義一個標籤(這裏的label是標籤名,可自定義)

b label

跳轉到該標籤執行它後面的命令

t label

若是前面的命令執行成功,那麼就跳轉到t指定的標籤處,繼續往下執行後續命令,不然,仍然繼續正常的執行流程

T label

若是前面的命令執行失敗,那麼就跳轉到t指定的標籤處,繼續往下執行後續命令,不然,仍然繼續正常的執行流程

地址範圍

  • 10{sed-commands} 第10行
  • 10,20{sed-commands} 第10到20行
  • 10,${sed-commands} 第10到最後一行
  • 10,+20{sed-commands} 第10到30(10+20)行
  • 1~2{sed-commands} 第1,3,5,7...行

  • 行號能夠換成模式(條件) /pattern/

awk

語法

awk    [option]    'BEGIN{ commands } pattern{ commands } [pattern{ commands }]...END{ commands }'

選項

-F     指定列分隔符
-v  var=val   自定義變量賦值
-P(或--posix)   支持{}
-f   指定awk腳本文件

字段(列)

每條記錄都是由多個字段組成的,默認狀況下字段之間的分隔符是由空格(或tab)

變量名 含義
$1 第一個字段
$2 第二個字段
$3 第三個字段
$NF 最後一個字段
$0 整行
NF 每行字段數
FS 輸入字段分隔符
OFS 輸出字段分隔符

記錄(行)

默認記錄(行)分隔符爲換行

變量名 含義
NR ( number of record) 行號,記錄的數 awk當前處理着的,記錄的數
RS (record separator) 輸入記錄(行)分隔符
ORS (output record separator) 輸出時候的分隔符
FNR 當前文件的讀入記錄號

正則匹配

/pattern/      整行正則匹配
$3~/pattern/    $3正則匹配
$4!~/pattern/    $4正則不匹配

模式

範圍模式

/pattern1/,/pattern2/{command}
/pattern/,NR==xxx{command}
NR==xxx,NR==xxx{command}

邏輯模式

/pattern/  &&  /pattern/    邏輯and,同時知足兩個模式
/pattern/  ||  /pattern/     邏輯or,知足其中一個模式
!/pattern/    邏輯not,不知足模式
pattern ? pattern : pattern

BEGIN{}

awk讀取文件以前執行

END{}

awk讀取完全部文件以後,再執行END模塊

網絡

OSI網絡模型

  • 應用層
    • 應用程序及接口 提供應用程序的接口 ftp telnet http dns pop3等
  • 表示層
    • 對數據進行轉換,加密和壓縮
  • 會話層
    • 創建、管理和終止會話
  • 傳輸層
    • 端到端的鏈接 接收上一層的數據, 分段 重組 鏈接控制
  • 網絡層
    • 控制子網的運行,如邏輯編址, 分組傳輸, 路由選擇 將上層分段的數據進行打包
  • 數據鏈路層
    • 將分組數據封裝成幀;提供節點到節點方式傳輸 物理尋址,並將原始比特流轉變爲邏輯傳輸線路
  • 物理層
    • 機械,電子,定時接口通訊信道上的原始比特流傳輸

tcp/ip網絡模型

應用層

  • http
  • ftp
  • dns
  • smtp
  • snmp

傳輸層

  • tcp

  • udp

網絡層

  • ip
  • icmp
  • 各類路由協議

接入層

  • arp
  • rarp

網絡模型特色

  • 網絡模型每層都有本身的功能集
  • 層與層之間相互獨立又相互依靠
  • 上層依賴於下層,下層爲上層提供服務

網絡傳輸介質

  • 有線
    • 雙絞線(網線)
    • 光纖
    • 同軸電纜
  • 無線
    • wifi
    • 藍牙
    • 紅外

網絡設備

網卡

交換機

鏈接多個計算機組成一個網絡,讓計算機之間通訊

在一個交換機的端口上鍊接的全部終端設備,均在一個網段上(稱爲一個廣播域)

同一網絡

路由器

鏈接多個網絡,讓不一樣的網絡通訊

數據轉發,維護路由表

路由器會做爲網關

鏈接廣域網(WAN)

網關: 不一樣網絡通訊的邏輯地址

路由: 網絡間數據通訊的規則

網絡檢查相關命令

  • ping
  • telnet
  • traceroute
  • tracert

linux網絡配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0       <- 第一塊網卡邏輯設備名;第二塊爲eth1
TYPE=Ethernet      <- 上網類型,目前基本都是以太網
UUID=sasd-sdasd-wqe-12   <- 通用惟一識別碼(Universally Unique Identifier);克隆虛擬主機時,要進行刪除(centos6)
HWADDR=00:0c:29:10:2e:28    <- 以太網硬件地址即MAC地址,若是是vmware克隆的虛擬機 克隆虛擬主機時,要進行刪除(centos6)
ONBOOT=yes      <- 這個地方要設置爲yes,才能保證下次開機啓動激活網卡設備
NM_CONTROLLED=no       <- 是否經過NetworkManager管理網卡設備(centos6關閉)
BOOTPROTO=none         <- 啓動協議,獲取IP地址配置方式,有none|bootp|dhcp三個選項
IPADDR=10.0.0.51         <- 表示本臺局域網中服務器的固定IP地址
NETMASK=255.255.255.0          <- 子網掩碼,用來規劃網絡爲和主機位的,通常爲255.255.255.0
GATEWAY=10.0.0.254        網關地址
DNS1=223.5.5.5         <- 主DNS,這裏默認會覆蓋以及優先於/etc/resolv.conf的配置生效
DNS2=223.6.6.6         <- 第二個DNS,這裏默認會覆蓋以及優選於/etc/resolv.conf的配置文件
PEERDNS=yes      <- 是否確認網卡配置文件中的DNS配置優先於/etc/resolv.conf配置文件

ip命令

添加ip

ip addr add 10.0.0.33/24 dev eth0 label eth0:0

開啓/關閉網卡

ip link set dev eth0 up/down

添加路由

ip route add 10.15.150.0/24 via 192.168.150.253 dev eth0

永久添加

/etc/sysconfig/network-scripts/route-eth0

10.0.0.0/8 via 10.172.7.247 dev eth0
100.64.0.0/10 via 10.172.7.247 dev eth0
172.16.0.0/12 via 10.172.7.247 dev eth0
192.168.0.0/16 via 10.172.7.247 dev eth0

bond

ifcfg-bond0

NAME=bond0
DEVICE=bond0
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"

ifcfg-eth0

MASTER=bond0
SLAVE=yes

橋接

橋接網卡 ifcfg-br0

TYPE=Bridge

其它網卡

BRIDGE=br0

ss

選項 含義
-a 全部
-n 數字(不解析名字)
-l 監聽
-t tcp
-u udp
-p pid/program
-s 鏈接統計

nmcli

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html-single/networking_guide/index#sec-Using_the_NetworkManager_Command_Line_Tool_nmcli

磁盤管理

磁盤體系結構

磁盤分類

  • 機械硬盤
  • 固態硬盤
    • 基於閃存
    • 基於DRAM

機械硬盤

接口類型

  • IDE

  • SCSI
  • SATA
  • SAS
  • FC

固態硬盤

接口類型

  • SATA
    • SATA
    • SATA2
    • SATA3.0
  • PATA
    • IDE44PIN
    • IDE40PIN
  • PCI-E
    • mSATA
    • m.2(ngff)
    • nvme
    • m.2
    • PCIE(IDE)
    • PCIE(SATA)
    • ZIF

機械硬盤相關名詞

英文 中文
disk 磁盤
head 磁頭
sector 扇區
track 磁道
Cylinder 柱面
Units 單元塊(一個柱面的大小)
block 數據塊
inode 索引節點

機械磁盤讀寫原理

  • 讀/寫一個盤面的一個磁道
  • 切換磁頭,讀/寫下一個盤面的相同半徑的磁道
  • 切換磁道讀/寫

扇區

一個扇區大小 512B

磁盤分區

MBR

MBR自己僅是單個物理扇區(512字節)

  • IPL (initial program loader) 初始化程序加載器 --- 446B
  • 分區表 (partition table) ----- 64B 每一個分區表佔16B
  • 校驗 (保證IPL數據的正確性)

分區格式

  • msdos
  • gpt

msdos分區格式

  • 主分區
  • 擴展分區(特殊的主分區)(只能有一個)
  • 邏輯分區(在擴展分區上再次分區)
  • 主分區最多4個

磁盤及分區名稱規則

  • 第一塊IDE接口磁盤的第1個分區 /dev/hda1
  • 第一塊IDE接口磁盤的第5個分區 /dev/hda5
  • 第二塊SCSI接口磁盤的第1個分區 /dev/sdb1
  • 第二塊SCSI接口磁盤的第5個分區 /dev/sdb5

分區命令fdisk

[root@oldboy ~]# fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition           #刪除一個分區
   l   list known partition types    #查看分區類型對應編號列表
   m   print this menu          #打印幫助菜單
   n   add a new partition        #新建一個分區
   o   create a new empty DOS partition table 
   p   print the partition table     #打印分區表
   q   quit without saving changes   #退出程序,不保存
   s   create a new empty Sun disklabel
   t   change a partition's system id       #更改分區類型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit        #將操做寫入分區表並退出程序
   x   extra functionality (experts only)

強制內核從新查找分區表

partprobe /dev/sdc

分區命令parted

傳統的fdisk分區不支持2T以上的磁盤分區,而parted分區能夠支持,而ext4格式不支持16T以上的磁盤空間分區,必須使用xfs分區

parted /dev/sdb mklabel gpt Yes
parted /dev/sdb mkpart primary 0 10 Ignore
parted /dev/sdb mkpart primary linux-swap 11 21 Ignore
parted /dev/sdb mkpart logical ext4 22 32 Ignore
parted /dev/sdb p
[root@localhost ~]# parted /dev/sdb   # 使用parted來對GPT磁盤操做,進入交互式模式

(parted) mklabel gpt                  # 將MBR磁盤格式化爲GPT

(parted) print                                 #打印當前分區

(parted) mkpart primary 0 4.5TB                # 分一個4.5T的主分區

(parted) mkpart primary 4.5TB 12TB            # 分一個7.5T的主分區

(parted) print                                  #打印當前分區

(parted) quit                                   #退出
Information: Don’t forget to update /etc/fstab, if necessary.

磁盤格式化

mkfs

掛載

mount

磁盤相關其它命令

  • dd
  • partprobe
  • dumpe2fs
  • tune2fs
  • fsck
  • e2fsck

RAID

RAID級別 最少磁盤數量 優勢 缺點 應用場景
RAID 0 1 讀寫熟讀快 沒有任何冗餘 mysql slave,集羣的節點RS
RAID 1 2 100%冗餘 讀寫性能通常,成本高 數據重要,且不能宕機的業務, 監控、系統盤
RAID 5 3 具有必定性能和冗餘,能夠壞一塊 讀性能不錯 寫入性能不高 通常的業務均可以用
RAID 10 4 讀寫速度快,100%冗餘 成本高 性能和冗餘要求都很好的業務。數據庫主庫和存儲的主節點

文件系統

什麼是文件系統

文件系統是操做系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操做系統中負責管理和存儲文件信息的軟件機構稱爲文件管理系統,簡稱文件系統

  • 文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制

文件系統類型

/proc/filesystems

/lib/modules/3.10.0-957.el7.x86_64/kernel/fs/

文件存儲結構

Linux正統的文件系統(如ext二、ext3)一個文件由目錄項(文件名)、inode(元數據) 和 數據組成

  • 目錄項: 文件名
  • inode(元數據):又稱文件索引節點,是文件屬性的存放地和數據塊指針存放地。全部與某個文件相關聯的額外信息都保存在一個叫作inode的結構中inode包括 文件類型、權限、硬連接數、全部者及所屬組、文件大小、時間信息
  • 數據:文件的具體內容存放地

文件系統組成

建立文件系統,磁盤被分紅塊組( 塊組0 塊組1 ... 塊組n )

塊組

超級塊

  • 數據塊block與inode的總的數量
  • 已經使用的和未使用的inode和block的數量
  • 上次mount的時間,最近寫入數據的時間及磁盤檢查(fsck)的時間
  • inode的大小
  • block的大小(ext2,ext3爲 1k,2k,4k 其中默認/boot爲1k,其餘分區默認爲4k)
  • 有效位,0 載入 , 1 未載入

組描述

記錄本塊組從何處開始

塊位圖

使用位示圖記錄哪些塊已用 ,哪些塊未用

inode位圖

記錄inode的使用狀況

inode表

各inode組成的區域,每一個inode都有一個惟一編號

  • 文件類型
  • 權限
  • 硬連接數
  • 用戶和組信息
  • 文件大小
  • 時間信息
  • 塊指針

data塊

各block組成的區域,用於存放文件數據

ext2文件系統

  • ext2文件系統沒有日誌功能
  • ext2 目前最多支持 32000 個子目錄
  • ext2目前支持最大16TB文件系統和最大2TB文件
  • ext2 默認的inode 大小 128B

ext3文件系統

  • ext3 目前最多支持 32000 個子目錄
  • ext3目前支持最大16TB文件系統
  • ext3 默認的inode 大小 128B

ext4文件系統

  • ext4 支持無限數量的子目錄
  • ext4最大支持16TB的文件系統
  • ext4默認inode大小爲256B

xfs文件系統

  • xfs支持16TB以上的文件系統

  • xfs提供了xfsdump備份, xfsrestore恢復

  • xfs默認inode大小爲512B

各系統默認的文件系統

  • Centos7 採用xfs文件系統
  • Centos6採用ext4文件系統
  • Centos5採用ext3文件系統
  • SUSE linux 的默認文件系統 ReiserFS文件系統
  • IBM的AIX使用 jfs日誌文件系統
  • Sun OS 全部的文件系統 ufs

swap文件系統

交換分區文件系統,當內存使用

製做swap文件系統

dd if=/dev/zero of=/tmp/swap bs=1M count=128
mkswap /tmp/swap

開啓swap

swapon  /tmp/swap
swapon -a

關閉swap

swapoff  /tmp/swap
swapoff -a

查看swap狀態

swapon -s

swap相關內核參數

cat /proc/sys/vm/swappiness 
30

tmpfs文件系統

臨時文件系統,是一種基於內存的文件系統

製做tmpfs文件系統

mount -t tmpfs -o size=100m tmpfs /mnt/tmpfs

添加導/etc/fstab

tmpfs /mnt/tmpfs tmpfs size=100m 0 0

dd命令

用於複製文件並對原文件的內容進行轉換和格式化處理

  • 建立文件
dd if=/dev/zero of=/tmp/swap bs=1M count=128
  • 備份數據
dd if=/dev/sda of=mbr.bin bs=512 count=1
相關文章
相關標籤/搜索