Linux自用筆記
????Linux 教程 | 菜鳥(niǎo)教程 (runoob.com)?
? ?
useradd 用戶(hù)名
useradd -d 指定目錄 用戶(hù)名
修改密碼
passwd 用戶(hù)名
刪除用戶(hù)
userdel 用戶(hù)名 ?# 刪除用戶(hù),但保留家目錄
userdel -r 用戶(hù)名 ?# 刪除用戶(hù)及用戶(hù)家目錄
查詢(xún)用戶(hù)信息
id 用戶(hù)名
切換用戶(hù)
su - 用戶(hù)名 # 權(quán)限低到高需要輸入密碼,反之不需要
查看當(dāng)前用戶(hù)
whoami 或 who am i
1. 運(yùn)行級(jí)別
七種運(yùn)行級(jí)別
0 halt 關(guān)機(jī),代表系統(tǒng)停機(jī)狀態(tài),默認(rèn)情況下,系統(tǒng)運(yùn)行級(jí)別不能設(shè)置為0,否則電腦一開(kāi)機(jī)就進(jìn)入關(guān)機(jī)模式,電腦將不能正常啟動(dòng)
1 Single user mode 單用戶(hù)模式,只支持root賬戶(hù),主要用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸,類(lèi)似于Windows下的安全模式
2 Multiuser,without NFS 它是多用戶(hù)模式,沒(méi)有網(wǎng)絡(luò)文件系統(tǒng)支持
3 Full Multiuser mode 完全多用戶(hù)模式,有網(wǎng)絡(luò)文件系統(tǒng),用戶(hù)登錄后進(jìn)入控制臺(tái)命令行模式,在沒(méi)有網(wǎng)絡(luò)的環(huán)境下等同于運(yùn)行級(jí)別2
4 unused 系統(tǒng)未使用,用作保留,一般不用,在一些特殊情況下可以用它來(lái)做一些事情,例如:在筆記本電腦的電池用盡時(shí),可以切換到這一模式來(lái)做一些設(shè)置
5 X11 圖形界面的多用戶(hù)模式用戶(hù)登錄后直接進(jìn)入X-Window系統(tǒng)
6 Reboot 重啟,默認(rèn)情況下,運(yùn)行級(jí)別不能設(shè)為6,否則電腦一開(kāi)機(jī)就進(jìn)入重啟模式會(huì)一直不停地重啟,系統(tǒng)將不能正常的啟動(dòng)
運(yùn)行級(jí)別
查看當(dāng)前系統(tǒng)運(yùn)行級(jí)別:systemctl get-default 或 runlevel //二者返回不同 前者如graphical.target 后者如N 5
設(shè)置開(kāi)機(jī)時(shí)運(yùn)行級(jí)別3:systemctl set-default multi-user.target
設(shè)置開(kāi)機(jī)時(shí)運(yùn)行級(jí)別5:systemctl set-default graphical.target
關(guān)機(jī)命令
init 0 //關(guān)機(jī),調(diào)用系統(tǒng)的0級(jí)別
halt //關(guān)機(jī)
poweroff //關(guān)機(jī)
shutdown -h 0 //等同于shutdown -h now
shutdown -h +15 //15分鐘后關(guān)機(jī)
重啟命令
init 6
reboot
shutdown -r 0
shutdown -r +15
shutdown -r 16:30 //16:30重啟 占用前臺(tái)
shutdown -r 16:30& //16:30重啟 占用后臺(tái)
取消shutdown
shutdown -c
2. 文件目錄
顯示路徑
pwd # 顯示當(dāng)前工作目錄的絕對(duì)路徑
ls [選項(xiàng)] [目錄或文件]
# 常用:-a 顯示所有文件和目錄,包括隱藏的
# ? ? -l 以列表的方式顯示信息
# * 查找當(dāng)前目錄中*后字符的文件
切換路徑
cd [dirName]
cd /home # 切換到/home目錄
cd ~ ?# 切換到自己的home目錄
cd ../.. # 切換到當(dāng)前目的上上兩層
創(chuàng)建目錄
mkdir /home/dog # 創(chuàng)建單級(jí)目錄
mkdir -p /home/animal/tiger # 創(chuàng)建多級(jí)目錄
mkdir -p {foo,bar}/{1..5} # 創(chuàng)建foo/1 foo/2 ... bar/5
刪除目錄
rmdir /home/dog # 刪除目錄 如此只可以刪除空目錄
rm -rf /home/animal # 刪除整個(gè)目錄 f表示不經(jīng)過(guò)確認(rèn)
rm -rf / # 刪庫(kù)跑路(bushi)
創(chuàng)建空文件
touch /home/hello.txt # 在/home目錄下創(chuàng)建hello.txt的空文件
拷貝
cp [options] source dest
常用:-r 遞歸復(fù)制整個(gè)文件夾
若有多個(gè)文件 不希望依次確認(rèn) 可以用:
\cp -r /home/bbb /opt/
重命名與移動(dòng)文件
mv oldName newName # 重命名
mv /temp/movefile /targetfolder # 移動(dòng)文件
查看文件
cat [選項(xiàng)] 文件 # cat只能查看 無(wú)法修改
常用:-n 顯示行號(hào)
?| more 以全屏的形式按頁(yè)顯示文本
cat -n /etc/profile | more
less 指令
與more類(lèi)似,但不是一次性加載整個(gè)文件,而是根據(jù)顯示加載需要的內(nèi)容
空白鍵/pgup/pudn:翻頁(yè)
/字串 向下搜索【字串】,n:向下查找 N:向上查找
?字串 向上搜索【字串】
q:退出
顯示與輸出
echo:輸出內(nèi)容到控制臺(tái)
輸出環(huán)境變量:echo $HOSTNAME
echo "$foo" # 輸出$foo的值
echo '$foo' # 輸出字符串$foo
head:顯示文件開(kāi)頭部分內(nèi)容,默認(rèn)顯示前十行
head -n 5 fileName # 查看文件前五行內(nèi)容
tail:顯示文件尾部?jī)?nèi)容,默認(rèn)十行 用法同head
tail -1n ? # 顯示最后一行
tail -f fileName # 實(shí)時(shí)追蹤文件內(nèi)容的更新
> 輸出重定向和 >> 追加
常用:
ls -l > fileName # 列表的內(nèi)容寫(xiě)入文件(覆蓋)
ls -al >> fileName # 列表的內(nèi)容追加到文件結(jié)尾
cat 文件1 > 文件2 ?# 文件1的內(nèi)容覆蓋到文件2
echo "內(nèi)容" >> fileName # 內(nèi)容追加到文件中
tee:讀取標(biāo)準(zhǔn)輸入的數(shù)據(jù),并將其內(nèi)容輸出成文件
tee [option] [file]
-a 追加而非覆蓋
-i 忽略中斷信號(hào)
ls -l | tee -a ls.log # 同時(shí)打印到屏幕和文件里
鏈接
ln指令:軟連接(符號(hào)鏈接),存放了鏈接其他文件的路徑
ln -s [源文件或目錄](méi) [軟連接名]
如:在/home目錄下創(chuàng)建一個(gè)軟連接myroot,鏈接到/root目錄
ln -s /root /home/myroot
rm /home/myroot # 刪除鏈接
3. 時(shí)間日期
date指令
cal ?# 顯示日歷
date # 顯示當(dāng)前時(shí)間
date +%Y # 顯示當(dāng)前年份
date +%m # 月份
date +%d # 日期
date "+%Y-%m-%d %H:%M:%S" # 年月日時(shí)分秒
date -s 字符串時(shí)間 # 設(shè)置時(shí)間
date -s "2023-1-10 15:16:00"
4. 查找指令
find指令
find [搜索范圍] [選項(xiàng)]
指令從指定目錄向下遞歸地遍歷其各個(gè)子目錄,將目標(biāo)顯示在終端
1.find /home -name hello.txt # 查找/home目錄下的hello.txt文件
2.find /opt -user nobody # 查找/opt目錄下,用戶(hù)名為nobody的文件
3.find / -size +200M # 查找所有大于200M的文件
locate指令
locate可以快速定位文件路徑,使用事先建立的系統(tǒng)中所有文件名稱(chēng)及路徑的locate數(shù)據(jù)庫(kù)實(shí)現(xiàn)快速定位給給定的文件。需要定期更新locate時(shí)刻。
第一次運(yùn)行前,需使用updatedb創(chuàng)建數(shù)據(jù)庫(kù)
locate [fileName]
which
which 指令名稱(chēng) # 查看某個(gè)指令在哪個(gè)目錄下
如:which ls
gerp指令和管道符號(hào)|
grep過(guò)濾查找,管道符“|”表示將前一個(gè)命令的處理結(jié)果輸出傳遞給后面的命令處理。
grep [選項(xiàng)] 查找內(nèi)容 源文件
選項(xiàng):-n 顯示匹配行及行號(hào)
?-i ? 忽略字母大小寫(xiě)
cat /home/hello.txt | grep -n "yes" # 在/home/hello.txt中查找yes并返回行號(hào)
grep -n "yes" /home/hello.txt # 同上
sed命令
利用腳本處理文本文件
sed [選項(xiàng)] 文本文件
a :新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何東東;
i :插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
p :打印,亦即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行~
s :取代,可以直接進(jìn)行取代的工作
sed '2,$d' # 2-最后一行行刪除
sed '2a drink tea' # 第二行后加入drink tea
sed 's/被取代的字符串/新的字符串/g'
5. 壓縮和解壓縮
gzip/gunzip(單個(gè)文件)
gzip 文件 # 壓縮文件,只能壓縮為*.gz文件
gunzip 文件 # 解壓文件
zip和unzip(用于目錄)
zip [選項(xiàng)] xxx.zip [fileName]
選項(xiàng):-r 遞歸壓縮,即壓縮目錄
unzip [選項(xiàng)] xxx.zip
選項(xiàng):-d[目錄](méi) 指定解壓后的文件目錄
tar
tar [選項(xiàng)] xxx.tar.gz 打包內(nèi)容
選項(xiàng):-c 產(chǎn)生.tar打包文件
?-v ? 顯示詳細(xì)信息
?-f ? 指定壓縮后的文件名
?-z ? 打包同時(shí)壓縮
?-x ? 解包.tar文件
tar -zcvf pc.tar.gz /home/a.txt /home/b.txt # 將a和b壓縮成pc.tar.gz
tar -zxvf /home/pc.tar.gz -c /home # 將pc.tar.gz解壓到/home
6. 組
Linux中每個(gè)用戶(hù)必須屬于一個(gè)組,不能獨(dú)立于組外。
Linux中每個(gè)文件有所有者、所在組、其他組的概念,其他組與所在組對(duì)文件有不同的權(quán)限。
所有者:初始為文件創(chuàng)建人,也可以通過(guò)
chown 用戶(hù)名 文件名
改變所有者所在組:創(chuàng)建人所在的組,可以用過(guò)
chgrp 組名 文件名
修改文件所在的組其他組:除文件的所有者和所在組的用戶(hù)外,系統(tǒng)其他用戶(hù)都是文件的其他組
usermod -g 新組名 用戶(hù)名
改變用戶(hù)所在組,若-g
則改變用戶(hù)初始登陸組(用戶(hù)需要有權(quán)限)
組的創(chuàng)建
groupadd 組名 # 創(chuàng)建一個(gè)組
cat /etc/group ?# 查看所有組
useradd -g 組名 用戶(hù)名 # 創(chuàng)建一個(gè)用戶(hù) 并放到指定組中
groupdel 組名 # 刪除一個(gè)組
getent group | grep 組名 # 驗(yàn)證是否成功刪除
id 用戶(hù)名 # 查找用戶(hù)相關(guān)信息
修改用戶(hù)組
usermod -g 用戶(hù)組 用戶(hù)名
7. 權(quán)限
ll顯示內(nèi)容:drwxr-xr-x. 2 root root 4096 1月 ? 8 16:40 公共
第0位確定文件類(lèi)型(d, -, l, c, b)
l:鏈接,相當(dāng)于快捷方式
d:目錄,相當(dāng)于文件夾
-:普通文件
c:字符設(shè)備文件,如鼠標(biāo)鍵盤(pán)
b:塊設(shè)備,如硬盤(pán)
2.第1-3位確定所有者權(quán)限
3.第4-6位確定所屬組權(quán)限
4.7-9位確定其他組的權(quán)限
rwx作用到文件:
1.【r】可讀,可以讀取,查看
2.【w】可寫(xiě),可以修改,但未必可以刪除,需要對(duì)文件所在的目錄有可寫(xiě)權(quán)限
3.【x】可執(zhí)行
rwx作用到目錄:
1.【r】可讀:可以讀取,ls查看
2.【w】可寫(xiě):可以修改,對(duì)目錄內(nèi)創(chuàng)建、刪除、重命名
3.【x】可執(zhí)行:可以進(jìn)入該目錄
如果有某個(gè)文件的寫(xiě)入權(quán)限,但沒(méi)有文件所在目錄的寫(xiě)入權(quán)限,則不能刪除該文件
修改權(quán)限
第一種:+ - =變更權(quán)限
u:所有者 g:所有組 o:其他人 a:所有人
chmod u=rwx,g=rx,o=rx abc # 給abc文件所有者讀寫(xiě)執(zhí)行,所在組讀執(zhí)行,其他組讀執(zhí)行
chmod u-x,g+w # 給abc所有者去除執(zhí)行,增加組寫(xiě)
第二種:通過(guò)數(shù)字變更權(quán)限
r:4 w:2 x:1
chmod 755 abc # 給abc文件所有者讀寫(xiě)執(zhí)行,所在組讀執(zhí)行,其他組讀執(zhí)行
修改文件所有者/所在組
修改所有者:
chown newowner 文件/目錄
chown newowner:newGroup 文件/目錄
如:chown zy /home/a.txt
? chown zy -r zy /home/test # 將/home/test 目錄下所有的文件和目錄所有者修改為zy
修改所在組:
group newGroup 文件/目錄
# 用法同上
8. crond
設(shè)置個(gè)人任務(wù)調(diào)度,執(zhí)行crontab -e
輸入任務(wù)到調(diào)度文件,如* /1 * * * * ls -l /etc/ > /tmp/to.txt # 每分鐘執(zhí)行一次
crontab -r # 終止任務(wù)調(diào)度
crontab -l # 列出當(dāng)前所有任務(wù)調(diào)度
service crond restart # 重啟任務(wù)調(diào)度
項(xiàng)目含義范圍第一個(gè)'*'一小時(shí)中的第幾分鐘0-59第二個(gè)'*'一天中的第幾小時(shí)0-23第三個(gè)'*'一月中的第幾天1-31第四個(gè)'*'一年中的第幾月1-12第五個(gè)'*'一周中的星期幾0-7(0和7都為星期天)
特殊符號(hào)含義*代表任何時(shí)間,如第一個(gè)*表示一小時(shí)中每分鐘執(zhí)行一次,代表不連續(xù)時(shí)間,如"0 8,12 * * *"表示每天的8點(diǎn),12點(diǎn)各執(zhí)行一次-代表連續(xù)時(shí)間,如"0 5 * * 1-6"表示周一到周六凌晨5點(diǎn)執(zhí)行一次*/n代表每隔多久執(zhí)行一次,如"*/10 * * * *"表示每隔10分鐘執(zhí)行一次
at定時(shí)任務(wù)
at [選項(xiàng)] [日期時(shí)間] # at命令指定的任務(wù)指揮執(zhí)行一次
-f:指定包含具體指令的任務(wù)文件
-q:指定新任務(wù)的隊(duì)列名稱(chēng)
-l:顯示待執(zhí)行任務(wù)的列表
-d:刪除指定的待執(zhí)行任務(wù)
-m:任務(wù)執(zhí)行完成后向用戶(hù)發(fā)送 E-mail
需要啟動(dòng)at守護(hù)進(jìn)程
service atd start
啟動(dòng)后atd會(huì)60秒檢測(cè)一次是否到達(dá)任務(wù)時(shí)間
atq # 查看任務(wù)
atrm [任務(wù)編號(hào)] ?# 刪除任務(wù)
如: at 5pm + 2 days # 兩天后的下午五點(diǎn)執(zhí)行l(wèi)s /home
at> ls /home
at now + 2 minutes ?# 兩分鐘后將date寫(xiě)入log
at> date > /root/mydate.log
9. 硬盤(pán)操作
Linux分區(qū)
Linux 是通過(guò)目錄樹(shù)的方式來(lái)管理文件的。每個(gè)分區(qū)都是組成整個(gè)文件系統(tǒng)的一部分。
采用“載入”的處理方法,整個(gè)文件系統(tǒng)包含了一整套的文件和目錄,且講一個(gè)分區(qū)與一個(gè)目錄聯(lián)系起來(lái)。要載入的一個(gè)分區(qū)將使它的存儲(chǔ)空間在一個(gè)目錄下獲得。
硬盤(pán)說(shuō)明
Linux硬盤(pán)分IDE硬盤(pán)和SCSI硬盤(pán),主流SCSI硬盤(pán)。
對(duì)于IDE硬盤(pán),“hdx~”,“hd”表示分區(qū)所在設(shè)備的類(lèi)型(SCSI為sd)“x”為盤(pán)號(hào)(a為基本盤(pán),b為基本從屬盤(pán),c為輔助主盤(pán),d為輔助從屬盤(pán)),“~”表示分區(qū),前四個(gè)分區(qū)用1~4表示,他們是主分區(qū)或擴(kuò)展分區(qū),從5開(kāi)始是邏輯分區(qū)。
查看所有設(shè)備掛載情況
lsblk -f
增加一塊硬盤(pán)
1.虛擬機(jī)添加硬盤(pán):虛擬機(jī)設(shè)置種添加硬盤(pán),重啟系統(tǒng)。
2.分區(qū):fdisk /dev/sdb
m: 顯示命令列表
p: 顯示磁盤(pán)分區(qū),同fdisk -l
n: 新增分區(qū)
d: 刪除分區(qū)
w: 寫(xiě)入并退出
3.格式化:mkfs -t ext4 /dev/sdb1 # ext4是分區(qū)類(lèi)型
4.掛載:mount 設(shè)備名稱(chēng) 掛載目錄
如:mount /dev/sdb1 /newdisk
?卸載:umount 設(shè)備名稱(chēng) 或 掛載目錄
5.永久掛載:修改/etc/fstab文件查詢(xún)磁盤(pán)使用情況
1.查詢(xún)系統(tǒng)整體磁盤(pán)使用情況:df -h
2.查詢(xún)指定目錄磁盤(pán)使用情況:du -h
-s:指定目錄占用大小匯總
-h:帶計(jì)量單位
-a:含文件
--max-depth=1:子目錄深度
-c:列出明細(xì)的同時(shí),總價(jià)匯總值
如:統(tǒng)計(jì)/opt問(wèn)價(jià)下文件的個(gè)數(shù)
ls -l/opt | grep "^-" | wc -l
統(tǒng)計(jì)/opt文件下目錄的個(gè)數(shù),包括子文件夾
ls -lR /opt | grep "^d" | wc -l
3.tree 目錄
10. 進(jìn)程
ps:查看當(dāng)前系統(tǒng)中哪些程序正在執(zhí)行以及執(zhí)行狀況
-a: 顯示當(dāng)前終端所有進(jìn)程信息(執(zhí)行)
-e: 顯示所有進(jìn)程(無(wú)論是否執(zhí)行)
-f: 全格式顯示
-u: 以用戶(hù)的格式顯示
-x: 顯示后臺(tái)進(jìn)程運(yùn)行的參數(shù)
-w: 顯示加寬可以顯示較多的資訊
ps -aux | grep xxx # 查找xxx服務(wù)
USER: 行程擁有者
PID: pid
PPID: 父進(jìn)程
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號(hào)碼 (minor device number of tty)
STAT: 該行程的狀態(tài):
D: 無(wú)法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程)
R: 正在執(zhí)行中 S: 靜止?fàn)顟B(tài)
T: 暫停執(zhí)行 ?Z: 不存在但暫時(shí)無(wú)法消除
? ?W: 沒(méi)有足夠的記憶體分頁(yè)可分配
? ?<: 高優(yōu)先序的行程
? ?N: 低優(yōu)先序的行程
? ?L: 有記憶體分頁(yè)分配并鎖在記憶體內(nèi) (實(shí)時(shí)系統(tǒng)或捱A I/O)
START: 行程開(kāi)始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令
pstree [選項(xiàng)] # 以樹(shù)形查看進(jìn)程
-p:顯示pid
-u:顯示進(jìn)程所屬用戶(hù)
kill和killall
kill [選項(xiàng)] 進(jìn)程號(hào)
killall 進(jìn)程名稱(chēng) # 終止進(jìn)程和所有子進(jìn)程
-9:表示強(qiáng)迫進(jìn)程立即停止
如:種植遠(yuǎn)程登錄服務(wù)sshd,并重啟
kill sshd 進(jìn)程號(hào) ?# 進(jìn)程號(hào)通過(guò)ps -aux | grep sshd 查詢(xún)
/bin/systemctl start sshd.service # 重啟進(jìn)程
11. 服務(wù)管理
chkconfig指令
可以給服務(wù)的各個(gè)運(yùn)行級(jí)別設(shè)置自啟動(dòng)或關(guān)閉 chkconfig指令管理的服務(wù)在/etc/init.d 查看
1.查看服務(wù) chkconfig --list [| grep xxx]
2.chkconfig 服務(wù)名 --list
3.chkconfig --level 5 服務(wù)名 on/off
如:chkconfig --level 3 network off # 把network在3運(yùn)行級(jí)別關(guān)閉自啟動(dòng)
systemctl指令
指令管理在/usr/lib/systemd/system 查看
systemctl [start/stop/restart/status] 服務(wù)名
設(shè)置服務(wù)的自啟動(dòng)狀態(tài)
systemctl list-unit-files [| grep 服務(wù)名] # 查看服務(wù)開(kāi)機(jī)啟動(dòng)狀態(tài),grep進(jìn)行過(guò)濾
systemctl enable 服務(wù)名 # 設(shè)置服務(wù)開(kāi)機(jī)啟動(dòng)
systemctl disable 服務(wù)名 # 關(guān)閉服務(wù)開(kāi)機(jī)啟動(dòng)
systemctl is-enable 服務(wù)名 # 查詢(xún)某個(gè)服務(wù)啟動(dòng)狀態(tài)
如:查看當(dāng)前防火墻狀態(tài),關(guān)閉和重啟防火墻
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
若希望永久生效 systemctl [enable/disable] 服務(wù)名
firewall指令
打開(kāi)端口:firewall-cmd --permanent --add-port=端口號(hào)/協(xié)議
關(guān)閉端口:firewall-cmd --permanent --remove-port=端口號(hào)/協(xié)議
重新載入才能生效:firewall-cmd --reload
查詢(xún)端口是否開(kāi)放;firewall-cmd --query-port-端口/協(xié)議
動(dòng)態(tài)監(jiān)控進(jìn)程
top [選項(xiàng)]
-d 秒數(shù) # top命令每隔幾秒更新,默認(rèn)3秒
-i ? # 不顯示任何限制或僵死進(jìn)程
-p ? # 指定監(jiān)控進(jìn)程ID來(lái)僅監(jiān)控某個(gè)進(jìn)程狀態(tài)
交互操作:
P:以cpu使用率排序,默認(rèn)如此
M:以?xún)?nèi)存使用率排序
N:以PID排序
u:監(jiān)控用戶(hù)
k:終止進(jìn)程
q:退出top
監(jiān)控網(wǎng)絡(luò)狀況
netstat [選項(xiàng)]
-an 按一定順序排列輸出
-p 顯示哪個(gè)進(jìn)程在調(diào)用
12. rpm
rpm用于互聯(lián)網(wǎng)下載包的打包及安裝工具,類(lèi)似windows的setup.exe
rpm -qa | grep xxx # 查詢(xún)當(dāng)前系統(tǒng)是否安裝了xxx
rpm -q firefox # 查詢(xún)火狐是否安裝
rpm -qi xxx # 查詢(xún)xxx軟件包信息
rpm -ql xxx # 查詢(xún)安裝路徑
rpm -qf xxx # 查詢(xún)文件所屬的安裝包
rpm -e 軟件包 ? # 刪除 在-e后增加 --nodeps可強(qiáng)制刪除
安裝rpm包
rpm -ivh rpm包全路徑名稱(chēng)
-i 安裝
-v 提示
-h 進(jìn)度條
yum
是一個(gè)shell前端軟件包管理器,基于rpm包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并安裝,可以自動(dòng)處理依賴(lài)性關(guān)系,并且一次安裝所有依賴(lài)的軟件包。
yum list | grep 軟件列表 # 查詢(xún)yum服務(wù)器是否有需要安裝的軟件
yum install xxx 下載安裝 ? ?# 安裝指定的yum包
yum換源參考: ?
https://blog.csdn.net/qq_18297675/article/details/52705288
12. shell
shell是一個(gè)命令行解釋器,為用戶(hù)提供了一個(gè)向linux內(nèi)核發(fā)送請(qǐng)求以便運(yùn)行程序的界面系統(tǒng)級(jí)程序,用戶(hù)可以用shell啟動(dòng)、掛起、停止、編寫(xiě)一些程序。常用bash。
格式要求:1.以#!/bin/bash開(kāi)頭 2.要有可執(zhí)行權(quán)限。
變量
分為系統(tǒng)變量和用戶(hù)自定義變量
1.系統(tǒng)變量:如$HOME $PWD $SHELL $USER等
顯示當(dāng)前shell中所有變量:set
2.shell變量定義
? ?基本語(yǔ)法:變量名=值
? ?撤銷(xiāo)變量:unset 變量
? ?聲明靜態(tài)變量:readonly變量(不能被unset)
3.變量命名規(guī)則
(1)變量名可由字母、數(shù)字、下劃線(xiàn)組成,不能以數(shù)字開(kāi)頭
(2)等號(hào)兩側(cè)不能有空格
(3)變量名稱(chēng)一般習(xí)慣為大寫(xiě)
4.將命令的返回值賦給變量
(1)A=`date` # 運(yùn)行反引號(hào)種的命令,并把返回值給A
(2)A=$(date) # 同上
5.設(shè)置環(huán)境變量
(1)export 變量名=變量值 # 將shell變量輸出為環(huán)境/全局變量
(2)source 配置文件 ?# 修改后的配置信息立即生效
(3)echo $變量名 ? # 查詢(xún)環(huán)境變量的值
6.多行注釋
:<<!
內(nèi)容
!
7.預(yù)定義變量
(1)$$ # 當(dāng)前進(jìn)程的進(jìn)程號(hào)(PID)
(2)$! # 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程號(hào)(PID)
(3)$? # 最后一次執(zhí)行命令的返回狀態(tài)。為0則正確執(zhí)行,非0則不正確
位置參數(shù)
向shell腳本種傳遞參數(shù)的占位符
$n # $0代表本身 $1-9代表第1到9個(gè)參數(shù) 10以上參數(shù)用${10}
$* # 代表命令行種所有參數(shù),$*把所有參數(shù)看為一個(gè)整體
$@ # 命令行中所有參數(shù),把每個(gè)參數(shù)區(qū)分對(duì)待
$# # 命令行中所有參數(shù)個(gè)數(shù)
運(yùn)算符
1."$((運(yùn)算式))" 或 "$[運(yùn)算式]" 或 expr 運(yùn)算式(使用"反引號(hào)將結(jié)果賦值給變量,運(yùn)算式之間要有空格)
2.expr \* / % 乘 除 取余
TEMP='expr 2 + 3' # 將2+3的值賦給TEMP
SUM=$[$1+$2] # 將兩個(gè)參數(shù)之和賦給給sum
條件判斷
1.[ condition ] #兩側(cè)有空格 非空返回true(true為0,>1為false)
2.常用判斷語(yǔ)句
1)= 字符串比較
2)兩個(gè)整數(shù)比較
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
3)文件權(quán)限判斷
-r 有讀的權(quán)限 -w 有寫(xiě)的權(quán)限 -x 有執(zhí)行的權(quán)限
4)文件類(lèi)型判斷
-f 文件存在且是一個(gè)常規(guī)文件
-e 文件存在
-d 文件存在且是一個(gè)目錄if基本語(yǔ)法:
if [ 條件判斷 ]
then
代碼1
elif [ 條件判斷 ]
then
代碼2
else
then
其他代碼
fi
流程控制
case語(yǔ)句基本語(yǔ)法:
case $變量名 in
"值1")
語(yǔ)句1
;;
"值2")
語(yǔ)句2
;;
*)
其他語(yǔ)句
;;
esacfor語(yǔ)句:
for 變量 in 值1 值2 值3...
do
代碼
done
for (( 初始值;循環(huán)控制條件;變量變化))
do
代碼
donewhile語(yǔ)法:
while [ 條件判斷 ] # 注意空格
do
代碼
done
其他函數(shù)
read讀取控制臺(tái)輸入
read (選項(xiàng)) (參數(shù))
選項(xiàng):
-p 指定讀取值時(shí)的提示符
-t 指定等待時(shí)間(秒)
read -t 10 -p "請(qǐng)輸入一個(gè)數(shù)NUM1" NUM1 # 讀取控制臺(tái)輸入一個(gè)NUM1值,在10秒內(nèi)輸入basename:返回完整路徑最后 / 的部分,常用于獲取文件名
basename [string] [suffix] # 刪掉所有前綴,包括最后一個(gè)/字符,然后顯示字符串
basename /home/test.txt .txt # 返回test
dirname:返回路徑最后 / 前面的部分
dirname 文件絕對(duì)路徑自定義函數(shù):
function funname()
{
action;
return int;
}
funname 值 # 調(diào)用函數(shù)
13. 日志
14. 備份

