第一章 計算機硬件知識
服務器種類
硬件服務器
云服務器
服務器外觀
機架式服務器
塔式服務器
刀片式服務器
dell服務器型號
時間 1U 2U
十年前 1850 1950 2850 2950
10-13年 R410/R610 R710 (11代)
14-至今 R420/R430 R620/R630 R720 R730
服務器組成
cpu 硬盤 內存 電源 主板 風扇 光驅 顯卡 聲卡
處理器
Cpu的 棵樹 或者 個數(shù) 路
服務器cpu的個數(shù)2-4顆
筆記本i3 i5 i7
服務器 至強系列 E3 E5 E7
金牌 銀牌 銅牌
內存
臨時儲存的地方 介于CPU和硬盤之間
運行的所有程序都會在內存中運行
程序 靜態(tài)的內容 文檔 視屏 可執(zhí)行的程序 存放在磁盤的數(shù)據(jù) 稱為程序
進程 把靜態(tài)的內容運行起來 把系統(tǒng)的程序存放在內存中運行 稱為進程
守護進程 持續(xù)不斷的運行 稱為守護進程
buffer && cache
buffer 寫入數(shù)據(jù)到內存中 這個數(shù)據(jù)的內存空間稱為緩沖區(qū) 寫緩存
Cache 從內存讀取數(shù)據(jù),這個數(shù)據(jù)內存空間稱為 緩存區(qū) 讀緩存
raid 0 1
raid 0方法1 兩塊600G硬盤組合 1.2T 800G的文件損壞? 徹底損壞 無法恢復
raid 1方法2 兩塊600G硬盤組合只能使用600G 備份 同時寫兩份數(shù)據(jù) 1份損壞 另一塊正常使用
安裝操作系統(tǒng)方法
使用U盤
使用網(wǎng)絡方式安裝
使用批量化自動化安裝操作系統(tǒng)kickstar cobbler
第二章 linux發(fā)展史
69年在貝爾實驗室unix誕生
譚寧邦 寫了minix
斯托曼 FSF 自由軟件基金會
托瓦茲 創(chuàng)建linux內核
GNU #GNU is not unix 沒有流行 組件流傳了下來 bash gcc awk
GPL 通用公共許可
unix優(yōu)點
技術成熟 可靠性高
極強的可伸縮性
強大的網(wǎng)絡功能
開發(fā)功能
數(shù)據(jù)庫支持能力
發(fā)行版本
Ubuntu 開發(fā)人員
Redhat或centos 服務器多
Debian 或 FreeBSD 安全人員使用 多用于滲透 安全
SUSE 德國多 專業(yè)使用數(shù)據(jù)庫 電子郵件網(wǎng)絡
紅旗 麒麟 中文版
面試題:Redhat與centos的區(qū)別
centos 是redhat一個分支
centos 是Redhat去掉logo和部分非自由軟件在編譯而成
centos免費版本
redhat部分收費
第三章 虛擬機創(chuàng)建&&xhsell排錯
更改網(wǎng)卡
net.ifnames=0 biosdevname=0
分區(qū)
/boot 200
swap 物理內存1.5倍
/ 剩下內存
xshell 排錯
看IP
ping ip
改網(wǎng)卡
vmware服務
centos7 關閉NetworkManager
端口
無法上網(wǎng)
ping 網(wǎng)關
ping 公網(wǎng)
DNS域名解析
看網(wǎng)關
第四章 基本命令使用
路徑
相對路徑:當前路徑
絕對路徑:從根下的路徑到指定的目錄/文件路徑
pwd 查看當前路徑
cd 改變當前工作目錄
ls 顯示目錄中的內容
- l 顯示詳細信息(等價于ll)
- r 逆向排序 a-z
mkdir 創(chuàng)建目錄
-p 遞歸創(chuàng)建目錄
touch 創(chuàng)建文件
cp 復制
- r 復制目錄及目錄下的文件所以 遞歸復制
echo 輸出內容分到桌面
> 重定向 先清空 再寫入
>> 追加重定向
{} 生成序列
cat 查看文件內容
- n 顯示行號
tree 以樹狀圖顯示目錄
-d 只顯示目錄
-F 在目錄后面加上/ 用來區(qū)分目錄或文件
-L 顯示目錄層級(加參數(shù))
rm 刪除文件或目錄
-r 遞歸刪除目錄及目錄下的文件
-f 強制刪除不提示
mv 移動或者改名
第五章 Vim編輯器
打開文件
vim file.name
編輯
i o
退出
esc 到視圖模式
保存
Shift + :
w 保存退出
q 退出
q! 強制退出
wq 保存并退出
wq! 強制保存并退出
vim 快捷鍵
光標的移動
G 快速移動到文件尾部
10G 快速移動到第十行
gg 1G 快速移動到行首
$ End 快速移動光標所在行的行尾
^ Home 0 快速移動光標所在行的行首
復制粘貼剪切刪除 視圖模式下
yy 復制當前光標所在行
2yy 復制光標所在連續(xù)兩行
p 粘貼到光標所在行的下一行
3p 粘貼三次內容
dd 剪切光標所在的行
2dd 剪切光標所在的連續(xù)兩行
d$ d+End 剪切光標所在到行尾
u 撤銷操作
D 剪切光標所在到行尾
d^ d+home d0 刪除光標所在到行首
dG 剪切光標所在行到文件尾部
dw 剪切一個單詞
s 刪除一個字母
x 刪除一個字母
編輯模式
i a 進入編輯模式
o 進入光標所在行的下一行編輯
O 進入光標所在行的上一行編輯
C 刪除光標所在行行尾并進入編輯模式
A 移動到行尾并進入編輯模式
cc 刪除整行進入編輯模式
批量操作
1.ctrl + v 選中行
2.按大寫I
3.輸入要添加的內容
4.按兩次esc
1.ctrl + v 選中行
2.r
3.輸入替換內容
vim 不正常退出
1.直接刪除.swp 文件 進行編輯 新寫入的內容會消失
2.如何恢復
vim -r oldboy.txt 按回車保存退出
刪除.swp 文件即可
第六章 目錄結構
掛載磁盤
mount /dev/cdrom /mnt/
網(wǎng)卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet #網(wǎng)絡類型 以太網(wǎng)
BOOTPROTO=none #獲取ip地址
三種配置方法
1.none 靜態(tài)
2.DHCP 動態(tài)獲取
3.static 靜態(tài)
NAME=eth0 #配置文件名 網(wǎng)卡名稱
DEVICE=eth0 #硬件網(wǎng)卡名稱
UUID=842a0ef2-ed4b-4fb4-aa1b-8d4e70b0eacd
#唯一標識 系統(tǒng)為每一個硬件設備分配唯一標識(克隆虛擬機刪除)
ONBOOT=yes #開機自動啟動
IPADDR=10.0.1.200 IP地址 局域網(wǎng)內唯一 公網(wǎng)上唯一
PREFIX=24 #子網(wǎng)掩碼 決定我們網(wǎng)絡中可使用ip地址數(shù)量
GATEWAY=10.0.1.254 #網(wǎng)關 大門口
DNS1=10.0.1.254 #域名解析服務器 可快速方便訪問服務器
負責把域名解析為ip地址
/etc/hosts 本地解析配置文件 DNS解析 解析主機名稱
/etc/hostname 主機名稱配置文件
1.如何查看當前主機名
hostname centos6/7 想同
2.如何臨時修改主機名
hostname 主機名 centos6/7 相同
3.如何永久修改主機名
vim /etc/hostname centos7重啟生效
vim /etc/sysconfig/network cetnos6
4.如何臨時+永久修改主機名
hostname set-hostname 主機名 centos7
hostname 先臨時修改 再更改配置文件
vim /etc/sysconfig/network cenros6
/ect/resolv.conf 配置DNS服務器的配置文件
/etc/rc.local 開機自啟執(zhí)行文件中命令
/etc/fstab 磁盤掛載配置文件 開機自動掛載
/etc/issue 登錄服務器前顯示的內容
/etc/issue.net 登錄服務器前顯示的內容
/etc/moth 連接服務器后顯示的內容
/etc/inittab 服務器開機后運行級別
centos 6.x
0 關機
1 單用戶模式 救援模式 忘記密碼
2 多用戶模式 沒有NFS網(wǎng)絡支持
3 完全多用戶模式 默認使用
4 待開發(fā)
5 桌面模式
6 重啟
centos 7.x
0 poweroff.target
1 rescue.target
2 multi-user.target
3 multi-user.target
4 mulit-user.target
5 graphical.target
6 reboot.target
1.如何查看當前的運行級別
centos 6 查看方法
cat /etc/inittab
id:3:initdefault:
centos 7 查看方法
root@oldboyedu ~#: systemctl get-default
multi-user.target
2.如何臨時修改啟動級別centos 6 / 7相同
init 0 關機
init 5 桌面
init 6 重啟
3.如何永久修改運行級別 開機后自動運行那個功能那個級別
centos 6 配置方法
vim /etc/inittab id:3:initdefault:
centos 7 配置方法
systemctl set-default runlevel5.target
/etc/profile 環(huán)境變量 開機自動運行
/etc/bashrc 環(huán)境變量 別名
.bashrc 環(huán)境變量 針對當前登錄用戶生效
.bash_profile 環(huán)境變量 針對當前登錄用戶生效
/var variable 變化的 日志文件
/var/log/messages 日志信息 記錄了系統(tǒng)運行的記錄
/var/log/secure 系統(tǒng)的安全日志
/proc/cpuinfo 處理器的一些信息
/proc/meminfo 查看內存信息
/proc/loadavg 平均負載
/proc/mounts 了解 系統(tǒng)掛載的詳細信息
第七章 安裝方式
yum 安裝
yum -y install package.name
yum 卸載
yum -y remove package.name
yum 查找包名
yum provides package.name
rpm 安裝
rpm 安裝方式
rpm -ivh package.name
-i install
-v 顯示安裝過程
-h 人類可讀模式
rpm -qa 查看軟件是否安裝
-q 查看
-a 所有
-l 列表
rpm 卸載軟件
rpm -e package.name
編譯安裝
.configure make makeinstall
第八章 虛擬機優(yōu)化
yum 源
yum repolist #查看當前使用的軟件倉庫
rpm -qa #查看已安裝的軟件
yum list #查看這個倉庫有什么軟件可裝
更改yum源為阿里云源
備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下載新倉庫到本地
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
Selinux
如何查看當前selinux是否開啟
getenforce
如何臨時關閉selinux
setenforce Permissive
setenforce 0
永久關閉selinux 需要重啟
/etc/selinux/conf
enforcing # 開啟狀態(tài) 運行中
permissive # 關閉狀態(tài)但是會提示警告信息
disabled # 完全關閉狀態(tài)
SELINUX=disabled
防火墻
centos6.x iptables
centos7.x firewalld
如何查看當前防火墻是否運行
systemctl status firewalld
中間的常用命令
start 開啟
stop 停止
restart 重啟
reload 加載
status 狀態(tài)
systemctl is-active firewalld # 查看防火墻運行狀態(tài)
如何臨時關閉防火墻
systemctl stop firewalld
永久關閉防火墻
systemctl disable firewalld
如何查看是否開機禁止啟動防火墻
systemctl status firewalld.service 第二行顯示 enabled 開機自動啟動
[root@alexlnb ~]#systemctl is-enabled firewalld.service
enabled
禁止啟動
systemctl disable firewalld.service
centos6 iptables的關閉和禁止啟動
centos6
/etc/init.d/iptables stop
service iptables stop
chkconfig iptable off
/etc/init.d/iptables status # 查看狀態(tài)
字符集
如何查看系統(tǒng)默認的字符集 centos7
[root@alexlnb ~]#echo $LANG
en_US.UTF-8
臨時修改默認的字符集
LANG='zh_CN.UTF-8'
永久修改字符集
/etc/locale.conf
LANG="en_US.UTF-8"
centos 6 修改字符集
臨時修改
echo $LANG
LANG='zh_CN.UTF-8'
永久修改字符集
/etc/sysconfig/i18n
source /etc/sysconfig/i18n
第九章 vim進階和文本命令
vim 底行模式
:set nu 顯示行號
:set nonu 取消顯示行號
ZZ 保存并退出
搜索
/ 搜索的內容
n 查找下一個內容 往下查找
N 查找上一個內容 往上查找
1copy10 # 把第一行的內容復制到第10行的下面 簡寫co
1,3copy10 # 把第一行到第三行的內容復制到第10行的下面
1move10 # 把第一行的內容移動到第10行的下面 簡寫mo
1,3move10 # 把第一行到第三行的內容移動到第10行的下面
1d # 刪除第一行的內容
1,5d # 刪除第一行到第五行的內容
取消高亮
:noh
替換
s###g # s替換標志 g 全局替換
cat 查看文本內容
-n 顯示行號
-A 在行尾加上$ 表示行結束
less 查看文本內容(大文件)
-N 顯示行號
空格 f 顯示下一頁內容
b 顯示上一頁內容
gg 快速移動到首頁
100G 快速到100行
g 快速移動到第一頁
G 快速移動到文件的底部
/ 搜索
n 查找下一個內容
N 查找上一個內容
q 退出
more 查看內容一頁一頁顯示
f 往下翻頁
b 往上翻頁
空格 往下翻頁
head 默認顯示前十行
-n 顯示文件的行數(shù) 可簡寫 -2 -n2
-c 顯示文件的前n個字符 不常用
tail 默認顯示文件后十行
-n 顯示文件的行數(shù) 簡寫-2 -n2
-f follow 實時顯示文件的內容變化
-F 實時顯示文件內容的變化 監(jiān)控文件 文件不存在會時時等待文件的出現(xiàn)
tailf === tail -f
tailf 不讀磁盤 速度快
tail -f 讀磁盤 速度慢
seq 生成序列
tr 替換不能對文件進行操作 1 對 1
-d 刪除內容
-c 取反
特殊符號
. 代表當前的目錄
.. 代表上一級目錄
# 注釋 不生效的內容 shell編程的第一行有用 root用戶提示符
~ 代表家目錄
$ 代表普通用戶提示符
> 重定向
>> 追加重定向
< 輸入重定向
- 上一次所在的目錄
| 前面命令的輸出 作為后面命令的使用
\ 轉義字符
alias 別名
永久定義別名
把配置寫入/etc/profile中
環(huán)境變量的生效順序 /etc/profile-> /etc/bashrc
第十章 文件屬性
indoe 節(jié)點
33575001 inode
文件的類型
rw-r--r-- 文件的權限
. selinux
1 硬鏈接個數(shù)
root 屬主
root 屬組
18 文件的大小
12月 12 20:37 時間
bash.sh 文件名
inode index node # 存放著文件的屬性和文件具體的位置的指針 不包含文件名
block 快 文件的具體存放位置
文件類型
- 普通文件
drwxr-xr-x d 目錄 directory
lrwxr-xr-x l 軟鏈接
brw-rw---- b 快設備
crw-rw-rw- c 字符設備
p 管道設備
文件相關命令
which 查看命令的全路徑
file 查看文件的類型
whereis 查看文件的具體位置和文件的幫助
第十一章 文件查找之find
find 查找命令
find 在哪里找 -類型 f -名字 "1.txt"
-name # 按名稱查找 test.txt
-iname # 查找到的內容不區(qū)分大小寫
-size # 按照大小查找 -b -k -M -G
-maxdepth # 按最大的深度等級查找
-mtime # 按照文件的修改時間查找modify
-類型 -type
f 普通文件
d 目錄
按名稱查找
find /tmp/ -type f -name "test.txt"
按文件的后綴查找 所有.txt結尾的文件
find /tmp/ -type f -name "*.txt"
不區(qū)分大小寫搜索
find /tmp/ -type f -iname "*.txt"
按照大小查找 -size
find ./ -type f -size +100k # 查找當前目錄 大小100k的文件
按時間查找
find -type f -mtime +7 -mtime -30 #查找7-30內的文件
移動
find ./ -type f -size +1M|xargs -i mv {} /tmp
mv `find /tmp/ -type f -name "7.txt"` .
find /tmp/ -type f -name 8.txt -exec mv {} /opt \;
刪除
find /tmp/ -type f -name "5.txt"|xargs rm
rm `find ./ -type f -name 7.txt`
find ./ -type f -name "3.txt" -exec rm {} \;
復制
find /tmp/ -type f -name "6.txt"|xargs -i cp {} .
cp `find /tmp/ -type f -name 8.txt` .
find ./ -type f -name "4.txt" -exec cp {} /tmp \;
序列匹配
find /tmp -type f -name '[1-8].txt' # 匹配1-8以.txt結尾的文件
df -i 查看indoe使用情況
df -h 查看block使用情況
第十二章 軟硬鏈接
硬鏈接
硬鏈接的特點:
1)在相同文件系統(tǒng)中具有相同inode號的文件 互為硬鏈接 ll -i
2)相當于文件的多個入口 類似于超市的多個入口
3)文件默認的硬鏈接為1 目錄默認的硬鏈接為2 且目錄無法做硬鏈接(會出現(xiàn)循環(huán))
4)刪除源文件和目標文件任意一個文件 文件不會真正的刪除
5)只有同時刪除源文件和目標文件 文件才會被刪除 (普通文件)
6)刪除源文件和目標文件 并且沒有被系統(tǒng)或程序調用 則被真正刪除 進程調用
7)如果刪除文件的空間在存放其他文件 則被刪除文件無法恢復 或者使用fsck命令進程磁盤檢查 空間也會被系統(tǒng)回收
8)硬鏈接文件是普通文件 使用rm刪除即可
9)硬鏈接為防止文件的誤刪做的備份
10)不能跨文件系統(tǒng)
軟鏈接
軟鏈接特點:
1)Inode號不同
2)類似于windows的快捷方式 里面存放了源文件的指針指向
3)刪除軟鏈接文件不影響源文件
4)刪除源文件則文件被真正的刪除 軟鏈接不會刪除 但是不可用
5)做軟鏈接盡量使用全路徑
6)刪除一定要注意不能刪除源文件(>后面的為源文件)
權限講解
-rw-r--r-- 1 root root 58 Dec 28 16:10 1.pl
主 組 其他 主 組 大小 時間 文件名
Access: 訪問時間 cat查看 當文件無修改 則時間不會變
Modify: 修改時間 vim echo 修改
Change: 屬性的修改時間 屬性信息 -rw-r--r-- 1 root root 1.3M Dec 18 10:53
為什么目錄的硬鏈接數(shù)為2
每個目錄下都有一個硬鏈接"."號,和對應上級目錄的硬鏈接".."
在父目錄里創(chuàng)建一個子目錄,父目錄的鏈接數(shù)增加1(每個目錄里都有..來指向父目錄)。但是在父目錄里創(chuàng)建文件,父目錄的鏈接數(shù)不會增加
第十三章 打包壓縮
tar
z 使用gzip壓縮
c create 創(chuàng)建
v 顯示過程 verbose
f 指定壓縮文件
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
bz2
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
bz
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
.tar.bz
解壓:tar jxvf FileName.tar.bz
zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
第十四章 通配符
命令1|命令2 ###管道符號 傳遞的是普通的字符串,文本 來自于前一個命令
|xargs ###管道符號 與xargs 傳遞的是把字符串變成了 文件名
. #當前目錄,任意一個字符(正則)
.. #當前目錄的上一級目錄
* #任意0個或多個字符(文本)(通配符)
> #輸出重定向 會清空原來的內容 然后在向文件里面追加內容
>> #追加輸出重定向 追加到文件的最后一行
< #輸入重定向 tr xargs
<< #cat 用來給文件追加多行文本
# #注釋 linux會忽視他。給人看的。解釋說明。
# root 超級用戶的 提示符
$ shell
$變量 ====>取變量里面的內容
手 鞋盒子 拿出鞋 ====>取變量里面的內容
&& # 前面的命令執(zhí)行成功 則執(zhí)行后面的命令 不成功則不執(zhí)行后面的命令
cd /backup && ls 如果backup存在則執(zhí)行l(wèi)s 如果backup不存在 則不行l(wèi)s
|| # 前面的命令執(zhí)行失敗 則執(zhí)行后面的命令 不失敗則不執(zhí)行
cd /backup || mkdir backup 如果cd執(zhí)行失敗 則創(chuàng)建目錄backup
如果cd成功 則不會執(zhí)行后面的創(chuàng)建命令
; # 前面的命令成功和失敗 都會繼續(xù)執(zhí)行后面的命令
cd /backup;ls /opt 不管cd是否成功 都會繼續(xù)執(zhí)行分號后面的命令
"" # 大部分都是字符串 能解析變量 不能解析通配符
錯誤重定向 正確重定向 &>/dev/null 定向到空
ls > test.txt # 命令執(zhí)行的結果為正確的才可重定向到test.txt
1> 只接收正確的結果 重定向 前清空在寫入
1>> 只接收正確的結果 追加
2> 只接收錯誤的結果
2>> 只接收錯誤的結果 追加
'' 輸出不解析變量 所見即所得
"" 解析變量 不能解析通配符
不加引號和加雙引號類似 能解析變量 但是能解析通配符
`` 執(zhí)行命令 把命令的結果留在原地 其他命令調用 和$()相同
第十五章 正則符號
基礎正則
^ 以什么什么開頭
$ 以什么什么結尾的行
' ' 過濾空格 不顯示空行
^$ 表示空行
. 過濾任意一個字符 不會匹配空行
* 前面的字符串出現(xiàn)0次或0次以上
.* 所有 包含空行
[] 匹配中括號中的任意一個字符
擴展正則
[^] 取反 中括號和默認語句'' 都不會匹配空行
+ 前面的字符出現(xiàn)1次或1次以上
{} 匹配次數(shù)
第十六章 三劍客
grep 過濾字符串
-r 遞歸搜索
-v 取反
-o 顯示匹配過程
-n 顯示過濾出內容的行號
-w 統(tǒng)計單詞
-i 不區(qū)分大小寫
-c 過濾內容的總行數(shù)
格式
grep -參數(shù) '字符串' 文件名
過濾1
[root@alexlnb ~]#grep '1' test.txt
1
10
查找空行
grep ^$ logs.log
查找以leo開頭的行
grep ^leo logs.log
sed 替換,查找
-e 指定多命令
-f 指定命令文件
-i 修改源文件
-n 取消默認輸出
-r 支持擴展正則
p 打印
d 刪除 臨時刪除
c 替換
s 全局替換g
a 追加 在當前行的下一行插入內容
i 插入 在當前行插入新的內容
sed -參數(shù) '字符串' 文件
查找第三行
sed '3p' file
查找1到3行
[root@alexlnb ~]#sed -n '1,3p' 1.txt
111111111111
2222222222
333333333333
明確匹配最后一行
[root@alexlnb ~]#sed -n '$p' 1.txt
55555555555555
模糊匹配// 字符串匹配
sed '/字符串/p' file
[root@alexlnb ~]#sed -n '/lizhenya/p' oldboy.txt
I am lizhenya teacher!
our site is http:www.lizhenya.com
lizhenya
匹配顯示lizhenya的行到test之間的行
lizhenya
fags
gswgsreh
test
刪除第 2 行
sed '2d' test.txt
匹配每一行的第一個old替換為new
sed 's/old/new/' test.txt
如何匹配出 10.0.1.200 255.255.255.0
inet 10.0.1.200 netmask 255.255.255.0 broadcast 10.0.1.255
root@13k ~#: ifconfig|sed -n '2p' |sed -r 's/^.*inet (.*) net.* (.*) bro.* /\1\2/g'
10.0.1.200 10.0.1.255
awk 查找
NR 行
NF 列
== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
&& 并且
|| 或者
awk '{print $n}' 文件
取第一行到第五行
[root@alexlnb ~]#awk 'NR<6' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
取第一列
[root@alexlnb ~]#awk '{print $1}' 1.txt
oldboy
lizhenya
1
5
指定分隔符取列
[root@alexlnb ~]#cat 2.txt
oldboy
[root@alexlnb ~]#awk -F "d" '{print $1}' 2.txt
ol
搜索匹配
[root@alexlnb ~]#awk '/root/' test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
查找以root開頭的行
[root@alexlnb ~]#awk '/^root/' test.txt
root:x:0:0:root:/root:/bin/bash
查找以root開頭的行 并打印第一列和最后一列
[root@alexlnb ~]#awk -F: '/^root/{print $1,$NF}' test.txt
root /bin/bash
數(shù)字比較
[root@alexlnb ~]#awk '$1>2' 2.txt
4 5 6
3 1 2
查看行號
awk '{print NR,$0}' test.txt
第十七章 開機流程
Centos6.X init
串行啟動 如果某一項服務掛掉 無法啟動 則后面的全部無法正常啟動
centos7.X systemd
并行啟動 如果某一項服務掛掉 不影響系統(tǒng)正常啟動
開機流程centos 6
開機BIOS自檢
MBR引導
grub引導菜單
加載內核kernel
啟動init進程
讀取inittab文件,執(zhí)行rc.sysinit,rc等腳本
啟動mingetty,進入系統(tǒng)登陸界面
開機流程centos 7
按下電源
開機自檢
MBR引導
GRUB菜單
加載內核
啟動systemd
讀取systemd/system文件
初始化 /usr/lib/systemd/system
并行 啟動服務
進入登陸界面
第十八章 用戶管理
讓一個命令或者一個服務開機自啟動
/etc/rc.local 需要給源文件x權限 可執(zhí)行命令 服務啟動 腳本
chkconfig iptables on 開機啟動
systemctl enable firewalld 開機啟動
/etc/profile 開機加載 或者重新打開窗口連接 重新加載
用戶分類
管理員 root
虛擬用戶
普通用戶
useradd 創(chuàng)建用戶
-u 指定uid
-g 指定gid
-s 指定解釋器
-M 不創(chuàng)建家目錄
passwd 創(chuàng)建密碼
交互式
passwd 用戶 密碼
非交互式
echo 密碼 | passwd --stdin 用戶
usermod 修改用戶信息
-s 修改解釋器
-u 修改用戶uid
-g 修改屬于組
-G 屬于多個組
chown 修改用戶屬主屬組
-R 遞歸
groupadd 添加用戶組
-g 指定組ID
groupdel 刪除用戶組
userdel 刪除用戶
-r 連根拔起 用戶和家目錄一并刪除
第十九章 批量化創(chuàng)建用戶
普通創(chuàng)建
非交互式創(chuàng)建
echo 123456|passwd --stdin oldboy
sed 批量創(chuàng)建用戶
echo test{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1;echo 123456|passwd --stdin \1#g'|bash
sed 批量刪除用戶
echo oldboy{1..10}|xargs -n1|sed -r 's#(.*)#userdel -r \1#g'|bash
awk 批量創(chuàng)建用戶
echo oldboy{1..10}|xargs -n1|awk '{print "useradd " $1";echo 123456|passwd --stdin " $1}'|bash
awk 批量刪除用戶
echo oldboy{1..10}|xargs -n1|awk '{print "userdel -r " $1}'|bash
隨機模塊
$RANDOM 0 - 32767
echo $RANDOM
高級創(chuàng)建
非交互式創(chuàng)建
useradd oldboy;echo `echo $RANDOM|md5sum|cut -c1-8`|passwd --stdin oldboy
sed 批量創(chuàng)建用戶
echo test{1..10}|xargs -n1|sed -r 's#(.*)#useradd \1;pass=`echo $RANDOM|md5sum|cut -c1-8`;echo $pass|passwd --stdin \1;echo \1 $pass >>passwd.txt#g'|bash
sed 批量刪除用戶
for i in {1..10};do userdel -r test$i;done
awk 批量創(chuàng)建用戶
echo test{1..10}|xargs -n1|awk '{print "useradd "$1";pass=`echo $RANDOM|md5sum|cut -c1-8`;echo $pass|passwd --stdin "$1";echo "$1" $pass >>passwd.txt"}'|bash
awk 批量刪除用戶
for i in {1..10};do userdel -r test$i;done
第二十章 文件權限
最小化原則 安裝操作系統(tǒng) 需要什么安裝什么
保護root 禁止root登錄 更改默認SSH端口 22端口
給重要的命令+i 給重要的文件加a
給重要的文件或命令做一個指紋
r:read 讀
w:write 寫
x:execute 執(zhí)行
讀 r -> 4
寫 w -> 2
執(zhí)行 x -> 1
方法1:mode法
格式:chmod who opt per file
who:u g o a(all)
opt:+ – =
per:r w x X
方法2:數(shù)字法
格式:chmod XXX file
rwx rw- r–
111 110 100
7 6 4
r:4
w:2
x:1
rwx 對文件的作用
r 可讀 不可寫 不可執(zhí)行
w 不可寫 不可執(zhí)行 可追加 如果想寫入 必須和r 配合使用
x 啥都不能干 想要執(zhí)行 必須和r 進行配合
rwx 對目錄的作用
r 不能進入目錄 只顯示文件名 不顯示詳細信息 配合x 使用
w 啥都不能干 控制是否在目錄下創(chuàng)建 刪除 重命名必須和x配合使用
x 可進入到目錄可以查看文件內容
UMASK值
作用:取消對應的權限,影響創(chuàng)建文件和目錄的默認權限
對目錄: umask+default=777(dir)
對文件:666-umask:觀察結果,如果有奇數(shù),奇數(shù)位+1,偶數(shù)不變
三種權限 suid sgid sticky
suid
作用:給一個用戶繼承二進制程序所有者擁有的權限
例:ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
給file文件增加suid權限
chmod u+s file
chmod 4755 file suid數(shù)字法表示為4
sgid
作用1:給一個用戶繼承二進制程序所有組擁有的權限
例:ll `which cat`
-rwxr-sr-x. 1 root root 48568 Mar 23 2017 /bin/cat
給file文件增加sgid權限
chmod g+s file
chmod 2755 file sgid數(shù)字法表示為2
sticky
作用:作用于目錄上,此目錄的文件只能被所有者刪除
如:ll -d /tmp
drwxrwxrwt. 17 root root 4096 Apr 4 10:02 /tmp
給dir目錄添加sticky權限
chmod o+t dir
chmod 1777 dir sticky數(shù)字法表示為1
ACL 訪問控制列表
添加ACL權限
setfacl -m u:wang:0 file 使wang賬戶對指定file文件無權限
setfacl -m u:mage:rw file 使mage賬戶對指定file文件有讀寫權限
setfacl -m g:g1:rw file 使g1組對指定file文件有讀寫權限
getfacl file 查看指定file文件的ACL權限
刪除ACL權限
setfacl -x u:wang file 刪除wang賬戶對指定file文件的ACL權限
setfacl -x g:g1 file 刪除g1組對指定file文件的ACL權限
ACL權限下的mask
設置用戶對指定文件所能擁有的最大權限(限高作用)
setfacl -m mask::r file 使指定文件file所擁有的最大權限位讀r
setfacl -x mask::r file 取消指定文件file的最大權限限制mask
setfacl -b f1 取消f1文件所有的ACL權限
備份和恢復ACL權限
getfacl -R /tmp/dir1>acl.txt 將dir1目錄下ACL權限備份
setfacl -R –set-file=acl.txt /tem/dir 恢復dir1目錄下ACL權限
文件權限常用命令
chown 設置文件所有者(普通用戶無法修改文件所有者)
chgrp 設置文件所屬組(普通用戶要想該所屬組,前提是文件所有者為自己,自己在所屬組中)
chmod 設置指定文件權限
chattr 給指定文件添加保護,避免root賬戶誤操作
+i 鎖定文件,不能刪除,不能改名,不能更改內容
-i 解鎖+i
-a 鎖定文件,不能刪除,不能改名,但可追加內容(追加重定向)
-a 解鎖+a
+A 指定文件讀時間atime不再更改
lsattr 查看指定文件是否有鎖定狀態(tài)
setfacl 設置文件ACL權限
-m mask::r file 使指定文件file所擁有的最大權限位讀r
-x mask::r file 取消指定文件file的最大權限限制mask
-b f1 取消f1文件所有的ACL權限
-R –set-file=acl.txt /tem/dir 恢復dir1目錄下ACL權限
getfacl 查看文件ACL權限
第二十一章 crontab 定時任務
crontab 安裝:
yum -y install crontabs
相關服務
service crond start 啟動服務
service crond stop 停止服務
service crond restart 重啟服務
service crond reload 重新載入配置
service crond status 查看crontad服務狀態(tài)
chkconfig crond --list 查看crontab服務是否已設置為開機啟動
chkconfig crond on 加入開機自動啟動
命令格式
crontab [-u user ] file
crontab [-u user ] [ -e | -l | -r ]
參數(shù)說明:
-u user:用來設定某個用戶的crontab 服務
file 文件的名字
-e 編輯crontab文件內容
-l 顯示crontab文件內容
-r 刪除定時任務配置
配置說明
* * * * * 命令
分 時 日 月 周
服務
郵件服務
systemctl stop postfix
root郵件的地址
/var/spool/mail/root
小文件的目錄
/var/spool/postfix/maildrop/
實例
*/1 * * * * date >> /root/date.txt
每分鐘執(zhí)行一次 date命令
30 21 * * * /usr/local/etc/rc.d/httpd restart
每晚的21:30 重啟apache
45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart
每月的1 10 22 號 4:45重啟apache
10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart
每周六 周日的1:10 重啟apache
0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart
每天18:00至23:00 之間每隔30分重啟apache
* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
晚上11點到早上7點之間 ,每隔一個小時重啟apache