命令格式:命令關鍵字 選項 參數 ls -l /etc (find /etc --name password)
幫助命令:man help infophp
cd 切換目錄 cd .. cd-java
絕對路徑:從根目錄 /etc/passwdnode
相對路徑:從當前目錄 ./ ../python
[root@localhost ~]# root用戶名 localhost主機名 ~當前所在目錄 #root用戶 $普通用戶mysql
ls查看目錄下內容linux
選項:-a看隱藏文件(.文件名)web
-l = ll 以長格式顯示信息正則表達式
-h 以人類可讀的方式顯示大小redis
-文件類型 -普通文件 d目錄 b塊設備文件 c字符設備文件 l連接文件 s套接字文件 p管道文件sql
文件管理命令:
touch 建立文件或更新時間戳
mkdir 建立目錄 -p -v
rm 刪除 -f -r(目錄)-I
wc 統計 -c -w -l
cp 複製文件 -a -p(保持文件權限) -r
mv 移動或重命名
tree 查看目錄樹 -L
cat tac nl more less head -n(看文件前n行) tail -n(看文件後n行)(-f 排錯(持續監控日誌文件尾部變化))查看文件內容
which 查找命令絕對路徑
find 按條件查找文件
查找系統中以bak結尾的文件並刪除
find / -name *bak -exec rm -rf {} \;
whereis -b -m
locate -->updatedb(更新數據庫) -->安裝mlocat 查找速度比find快
grep 過濾 -i -v取反 -E支持擴展正則表達式()-o只顯示要過濾的關鍵字 -A -B -w
壓縮文件
gzip/gunzi=gzip -d -->.gz 1-9
bzip2/bunzip2=bzip2 -d -->.bz2
tar 製做或釋放歸檔文件 -c -v -j(bz2) -z(ge) -f -x -C(解壓指定路徑)
通配符: ?任意一個字符 *任意全部字符
管道符:| 前一個命令的結果做爲後一個命令的執行目標
正則表達式: ^以……開頭
$以……結尾 grep基礎正則表達式
|或 擴展正則表達式
sbin bin 放命令 boot 啓動文件 dev 設備文件 etc 配置文件 home 普通用戶家目錄 lib lib64 庫文件 media 掛載光盤 mnt 掛載可移動設備 proc 虛擬目錄(內存裏)root 超級用戶家目錄 run 服務啓動目錄 usr var 可變長文件
exit 退出登陸,註銷 ctrl+d
history 查看歷史命令記錄 調用!!上一條命令 !n 查看第n條命令 -c(.bash_logout)關機清空歷史紀錄
關機:shutdown -h now, init 0, halt,poweroff
runlevel 查看系統運行級別
重啓:shutdown -r now,init 6,reboot
uname 查看系統信息 -a -r(內核版本)
查看centos系統版本cat /etc/redhat-release
Centos6與Centos7區別:內核版本不一樣6-->2.6 7-->3.10,默認文件系統不一樣6-->ext4 7-->xfs
Echo 打印 echo $?打印上一條命令的狀態碼用於檢測上一條命令執行是否成功
vim 編輯器<--vi
yum -y install vim
命令模式 -->i a o s esc<--編輯模式-->:/ esc<-- 末行模式
命令模式:
dd 刪除行(剪切 )
D 刪除光標後內容
yy 複製
p 粘貼當前光標下一行
x 刪除當前光標字符
u 撤銷
Ctrl+r 恢復
gg 跳到首行
G 最後一行
w 移動單詞
v 可視 x刪除 y複製
Ctrl +v可視塊
末行模式:
q q! w w! wq wq! x
/ 查找
:%s/old/new/g 替換
.vimrc vim的配置文件
編輯模式:補全出現過的單詞 ctrl+n/p
軟件包管理:
dpkg -->ubuntu suse debian -->apt apt-get
rpm -->redhat centos fedora -->yum yum install
rpm 管理rpm包 -i -v -h -a -q -e --nodeps
yum 自動解決rpm包之間的依賴關係 -y
install
update
remove
list
list installed
Info
clear all
makecache
provides 查看包
源碼包(tar包)
解包 tar xf 包名 -C /usr/src
配置 ./configure --prefix=/usr/local/xxx(gcc gcc-c++)
編譯 make
安裝 make install
date 時間
data -s 修改時間 %s時間戳(19700101)
date +%Y%m%d 顯示年月日
bc 計算器
vimdiff diff比較兩文件不一樣
用戶管理:
用戶分類:超級用戶(root) uid 0
普通用戶 uid 1000
程序用戶 uid 1-999
Userdel 刪除用戶 -r 刪除家目錄
useradd -u指定uid -g指定gid -d指定家目錄位置-M指定不建立家目錄 -G指定附加組
passwd -l -u
echo "123123" |passwd --stdin ***
usermod -c -d -g -L -U -e -G修改用戶信息
chage 修改密碼信息 -d 0
croupadd 添加用戶組 -g
chgrp
chsh 或usermod更改用戶的shell
who whoami id groups w
last lastlog
用戶切換和受權
su - 改變環境變量 -c
sudo 受權
visudo(自動檢測是否出錯) =vim /etc/sudoers
用戶組受權前加%
文件權限:
chmod u/g/o/a +/-/=rwx filename 修改文件權限
-0 r4 w2 x1
chown 修改文件歸屬 屬主 屬組
umask 查看或修改mask值
特殊權限位: SUID SGID SBIT
ACL 訪問控制列表
getfacl 查看acl控制列表
setfacl -m u:***:rwx ***
-x 最後刪除mask值
-b 還原RCL列表
特殊文件權限:
chattr +、- 修改
lsattr 查看
i 不能修改 passwd shadow
a 只能追加,不能修改 日誌
只能root設置、修改
磁盤管理:
SATA SAS -->sd
磁盤邏輯結構:柱面、磁道、扇區(512字節)
MBR 主引導記錄 位於磁盤的第一個扇區
dd if=/dev/sda of=/etc/mbr.bak bs=512 count=1
512:4*16=64 446引導記錄(grub) 2校驗字節
fdisk 劃分磁盤分區 -l 查看
mkfs 建立文件系統 -b -I
mount 掛載
umount 卸載
df -Th 查看掛載
du -sh 查看磁盤大小
inode 記錄文件原信息(硬連接inode相同,軟連接inode不一樣類 似於快捷方式;刪除原文件,對硬連接無影響,軟連接不能夠;目錄不能夠作硬連接,能夠作軟連接;硬連接不可跨文件系統,軟連接能夠;硬連接ln,軟連接ln -s)
block 記錄文件內容(默認1k,2k,4k)
superblock 記錄系統inode信息
dumpe2fs
/etc/fstab 開機自動掛載
blkid 查看硬盤UUID
nmcli con show 查看網卡UUID
Partprobe partx 同步分區表
Parted 超過2T
GTP 2T
swap 交換分區(通常爲內存2倍)
mkswap
swapon 激活交換分區 -s 查看現有交換分區
swapoff 關閉交換分區
uptime 查看系統負載
free -m 查看內存使用狀況
啓動流程:
一、BIOS加電自檢
二、MBR引導
三、GRUB引導
四、加載kernel(內核)
五、啓動init(centos 6)--->system(centos 7)
系統非正常關機下存放的碎片文件
修改密碼:
Centos6 :e2e 空格1 回車再按b passwd reboot
Centos7 重啓系統,按任意鍵中斷啓動加載器的倒計時;按e選定編輯條目,將光標移動到內核命令行(以linxu16開頭的行)在行尾添加rd.break;按ctrl+x
使用這些更改啓動,而後從新掛載mount – o remount,rw /sysroot;chroot /sysroot,而後修改密碼;若是開啓selinux,touch /.autorelabel;執行兩次exit
RAID:磁盤冗餘陣列
RAID0:條帶模式,讀寫速度快,磁盤利用率高;沒有數據冗餘
RAID1:鏡像模式,數據徹底冗餘,讀速度快;磁盤利用率低 2*n 50%
RAID5:磁盤利用率想對較高,有數據冗餘,容許一塊硬盤損壞;寫速度慢 3 n-1/n
RAID5+1:熱備盤
RAID10:先作RAID1,再作RAID0
RAID6:兩塊校驗盤
mdadm -C 建立新的RAID -l設置RAID級別 -n -x
LVM:邏輯卷,動態管理磁盤
lvextend 擴容後:
ext4 -->resize2fs
xfs -->xfs-growfs
計劃任務管理:
一次性計劃任務at --->atd
Systemctl start std
週期性計劃任務crond(分,時,日,月,周)
Systemctl start crond
Crontab -e
Crontab -l
Crontab -r
命令絕對路徑
最小單位:分
$()或’’先執行
進程管理:
程序:靜態
進程:動態 -->PID(進程號) PPID(父進程號)
top 動態查看進程信息
cat /proc/cpuinfo |grep core查看內核
ps -aux -ef
kill 殺死PID進程 -9強制殺
killall 根據進程名殺
pkill 根據特殊條件殺
pgrep 根據特色條件查pid
pstree 進程樹
nice
renice
優先級 -20 20 只有root能夠設定負的優先級
&後臺
jobs 查看後臺任務
fg 1 調到前臺
ctrl+z中止
bg 1在後臺繼續運行
sort排序
-n 按數字進行排序
-r 倒序
-k
time 統計命令執行時間
網絡管理命令:
ip addr、ifconfig查看網卡信息IP地址
route
hostname 查看或修改主機名(7:/etc/hostname 6:/etc/sysconfig/network)
bash 打開新的shell
nmap 端口掃描
常見服務的端口號:
ftp 20/21 ssh 22 telnet 23 smtp 25 dns 53 dhcp 67/68 tftp 69 http 80 pop3 110 nfs(rpc) 111 ntp 123 imap 143 https 443 rsync 873 mysql 3306
redis 6379
ftp 文件傳輸協議:
20:數據
21:控制
鏈接方式:
主動鏈接
被動鏈接
傳輸模式:
文本模式
二進制模式
用戶:
匿名用戶:ftp anonymous
本地用戶:Linux系統中
DNS域名解析協議
tcp 53 主從服務器數據同步
udp 53 域名解析
完整域名 www.baidu.com
. 根域
.com 頂級域 .cn .com .org .edu
.baidu 二級域
www 主機頭
hosts 早期用來作域名與IP映射
DNS查詢方式:
遞歸:C-S
迭代:S-S
DNS解析:
正向解析
反向解析:反垃圾郵件
知名DNS服務器:
114.114.114.114
8.8.8.8
Linux:
bind
named
/etc/named.conf
/var/named/
hosts文件優先級高於DNS
命令(bind-utils):
host
nslookup
dig
解析記錄:
SOA受權域
NS管理這個域—>DNS服務器本身的域名
MX郵件交換記錄
A域名映射IP
CNAME別名
*泛解析
PTR反向解析記錄
域名服務器分類
主域名服務器
從域名服務器
緩存域名服務器
CDN內容分發網絡
緩存
流程:
1. 客戶端發送域名解析請求到本地DNS服務器;
2. 本地DNS服務器將請求轉發給CDN DNS 服務器;
3. CDN DNS解析後將服務器地址返回給客戶端;
Shell 腳本
面向過程 動態語言 解釋型 弱類型
變量
規則:只能以字母和下劃線開頭,包括字母、數字、下劃線。區分大小寫
規範:一、變量名要有意義
二、採用駝峯式命名 SameName sam_name
定義變量
變量名=變量值
調用變量
$變量名
打印變量值:
echo $變量名
printf $變量名
printf 「$a\n」
刪除變量:
unset 變量名
declare -i 變量名 聲明該變量爲整數型 +i取消聲明
declare -r變量名 聲明只讀變量
環境變量(全局變量)
env 查看系統環境變量
/etc/profile-->/etc/profile.d/*.sh
~/.bash_profile -->~/.bashrc-->/etc/bashrc
export 變量名 將該變量導出爲全局變量
自定義變量(局部變量)
預約義變量
$0 保存腳本的路徑和名稱
$1 $2 $3 … 位置變量,不交互傳參
$* 保留傳入的全部參數(總體)
$@ 保留傳入的全部參數(單個)
$# 傳入參數的個數
$$ 保存腳本的pid
$? 保存上一條命令執行狀態碼
#! 幻數-->指定解釋器
註釋
執行代碼
執行腳本方式:
一、bash或sh腳本名執行,在子shell中執行結束後退回到父shell
二、相對路徑或絕對路徑執行,必須有執行權限chomd +x
三、Source或.執行,在當前shell下執行
符號:
單引號,原樣輸出
雙引號,解析變量
賦值時,若是有空格,就用引號引發來
$()或``先執行括號中命令,拿到命令結果
shell計算:
$(())整數計算,判斷
let 整數計算
expr 整數計算 \*(乘號要轉義)字符與字母要報錯
bc
$[]
條件測試
[ 條件 ] 或 test 條件測試
文件測試:
-f 是不是文件
-d 是不是目錄
-e 文件或目錄是否存在
-s 是不是一個空文件 非空爲真
整數測試:
-eq 等於
-ne 不等於
-gt 大於
-lt 小於
-le 小於等於
-ge 大於等於
字符串測試:
== 字符串相等
!=
-z 測試是否爲空字符串 非空爲假
邏輯運算符:[[ ]]
&& 或 -a 與
|| 或 -o 或
! 非
case 變量 in
條件1)
執行代碼
;;
條件2)
執行代碼
;;
for i in `seq 100` ;do
if [ $((i%2)) -eq 0 ];then
sum=$((i+sum))
fi
done
echo $sum
獲取字符串長度:
echo $name|wc -L
echo ${#name}
echo length $name
字符串截取:
echo ${name:起始位置:個數}
echo $name|cut -c 起始字符數-結束字符數
字符替換:
abcABC123ABCabc
echo ${name#a*C} 123aABCabc
echo ${name##a*C} abc
echo ${name%a*C} abcABC123ABCabc
echo ${name%A*c} abcABC123
echo ${name%%A*c} abc
echo ${name/abc/456}456ABC123ABCabc
echo ${name//abc/456}456ABC123ABC456
正則表達式:
基礎正則表達式:grep egrep sed awk
.匹配任意一個字符
*匹配前一個字符或表達式任意次
^匹配以…開頭
$匹配以…結尾
[]匹配括號中任意字符 [^0-9] 取反 [a-z]
{n,}匹配前一個字符或表達式最少n次
{,m}匹配前一個字符或表達式最多m次
{n,m}匹配前一個字符或表達式n到m次
擴展正則表達式:egrep = grep -E awk sed -r
+匹配前一個字符或表達式1次或1次以上
?匹配前一個字符或表達式0次或1次
()分組
|或
sed流編輯器
sed 選項‘操做 地址’文件
-r 支持擴展正則表達式
-i 修改文件
-n 安靜模式,只輸入處理的行
i 插入一行
a 追加
d 刪除
c 整行替換
s 字符串替換
p 打印
echo http://www.baidu.com/1.mp3|sed -nr ‘s#(.*)//(.*)/(.*)#\2#gp’
ip a show eno16777736|sed -n "3p"|sed -nr 's#(.*) (.*)/(.*)#\2#p'
awk
默認分隔符爲空格 -F指定
內置變量
NF處理的列數 $1表明第一段 $0整行
NR處理的行數
cut 切割
-c切割字符
-b按字節切割
-d指定分割符
-f指定段數
uniq 去重(相鄰)
-c 統計重複出現的行
查看系統中命令使用最多的
history |awk '{print $2}' |sort |uniq -c |sort -nr |head
ping
-c 指定發送數據包
-w 發包的時間間隔
-i 等待多上時間認爲發送失敗
腳本:
一、統計192.168.2.0/24內有多少主機存活?
二、批量建立10個用戶,能夠爲這些用戶設置統一的默認密碼;強制用戶首次登錄修改密碼;
三、統計當前內存使用狀況,若是內存使用率超過80%,打印報警
awk ‘{print $1}’ /etc/httpd/logs/access_log |sort|uniq -c|sort -nr
awk ‘{array[$1]++} END{for (i in array) print i,array[i]}’ /etc/httpd/logs/access_log
YoLa.2575+
數組:
array=(a b c d)
echo ${array[0]} a
unset array[]
echo ${array[*]:1:2}
echo ${array[*]/a/b}
web 2.0
http 1.1 80 https 443
靜態網站:沒有交互,沒有程序,沒有MySQL
一、每一個頁面有一個特定的URL地址,不含?或&等特殊符號
二、每一個網頁都是獨立的實體文件
三、內容是固定不變的,容易被搜索引擎收錄(優勢)
四、網頁沒有數據庫支持,在製做和維護方面工做量較大,當網站數據量比較大時,
五、交互性差,
動態網站:交互的,有程序(php,java,python,perl)
http狀態碼 200
301
401
403
404
500
502
LAMP Linux Apache(7 2.4 6 2.2) MySQL/Mariadb php/python/perl
虛擬主機:
基於IP
基於域名
基於端口
IO
< 標準輸入 0
> 標準輸出(覆蓋) 1
>> 標準輸出(追加)
2>標準錯誤 2
2>>
&>混合輸出