dump 支持分卷和增量備份(只有分區(qū)才支持增量備份)
dump [-cnu][-0123456789][-b <區(qū)塊大小>][-B <區(qū)塊數(shù)目>][-d <密度>][-f <設(shè)備名稱(chēng)>][-h <層級(jí)>][-s <磁帶長(zhǎng)度>][-T <日期>][目錄或文件系統(tǒng)] 或 dump [-wW]
-0123456789 備份的層級(jí)。
-b<區(qū)塊大小> 指定區(qū)塊的大小,單位為KB。
-B<區(qū)塊數(shù)目> 指定備份卷冊(cè)的區(qū)塊數(shù)目。
-c 修改備份磁帶預(yù)設(shè)的密度與容量。
-d<密度> 設(shè)置磁帶的密度。單位為BPI。
-f<設(shè)備名稱(chēng)> 指定備份設(shè)備。
-h<層級(jí)> 當(dāng)備份層級(jí)等于或大于指定的層級(jí)時(shí),將不備份用戶(hù)標(biāo)示為"nodump"的文件。
-n 當(dāng)備份工作需要管理員介入時(shí),向所有"operator"群組中的使用者發(fā)出通知。
-s<磁帶長(zhǎng)度> 備份磁帶的長(zhǎng)度,單位為英尺。
-T<日期> 指定開(kāi)始備份的時(shí)間與日期。
-u 備份完畢后,在/etc/dumpdates中記錄備份的文件系統(tǒng),層級(jí),日期與時(shí)間等。
-w 與-W類(lèi)似,但僅顯示需要備份的文件。
-W 顯示需要備份的文件及其最后一次備份的層級(jí),時(shí)間與日期。
如:
dump -0uj -f /opt/boot.bak0.bz2 /boot # 在/boot目錄下增加備份/opt/boot.bak0.bz2restore [模式選項(xiàng)] [選項(xiàng)]
-C 使用對(duì)比模式,將備份的文件與現(xiàn)行的文件相互對(duì)比。
-i 使用互動(dòng)模式,在進(jìn)行還原操作時(shí),restore指令將依序詢(xún)問(wèn)用戶(hù)。
-r 進(jìn)行還原操作。
-t 指定文件名稱(chēng),若該文件已存在備份文件中,則列出它們的名稱(chēng)。
-y 不詢(xún)問(wèn)任何問(wèn)題,一律以同意回答并繼續(xù)執(zhí)行指令。
如:
restore -C -f boot.bak0.bz2 # 與最新文件比較
如果有增量備份,需要把增量文件按順序依次恢復(fù)
restore -r -f /opt/bootbak0.bz2 # 恢復(fù)到第一次完全備份狀態(tài)
restore -r -f /opt/bootbak1.bz2 # 恢復(fù)到第二次增量備份狀態(tài)
15.Vim
