一: linux基礎
ip add show
ifconfig

(2) 操作網卡命令(重啟網絡和啟用網卡)
systemctl restart network
systemctl start network
systemctl stop network
啟用和停止網卡命令
ifup 網卡名
例:
ifup ens33 # 啟用網卡
ifdown ens33 # 停止網卡
(3) 遠程連接服務器
注意: 因為我的講師機的虛擬機是橋接模式,跟大家在同一個局域網,所以誰都可以連接
但是,不要干壞事兒
第一種方式: 使用第三方軟件,我們教學就使用xshell進行連接就可以
第二種方式: 使用命令進行連接
ssh root@192.168.12.56
三. linux目錄結構
根目錄 /
/root /bin /dev /etc /home /var /lib /usr /media /tmp 。。。。
| |
/root/desktop /root/Media 。。。 /usr/bin /usr/lib 。。。。

ip add show
ifconfig

(2) 操作網卡命令(重啟網絡和啟用網卡)
systemctl restart network
systemctl start network
systemctl stop network
啟用和停止網卡命令
ifup 網卡名
例:
ifup ens33 # 啟用網卡
ifdown ens33 # 停止網卡
(3) 遠程連接服務器
注意: 因為我的講師機的虛擬機是橋接模式,跟大家在同一個局域網,所以誰都可以連接
但是,不要干壞事兒
第一種方式: 使用第三方軟件,我們教學就使用xshell進行連接就可以
第二種方式: 使用命令進行連接
ssh root@192.168.12.56
三. 目錄相關操作
. 當前目錄
.. 上一層目錄
- 前一個工作目錄
~ 當前【用戶】所在的家目錄
藍色的文件: 都是目錄
白色的文件: 都是普通文件
綠色的 文件: 都是可執行文件
四. linux基本操作命令
增刪改查的高大上叫法 : CURD
增
# 創建目錄(文件夾)
mkdir liulaoshi
mkdir chenwen
mkdir chengang
mkdir zhangqihang
# 創建普通文件
touch huangchun
touch xiaowei
刪
remove > 因為太長,所以改為rm
rm或rm -i # 刪除文件命令
rm -r # 遞歸刪除目錄和文件命令
rm -rf # 遞歸並且強制刪除目錄和文件命令
rmdir # 刪除一個空目錄
注意: rm -rf /*是炸彈命令,千萬不要使用
注意: rm -rf /*是炸彈命令,千萬不要使用
注意: rm -rf /*是炸彈命令,千萬不要使用
改
cd # 切換目錄命令

mv # 移動文件命令
mv 源文件 目標文件 # 對文件重命名
查
ls # 查看當前目錄下的文件夾和文件
ls -l或ll # 查看當前目錄下的文件夾和文件詳情
ls -la # 查看當前目錄下的文件夾和文件詳情, 還可以查看隱藏文件
pwd # 查看當前所在的目錄的絕對路徑
重啟或關機命令
init 6 # 重啟
init 0 # 關機
linux下查看環境變量
echo $PATH

絕對路徑和相對路徑
-
絕對路徑:由根目錄(/)為開始寫起的文件名或者目錄名稱,如/home/oldboy/test.py;
-
相對路徑:相對於目前路徑的文件名寫法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,簡單來說只要開頭不是/,就是屬於相對路徑
二: linux基本命令
(1) 創建用戶命令
useradd liulaoshi # 創建用戶
passwd liulaoshi # 設置密碼, 回車后會提示讓你輸入兩次密碼
普通用戶登錄的命令提示符與root用戶不一樣

(2) 修改命令提示符
echo $PS1 # 查看命令提示符參數
PS1="[\u@\h \w \t]\$"
\w 顯示完整工作路徑
\t 顯示時間
(3) 修改主機名
hostnamectl set-hostname qishitwo

(4) linux系統命令提示符
命令 參數 需處理的內容

(5) 創建目錄命令
mkdir -p liulaoshi/chenwen/liujie/xiaowei # 遞歸創建目錄
mkdir -p {qihang,chenwen,yanglan,xiaowei} # 創建多個目錄

touch liulaoshi.py qihang.py yanglan.py xiaowei.py
# 創建多個普通文件命令, 文件之間用空格隔開

(6) VIM操作初識
命令模式常用操作: :set nu 顯示行號 1G 或 gg ,跳轉到文件的首行 G ,跳轉到文件的末尾行 yy、#yy ,復制光標處的一行、#行 p、P ,粘貼到光標處之后、之前 x 或 Delete鍵 ,刪除光標處的單個字符 dd、#dd ,刪除光標處的一行、#行 d^、d$ ,從光標處之前刪除至行首/行尾 /word 向后查找字符串“word”,再按n/N跳至后/前一個結果 u ,撤銷最近的一次操作 U ,撤銷對當前行的所有修改 Ctrl + r 取消前一次撤銷操作 ZZ 保存修改並退出 末行模式常用操作: :s/old/new ,替換當前行第一個“old” :s/old/new/g ,替換當前行所有的“old” :n,m s/old/new/g ,替換第n-m行所有的“old” :% s/old/new/g ,替換文件內所有的“old” :w /root/newfile ,另存為其它文件 :r /etc/filesystems ,讀入其他文件內容 :set nu|nonu ,顯示/不顯示行號 :set ai|noai ,啟用/關閉自動縮進
(7) 修改網卡配置文件,使系統重啟之后不用再手動啟動網卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33

改完之后,下一次你重啟系統之后,就不用再使用ifup ens33命令手動啟用網卡了
(8) 查看普通文件內容
cat 文件名 # 可以用絕對路徑,也可以用相對路徑

(9) 特殊符號
輸入/輸出 >> 追加重定向 > 重定向 會清空源文件 < 輸入重定項 << 將輸入結果輸入重定向

(10) more和less命令
more /etc/passwd # 分頁查看文件, 比cat命令好用
less /etc/passwd # 同more 比more功能更多
(11) linux快捷鍵
1.tab鍵 用於自動補全命令/文件名/目錄名
2.ctrl + l 清理終端顯示
3.clear/cls 清理終端顯示
4.ctrl + c 終止當前操作
(12) echo命令
echo "山外青山樓外青樓" > passwd # 單個>符號表示覆蓋
echo "能人背后有人弄" >> passwd # 兩個>符號表示追加
(13) 復制命令
cp 參數 源文件 目標文件
-r 遞歸,復制目錄以及目錄的子孫后代
-p 復制文件,同時保持文件屬性不變
-a 相當於-pdr, 類似與Windows系統的復制快捷方式
(14) 移動和重命名命令mv
mv 源文件 目標文件
# 不僅有移動的功能,還有重命令名的功能
(15) 刪除命令
rm 參數 文件名
-i 需要刪除確認
-f 強制刪除
-r 遞歸刪除目錄和內容

(16)查找命令
find 需要查找的目錄
-name # 指定文件的名字
-type # 指定文件類型
(17) 別名alias命令
alias #查看系統存在的別名
alias rm="echo '此命令太危險了,請你不要再使用'"
# 給rm命令別名成為echo '此命令太危險了,請你不要再使用'
# 當用戶再輸入rm命令時,就會執行這個命令:
echo '此命令太危險了,請你不要再使用'
unalias rm # 取消別名
(18) 查看系統運行的進程
ps -ef
(19) 查看系統已開放的端口
netstat -tunlp


(19) 管道命令

ps -ef | grep liulaoshi # 查看系統中與liulaoshi相關的進程

(20) grep命令
grep nologin /etc/passwd # 過濾出/etc/passwd下面所有含有noloing的信息
grep root /etc/passwd # 過濾出/etc/passwd下面root信息

語法:
grep [參數] [--color=auto] [字符串] filename
參數詳解:
-i : 忽略大小寫
-n : 輸出行號
-v : 反向選擇
--color = auto : 給關鍵詞部分添加顏色


(21) linux下面的IP地址信息(重要指數*)
127.0.0.1 # 本機地址, 別人無法訪問,只有本機才可以訪問
192.168.12.56 # 本機IP地址,別人可以訪問
localhost # 本機主機名
0.0.0.0 # 本機環回地址, 相當於127.0.0.1加上192.168.12.56
(22) head和tail命令(重要指數***)
head顯示文件前幾行,默認前10行
tail顯示文件后幾行,默認后10行
head -20 /etc/passwd | tail -1

(23) which 命令(重要指數*)
which命令用於查找並顯示給定命令的絕對路徑,環境變量PATH中保存了查找命令時需要遍歷的目錄。 which指令會在環境變量$PATH設置的目錄里查找符合條件的文件。 也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
which pwd
which python
(24) scp命令(重要指數*)
語法
scp 【可選參數】 本地源文件 遠程文件標記
-r :遞歸復制整個目錄
-v:詳細方式輸出
-q:不顯示傳輸進度條
-C:允許壓縮
scp liulaoshi.py root@192.168.12.77:/opt/
# 將本地的liulaoshi.py拷貝到遠程服務器192.168.12.77的/opt目錄下
scp root@192.168.12.77:/opt/liulaoshi.py /root/
# 將遠程服務器192.168.12.77的/opt目錄下liulaoshi.py拷貝到本地/root目錄下
scp -r /opt/liulaoshi root@192.168.12.77:/opt # 遞歸拷貝目錄

(25) 查看磁盤占用率命令
df -h
du -sh 文件或目錄名 # 統計文件或目錄的大小,以K,M,G為單位人性化顯示
(26) top命令
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
ps -eLf | grep java | wc -l
監控網絡客戶連接數:
netstat -n | grep tcp | grep 偵聽端口 | wc -l
(27) chattr命令
chattr +a huangxiaowei.py # 給文件加鎖 chattr -a huangxiaowei.py # 給文件解鎖 lsattr huangxiaowei.py # 查看文件詳細加鎖信息
(28) linux時間服務器 (重要指數***)
date 查看系統當前時間 ntpdate -u ntp.aliyun.com # 從阿里雲的NTP服務器更新系統的時間
硬件時鍾的查看 hwclock //以系統時間為基准,修改硬件時間 hwclock -w //以硬件時間為基准,修改系統時間 hwclock -s
date 041215002019 # 修改系統時間
(29)wget 下載命令
wget 鏈接
(30) lrzsz軟件包
yum install lrzsz rz # 上傳 sz 文件名 # 下載指定文件
(31) 關機和重啟命令
reboot或init 6命令用於重啟機器 poweroff或init 0用於關閉系統
(32)rsync 同步工具
本地同步操作: rsync [選項...] 本地目錄1 本地目錄2 rsync [選項...] 本地目錄1/ 本地目錄2 rsync同步工具的常用選項: -n:測試同步過程,不做實際修改 --delete:刪除目標文件夾內多余的文檔 -a:歸檔模式,相當於-rlptgoD -v:顯示詳細操作信息 -z:傳輸過程中啟用壓縮/解壓 1)將目錄 /boot 同步到目錄 /todir 下 [root@svr7 ~]# ls -l /todir //同步前 ls: 無法訪問/todir: 沒有那個文件或目錄 [root@svr7 ~]# rsync -a /boot /todir //將目錄1作為目錄2的子目錄 [root@svr7 ~]# ls -l /todir //檢查同步結果 總用量 4 dr-xr-xr-x. 4 root root 4096 11月 30 18:50 boot 2)將目錄 /boot 下的文檔同步到目錄 /todir 下 [root@svr7 ~]# rm -rf /todir //清理掉目錄2 [root@svr7 ~]# rsync -a /boot/ /todir //將目錄1下的文檔同步到目錄2下 [root@svr7 ~]# ls -l /todir //檢查同步結果 總用量 126708 -rw-r--r--. 1 root root 126426 10月 30 2015 config-3.10.0-327.el7.x86_64 drwxr-xr-x. 2 root root 4096 11月 30 18:50 extlinux drwx------. 6 root root 104 12月 9 09:58 grub2 3)同步效果測試 在目錄/boot下新增文件a.txt,刪除/todir下的子目錄 grub2: [root@svr7 ~]# touch /boot/a.txt [root@svr7 ~]# rm -rf /todir/grub2/ 現在目錄/boot和/todir目錄下的內容已經不一致了: [root@svr7 ~]# ls -ld /boot/a.txt /todir/a.txt ls: 無法訪問/todir/a.txt: 沒有那個文件或目錄 -rw-r--r--. 1 root root 0 1月 11 21:09 /boot/a.txt [root@svr7 ~]# ls -ld /boot/grub2 /todir/grub2 ls: 無法訪問/todir/grub2: 沒有那個文件或目錄 drwx------. 6 root root 104 12月 9 09:58 /boot/grub2 再次同步使/todir與/boot一致: [root@svr7 ~]# rsync -a /boot/ /todir/ 確認同步結果: [root@svr7 ~]# ls -ld /boot/a.txt /todir/a.txt -rw-r--r--. 1 root root 0 1月 11 21:09 /boot/a.txt -rw-r--r--. 1 root root 0 1月 11 21:09 /todir/a.txt [root@svr7 ~]# ls -ld /boot/grub2 /todir/grub2 drwx------. 6 root root 104 12月 9 09:58 /boot/grub2 drwx------. 6 root root 104 12月 9 09:58 /todir/grub2 步驟二:驗證 -a、-v、-n、--delete 選項的含義 1)驗證-a選項 當目錄1包含文件夾時,若缺少-a或-r選項則文件夾會被忽略: [root@svr7 ~]# rsync /home /testa skipping directory home [root@svr7 ~]# ls -ld /testa ls: 無法訪問/testa: 沒有那個文件或目錄 添加-a后才會執行同步: [root@svr7 ~]# rsync -a /home/ /testa [root@svr7 ~]# ls -ld /testa drwxr-xr-x. 4 root root 31 1月 6 17:33 /testa 類似的情況,當目錄1中的數據出現權限、歸屬、修改時間等變化時,若文件內容不變默認不會同步,若希望目錄2也同步這些變化,也需要-a選項。 2)驗證-v選項 創建測試目錄及文檔: [root@svr7 ~]# mkdir /fdir [root@svr7 ~]# touch /fdir/1.txt 添加-v選項時,可以看到操作細節信息,比如第一次同步時: [root@svr7 ~]# rsync -av /fdir/ /tdir sending incremental file list created directory /tdir ./ 1.txt //傳輸文檔列表 sent 82 bytes received 34 bytes 232.00 bytes/sec total size is 0 speedup is 0.00 在目錄/fdir/添加文件2.txt,再次跟蹤同步信息: [root@svr7 ~]# touch /fdir/2.txt sending incremental file list ./ 2.txt //傳輸文檔列表 sent 100 bytes received 34 bytes 268.00 bytes/sec total size is 0 speedup is 0.00 確認目錄1和目錄2的內容已經一致: [root@svr7 ~]# ls /fdir/ /tdir/ /fdir/: 1.txt 2.txt /tdir/: 1.txt 2.txt 再次跟蹤同步信息,已經無需傳輸文件: [root@svr7 ~]# rsync -av /fdir/ /tdir sending incremental file list sent 58 bytes received 12 bytes 140.00 bytes/sec total size is 0 speedup is 0.00 3)驗證-n選項 將-n、-v選項合用,可以模擬同步過程,顯示需要做哪些操作(但並不真的同步)。 在目錄/fdir下新建文件3.txt,測試同步操作: [root@svr7 ~]# touch /fdir/3.txt [root@svr7 ~]# rsync -avn /fdir/ /tdir/ sending incremental file list ./ 3.txt //提示同步時會傳輸哪些文件 sent 78 bytes received 18 bytes 192.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN) [root@svr7 ~]# ls -l /tdir/3.txt //但實際並未真的同步 ls: 無法訪問/tdir/3.txt: 沒有那個文件或目錄 去掉-n選項才會真正同步: [root@svr7 ~]# rsync -av /fdir/ /tdir/ sending incremental file list ./ 3.txt sent 114 bytes received 34 bytes 296.00 bytes/sec total size is 0 speedup is 0.00 [root@svr7 ~]# ls -l /tdir/3.txt -rw-r--r--. 1 root root 0 1月 11 21:46 /tdir/3.txt 4)驗證--delete選項 rsync同步操作默認只是將目錄1的數據同步到目錄2,但如果目錄2存在多余的文件卻並不會去除,除非添加—delete選項。 在目錄/fdir、/tdir已經完成同步后,刪除/tdir/2.txt文件,再次同步: [root@svr7 ~]# rm -rf /fdir/2.txt [root@svr7 ~]# rsync -a /fdir/ /tdir/ 檢查發現目標文件夾/tdir下的2.txt文件還在: [root@svr7 ~]# ls /fdir/ /tdir/ /fdir/: 1.txt 3.txt /tdir/: 1.txt 2.txt 3.txt 這種情況下添加--delete選項再次執行同步,兩個目錄的內容就一致了: [root@svr7 ~]# rsync -a --delete /fdir/ /tdir/ [root@svr7 ~]# ls /fdir/ /tdir/ /fdir/: 1.txt 3.txt /tdir/: 1.txt 3.txt
rsync+SSH同步
rsync user@host:遠程目錄/
rsync [...] user@host:遠程目錄 本地目錄
rsync [...] 本地目錄 user@host:遠程目錄
1 查看遠程主機svr7的/目錄下有哪些子目錄:
[root@pc207 ~]# rsync root@192.168.4.7:/
2 rsync+SSH同步操作
從遠程主機svr7下載/etc/passwd文件到當前目錄
[root@pc207 ~]# rsync root@192.168.4.7:/etc/passwd ./
3 將遠程主機svr7的/boot/目錄同步為本地的/fromssh
[root@pc207 ~]# rsync -a root@192.168.4.7:/boot/ /fromssh
4 將本機的/etc目錄同步到遠程主機svr7的/opt/下
[root@pc207 ~]# du -sh /etc
[root@pc207 ~]# rsync -a /etc root@192.168.4.7:/opt/
配置rsync服務端
3.1 問題
本例要求在主機svr7上配置rsync同步資源,完成下列任務:
1.將 /usr/src 目錄配置為 rsync 共享,其共享名為 tools,僅允許用戶 ruser 以密碼 pwd123 訪問
2.啟動 rsync 服務,並將其設為開機自啟
3.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:建立rsync賬號文件
1)建立賬號記錄
[root@svr7 ~]# vim /etc/rsyncd_users.db
ruser:pwd123 //每行一個用戶記錄
othername:123456
2)控制賬號文件權限(服務端嚴格模式有要求)
[root@svr7 ~]# chmod 600 /etc/rsyncd_users.db
[root@svr7 ~]# ls -l /etc/rsyncd_users.db //確認權限調整結果
-rw-------. 1 root root 27 12月 20 16:25 /etc/rsyncd_users.db
步驟二:配置rsync共享資源
1)確保被共享的目錄可用
[root@svr7 ~]# ls /usr/src/ //目錄及文檔資源存在
copyright debug install.sh license_ch.txt src
data inotify-tools-3.13 kernels README.md
[root@svr7 ~]# ls -ld /usr/src/ //權限允許訪問
drwxr-xr-x. 7 root root 4096 1月 7 13:57 /usr/src/
2)建立rsyncd.conf配置文件
[root@svr7 ~]# vim /etc/rsyncd.conf
[tools] //共享名
path = /usr/src //目錄位置
comment = Rsync Test Directory
read only = yes //默認只讀
dont compress = *.gz *.bz2 *.tgz *.zip //不需要壓縮的文件
auth users = ruser //允許誰訪問
secrets file = /etc/rsyncd_users.db //賬號文件
步驟三:啟用rsync服務端
1)啟動系統服務rsyncd,並設置開機自啟
[root@svr7 ~]# systemctl restart rsyncd
[root@svr7 ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsync.service to /usr/lib/systemd/system/rsync.service.
3)檢查服務監聽狀態
1.[root@svr7 ~]# netstat -anptu | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 6339/rsync
tcp6 0 0 :::873 :::* LISTEN 6339/rsync
4 案例4:訪問rsync共享資源
4.1 問題
本例要求掌握rsync與遠程rsync資源的同步操作,使用rsync命令訪問遠程主機svr7,完成下列任務:
1.列出遠程主機提供的 rsync 資源,並查看內容
2.將遠程主機的 rsync 共享目錄同步到本機
4.2 方案
列出 rsync 共享資源:
rsync host::
rsync rsync://host
rsync+rsync遠程同步操作:
rsync [...] user@host::共享名 本地目錄
rsync [...] 本地目錄 user@host::共享名
訪問需要驗證的rsync資源時,可以通過 --password-file= 選項來加載提前准備的密碼文件(權限600,不要包括除密碼外的其他字符),便於計划任務或腳本使用。
4.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:列出遠程主機提供的 rsync 資源,並查看內容
1)列出有哪些rsync共享(無需密碼)
使用方式1:
[root@pc207 ~]# rsync 192.168.4.7::
tools Rsync Test Directory
或者,使用方式2:
[root@pc207 ~]# rsync rsync://192.168.4.7
tools Rsync Test Directory
2)列出指定的rsync共享目錄下有哪些內容
訪問目錄內容時要求用戶驗證,否則會失敗:
[root@pc207 ~]# rsync 192.168.4.7::tools/
Password:
@ERROR: auth failed on module tools
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.9]
指定正確的用戶名、密碼才能夠訪問:
[root@pc207 ~]# rsync ruser@192.168.4.7::tools/
Password: //輸入用戶ruser的密碼
drwxr-xr-x 4096 2017/01/07 13:57:06 .
-rw-r--r-- 303 2015/12/23 19:36:55 README.md
-rw-r--r-- 2189 2015/11/18 20:47:12 copyright
-rwxr-xr-x 773 2015/11/18 20:47:12 install.sh
7.-rw-r--r-- 7828 2015/11/18 20:47:12 license_ch.txt
drwxr-xr-x 4096 2017/01/07 13:51:21 data
.. ..
步驟二:將遠程主機的 rsync 共享目錄同步到本機
1)手動交互方式
將遠程tools共享的資源同步到本機的/mysrc目錄:
[root@pc207 ~]# rsync -az ruser@192.168.4.7::tools/ /mysrc
Password: //輸入用戶ruser的密碼
[root@pc207 ~]# du -sh /mysrc //檢查同步結果
17M /mysrc
2)自動交互方式
通過--passwod-file選項提供密碼文件:
[root@pc207 ~]# echo pwd123 > /root/pass.txt //建立密碼文件
[root@pc207 ~]# chmod 600 /root/pass.txt //控制密碼文件的權限
[root@pc207 ~]# rsync -az --password-file=/root/pass.txt ruser@192.168.4.7::tools/ /mysrc
//免除手動密碼交互
