文章目錄
- Linux高級命令(擴展)
- 一、find命令
- 1、find命令作用
- 2、基本語法
- 3、*星號通配符
- 4、根據文件修改時間搜索文件
- ☆ 聊一下Windows中的文件時間概念?
- ☆ 使用stat命令獲取文件的最后修改時間
- ☆ 創建文件時設置修改時間以及修改文件的修改時間
- ☆ 根據文件的==最后修改時間==搜索文件
- 5、擴展選項-exec選項
- 6、根據文件的大小搜索文件
- 7、dd擴展命令
- 二、tree命令
- 1、tree命令的主要作用
- 2、使用yum命令安裝tree
- 3、以樹狀結構顯示路徑下的文件信息
- 三、scp命令
- 1、scp命令的主要作用
- 2、scp效果
- 3、下載文件或目錄
- 4、上傳文件或目錄
- 四、計劃任務+tar命令實現文件備份
- 1、回顧計劃任務
- 2、計劃任務格式
- 3、案例
- 4、擴展命令:date
- Linux高級命令(擴展)
- 一、date命令
- 1、date命令的作用
- 2、獲取計算機的系統時間
- 3、定制時間格式
- 4、設置計算機的系統時間(慎用)
- 5、ntpdate手工同步時間
- 二、Linux下軟件的安裝方式
- 1、Linux下有哪些軟件安裝方式
- 2、軟件包類型
- ☆ 二進制軟件包(rpm包)
- ☆ 軟件源碼包(重點)
- ☆ 二進制源碼包(.src.rpm)
- 3、常見的二進制軟件包
- 4、總結二進制包和源碼包區別
- 5、二進制軟件包的安裝方式
- 6、RPM軟件包安裝
- ☆ 獲取軟件
- ☆ 如何選擇合適的軟件
- ☆ rpm軟件包的安裝、卸載以及升級
Linux高級命令(擴展)
一、find命令
1、find命令作用
在Linux操作系統中,find命令主要用于進行文件的搜索。
2、基本語法
# find 搜索路徑 [選項 選項的值] ...
選項說明:
-name :根據文件的名稱搜索文件,支持*通配符
-type :f代表普通文件、d代表文件夾
案例:搜索計算機中的所有文件,然后找到httpd.conf文件
# find /etc -name "httpd.conf" -type f
3、*星號通配符
在Linux操作系統中,我們想要查找的文件名稱不是特別清晰(只記住了前面或后面的字符),這個時候就可以使用*星號通配符了。
案例:獲取/etc目錄下,所有后綴名為.conf的文件信息
# find /etc -name "*.conf" -type f
案例:在/etc目錄下,搜索所有以httpd開頭的文件
# find /etc -name "httpd*" -type f
4、根據文件修改時間搜索文件
☆ 聊一下Windows中的文件時間概念?
創建時間:代表這個文件什么時間被創建
訪問時間:代表這個文件什么時間被訪問
修改時間:代表這個文件什么時間被修改
☆ 使用stat命令獲取文件的最后修改時間
# stat 文件名稱
Modify: 2020-03-31 10:25:20.609010605 +0800
☆ 創建文件時設置修改時間以及修改文件的修改時間
基本語法:
# touch -m -d "日期時間格式" 文件名稱
作用:① 如果文件不存在,則自動創建該文件,然后設置其最后的修改時間
? ② 如果文件存在,touch命令就是只修改文件的最后修改時間
案例:創建一個a.txt文件,設置最后修改時間為2020-03-30 00:00
# touch -m -d "2020-03-30 00:00" a.txt
案例:創建一個b.txt文件,然后在設置文件的最后修改時間為2020-03-29 00:00
# touch b.txt
# touch -m -d "2020-03-29 00:00" b.txt
案例:創建一個c.txt文件,設置最后修改時間為2020-03-28 00:00
# touch -m -d "2020-03-28 00:00" c.txt
☆ 根據文件的最后修改時間搜索文件
# find 搜索路徑 -mtime +days/-day3
-mtime :根據文件的最后修改時間搜索文件
+ :加號,代表搜索幾天之前的文件信息
- :減號,代表搜索幾天以內的文件信息
案例:搜索3天以前的文件信息(不包含第3天的,而且只搜索.txt格式)
# find ./ -name "*.txt" -mtime +3
案例:搜索3天以內的文件信息(只搜索.txt格式)
# find ./ -name "*.txt" -mtime -3
5、擴展選項-exec選項
案例:刪除Linux系統中/var/log目錄下10天以前的日志信息(日志文件格式*.log結尾)
# find /var/log -name "*.log" -mtime +10
第一種解決方案:使用管道命令|
# find /var/log -name "*.log" -mtime +10 |rm -rf
以上命令并不能正確的執行刪除操作,原因find命令不支持管道。
# find /var/log -name "*.log" -mtime +10 |xargs rm -rf
第二種解決方案:使用find命令 + -exec選項
基本語法:
# find /var/log -name "*.log" -mtime +10 -exec rm -rf {} \;
6、根據文件的大小搜索文件
基本語法:
# find 搜索路徑 -size [文件大小,常用單位:k,M,G]
size值 : 搜索等于size值大小的文件
-size值 : [0, size值)
+size值 : (size值,正無窮大)
案例:搜索/root目錄下大小為5M的文件信息
# find ./ -type f -size 5M
案例:搜索/root目錄下大小為5M以內的文件信息(5M>size>=0)
# find ./ -type f -size -5M
案例:搜索/目錄中,文件大小大于100M的文件信息(size>100M)
# find / -type f -size +100M
7、dd擴展命令
基本語法:
# dd if=/dev/zero of=文件名稱 bs=1M count=1
選項說明:
if代表輸入文件
of代表輸出文件
bs代表字節為單位的塊大小。
count代表被復制的塊。
其中/dev/zero是一個字符設備,會不斷返回0值字節。
主要功能:在Linux操作系統中,生成某個大小的測試文件!
案例:使用dd創建一個1M大小的sun.txt文件
# dd if=/dev/zero of=moon.txt bs=1M count=1
案例:使用dd創建一個5M大小的moon.txt文件
# dd if=/dev/zero of=moon.txt bs=5M count=1if = input file
of = output file
二、tree命令
1、tree命令的主要作用
Windows和Linux都有tree命令,主要功能是創建文件列表,將所有文件以樹的形式列出來
2、使用yum命令安裝tree
# yum install tree -y
3、以樹狀結構顯示路徑下的文件信息
案例:以樹狀結構顯示當前目錄下的文件信息
# tree
案例:以樹狀結構顯示/var/log目錄下的文件信息
# tree /var/log
三、scp命令
1、scp命令的主要作用
scp命令的主要作用是實現Linux與Linux系統之間的文件傳輸。
完成以上實戰需要兩個Linux系統,解決方案可以使用克隆操作(先關機后克隆)快速生成一個Linux系統
2、scp效果
scp傳輸要求:兩臺計算機所使用的操作系統都必須是Linux操作系統。
ssh: connect to host 10.1.1.17 port 22: Connection refused
lost connection出現以上問題的主要原因在于SCP命令時基于SSH協議,所以兩臺服務器的sshd服務必須處于開啟狀態,否則無法完成上傳與下載操作。
3、下載文件或目錄
基本語法:
# scp [選項] 用戶名@linux主機地址:資源路徑 linux本地文件路徑
選項說明:
-r :代表遞歸操作,主要針對文件夾
案例:從10.1.1.17服務器下載/root路徑下的video.mp4文件到本地的/root目錄下
10.1.1.16:
# scp root@10.1.1.17:/root/video.mp4 ./
The authenticity of host '10.1.1.17 (10.1.1.17)' can't be established.
ECDSA key fingerprint is SHA256:Wcxibo2ZQulm6bV+jEakz8IniwFgE6CUHopCxYjexrI.
ECDSA key fingerprint is MD5:48:25:21:93:ef:2b:22:25:5f:95:39:56:0c:8e:ff:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.1.1.17' (ECDSA) to the list of known hosts.
root@10.1.1.17's password:123456
案例:從10.1.1.17服務器下載/root路徑下的shop文件夾到本地的/root目錄下
# scp -r root@10.1.1.17:/root/shop ./
root@10.1.1.17's password:123456
4、上傳文件或目錄
基本語法:
# scp [選項] linux本地文件路徑 用戶名@linux主機地址:遠程路徑
選項說明:
-r :遞歸操作
案例:把10.1.1.16服務器上的/root/video.mp4上傳到10.1.1.17服務器的/root目錄下
10.1.1.16:
# scp /root/video.mp4 root@10.1.1.17:/root/
案例:把10.1.1.16服務器上的/root/shop文件夾上傳到10.1.1.17服務器的/root目錄下
10.1.1.16:
# scp -r /root/shop root@10.1.1.17:/root/
四、計劃任務+tar命令實現文件備份
1、回顧計劃任務
基本語法:
# crontab [選項]
-l : list縮寫,查詢當前用戶的計劃任務信息
-e : edit縮寫,編輯計劃任務
2、計劃任務格式
分 時 日 月 周 執行的命令(要求使用完整路徑,which命令)
周的范圍比較特殊,正常情況下,只有周一 ~ 周日 1-7,但是計劃任務范圍0-7,0和7都代表周日
3、案例
案例:每天的凌晨2點0分把/etc目錄備份一次/tmp目錄下,要求把/etc打包成etc.tar.gz格式
# crontab -e
分 時 日 月 周 /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
0 2 * * * /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
以上案例雖然可以實現對/etc目錄的備份,但是有一個小缺點:每次備份時,生成的文件名稱是一致的,這樣后面備份的文件就會把前面備份的文件進行覆蓋!
案例:備份文件時,要求按時間作為備份文件的名稱
/tmp/etc-20200331.tar.gz
/tmp/etc-20200401.tar.gz
…
# crontab -e
0 2 * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d").tar.gz /etc重點:
/tmp/etc-$(date +"\%Y\%m\%d").tar.gz
經驗之談:如果在編寫計劃任務時,出現了%百分號,前面必須添加一個反斜杠\進行轉義,否則計劃任務會失效!
4、擴展命令:date
基本語法:
# date +"時間格式"
%F : 年-月-日
%T : 小時:分鐘:秒
%Y : Year,年
%m : month,月
%d : day,日
%H : Hour,小時
%M : Minute,分鐘
%S : Second,秒
案例:獲取計算機的系統時間
# date
案例:獲取年月日信息
# date +""
Linux高級命令(擴展)
一、date命令
1、date命令的作用
date命令的主要作用:用于獲取計算機操作系統的系統時間
2、獲取計算機的系統時間
# date
3、定制時間格式
# date +"%F %T %Y %m %d %H %M %S"
%F : 2020-04-03
%T : 09:45:36
%Y : 年
%m : 月
%d : 日
%H : 小時
%M : 分鐘
%S : 秒
案例:獲取系統時間,時間格式要求20200403
# date +"%Y%m%d"
4、設置計算機的系統時間(慎用)
基本語法:
# date -s "年-月-日 小時:分鐘:秒"
案例:把當前系統時間設置為2020-04-10
# date -s "2020-04-10"
5、ntpdate手工同步時間
如果時間錯亂了,沒有關系,只需要使用ntpdate手工重置一下即可。
# ntpdate cn.ntp.org.cn
二、Linux下軟件的安裝方式
1、Linux下有哪些軟件安裝方式
① RPM軟件包管理(軟件名稱.rpm)
② YUM軟件包管理(使用yum命令install + 軟件名稱) => 下載 + 安裝一體化
③ 源碼編譯安裝(相對來說是最復雜的一種方式)
2、軟件包類型
☆ 二進制軟件包(rpm包)
- 二進制包,指的是已經[^編譯]好了的軟件包,只需要直接安裝就可以使用。
- 二進制包,不需要編譯,直接下載安裝即可
- 二進制包,需要根據自己的計算機CPU以及操作系統去選擇合適的
類似Windows中的.exe文件,如qq.exe
☆ 軟件源碼包(重點)
什么是源碼包?有什么特點?
- 源碼包,指的是程序員寫的原始的程序代碼文件,不能夠直接在計算機上運行。
- 源碼包,需要進行編譯,變成二進制的軟件包后,才可安裝使用
- 源碼包,一般可以在任何的計算機上安裝使用
- 源碼包,命名方式一般為:
軟件包名.tar.gz
軟件包名.tar.bz2
軟件包名.tar.xz
軟件包名.zip
類似于騰訊QQ開發工程師 => QQ的源代碼發給你了 .c => 編譯 => QQ.exe文件
☆ 二進制源碼包(.src.rpm)
什么是二進制源碼包?有什么特點?
- 二進制源碼包,是一個半成品,安裝后不能直接使用
- 二進制源碼包,需要使用
rpmbuild
工具重建成真正的rpm
包或者重建成源碼包才可安裝使用 - 二進制源碼包,命名方式一般為:
- mysql-community-5.7.25-1.el6.==src.==rpm
- mysql-community-5.7.25-1.el7.src.rpm
3、常見的二進制軟件包
4、總結二進制包和源碼包區別
5、二進制軟件包的安裝方式
① 基于RPM進行安裝(先下載軟件然后本地進行安裝)
② 基于YUM進行安裝(在線下載然后安裝)
6、RPM軟件包安裝
☆ 獲取軟件
Linux只是內核,Linux發行版本:GNU/Linux
- RedHat/Centos光盤或官方網站 ftp://ftp.redhat.com
- 推薦網站
- www.rpmfind.net
- rpm.pbone.net
- 相應軟件官方網站
- http://www.mysql.com
- http://nginx.org/packages/
☆ 如何選擇合適的軟件
- 選擇適合當前系統的版本號
- 找不到適合的,才去嘗試別的系統版本號
- el6兼容el5;el5無法安裝 el6
- 選擇適合當前計算機cpu的架構
- x86_64包,只能安裝在64位的系統上
- i386,i586,i686的軟件包可以安裝在32和64位系統上
- noarch表示這個軟件包與硬件構架無關,可以通用
- 32位系統不能安裝64位包
建議: 建議不要跨大版本號去安裝軟件包,盡量使用當前系統版本自帶軟件包安裝
☆ rpm軟件包的安裝、卸載以及升級
安裝:
# rpm -ivh 軟件包名稱
卸載:
# rpm -e 軟件包名稱 [--nodeps強制]
查詢:
# rpm -q 軟件名稱
或
# rpm -qa |grep 軟件名稱
升級:
# rpm -Uvh 軟件包名稱
注:rpm -Uvh不僅可以升級軟件,其實它也可以安裝軟件。
RPM包管理:以上操作都比較簡單,但是在實際應用過程中,可能會遇到問題,很多rpm軟件包在安裝時都會提示軟件依賴。那這個問題如何解決呢?
方法一:根據提示一個一個軟件包安裝,先解決依賴在回來安裝軟件
方法二:使用yum install 安裝rpm軟件包
# yum install 軟件名稱.rpm
以上安裝方式的最大好處是,如果安裝軟件時,產生了依賴,不用擔心,yum會自動幫助我們解決這些問題的!