【仍需仔細(xì)斟酌】
SUID GUID SBIT
程序安裝rpm相關(guān)
掛載
BASH變量
日志輪替
#筆記說(shuō)明:該筆記在學(xué)習(xí)兄弟連Linux視頻時(shí)寫(xiě)下
分區(qū):
必須分區(qū):
/ 根分區(qū)
swap 交換分區(qū)(虛擬內(nèi)存,理論上內(nèi)存的兩倍,最大不能超過(guò)2GB)
推薦分區(qū):
/boot 啟動(dòng)分區(qū)(200MB足夠)
ifconfig命令
windows10使用SSH: 在可選功能中勾選OpenSSH,然后在CMD使用命令(例如) ssh root@192.168.1.2
(https://www.bilibili.com/read/cv1420735/)
/bin/ 一般的bin
/sbin/ super-bin 只有管理員能執(zhí)行的二進(jìn)制目錄
/usr/bin/
/usr/sbin/
/boot/ 系統(tǒng)啟動(dòng)文件
/dev/ 設(shè)備文件
/etc/ 默認(rèn)配置文件保存位置
/home/ 普通用戶(hù)的主目錄
/root/ 超級(jí)用戶(hù)的主目錄
/lib/ 系統(tǒng)函數(shù)庫(kù)
/loft+found/
fsck命令 磁盤(pán)檢查
系統(tǒng)自己為用戶(hù)準(zhǔn)備的掛載目錄(只有空目錄才能成為掛載目錄)
/media/ 光盤(pán)
/mnt/ (mount)移動(dòng)硬盤(pán)
/misc/ NFS共享目錄
/opt/ 第三方安裝的軟件保存位置(現(xiàn)在由/usr/local/取代)
不要寫(xiě)東西的目錄
/proc/ 虛擬文件系統(tǒng) process 保存各種硬件信息
/sys/ 保存內(nèi)核相關(guān)信息
/srv/ 服務(wù)數(shù)據(jù)目錄
/tmp/ 臨時(shí)文件存放目錄,開(kāi)機(jī)時(shí)清空
/usr/ Unix Software Resource 系統(tǒng)軟件資源目錄 (類(lèi)似于Windows目錄)
/var/ 動(dòng)態(tài)數(shù)據(jù)保存位置,主要保存緩存、日志。
服務(wù)器不能關(guān)機(jī),只能重啟
重啟服務(wù)器應(yīng)該關(guān)閉服務(wù)
不要在服務(wù)器訪問(wèn)高峰運(yùn)行高負(fù)載命令
配置防火墻別把自己踢了
ls -a
all
顯示所有文件
ls -l
long
顯示詳細(xì)信息
可以用ll表示
ls -lh
long human
人性化顯示
ls -d
只顯示目錄
文件計(jì)數(shù) 所有者 所屬組 文件大小 修改時(shí)間(Linux沒(méi)有創(chuàng)建時(shí)間的概念)
-rw-------. 1 root root 2735 Jan 2 19:46 anaconda-ks.cfg
-rw-------. 1 root root 143 Jan 3 20:27 .bash_history
-rw-r--r--. 1 root root 18 May 11 2019 .bash_logout
-rw-r--r--. 1 root root 176 May 11 2019 .bash_profile
ll不是命令,是ls -l的別名
關(guān)于 -rw-r--r-- :
第1位:
- 文件
d 目錄
l 軟鏈接
第2,3,4位:(u所有者的權(quán)限)
r讀
w寫(xiě)
x執(zhí)行
-無(wú)該權(quán)限
root用戶(hù)有rw權(quán)限
第5,6,7位:(g所屬組的權(quán)限)
所屬組有r權(quán)限
第8,9,10位:(o其他人的權(quán)限)
其他人有r權(quán)限
創(chuàng)建目錄
mkdir /tmp/newFolder
創(chuàng)建一個(gè)
mkdir -p /tmp/newFolder1/newFolder11
遞歸創(chuàng)建
cd 切換目錄
獲得完整目錄名稱(chēng):pwd
Print Working Directory
當(dāng)前目錄 .
上級(jí)目錄 ..
上級(jí)目錄的上級(jí)目錄 ...
rmdir 刪除空目錄
rm -rf 刪除所有文件和目錄 (remove file)
rm -r 只刪除其中目錄 (remove)
rm -f 強(qiáng)制執(zhí)行 (force)
cp /etc/grub.conf /tmp 復(fù)制文件
cp -r /tmp/folder1/folder2 /root 復(fù)制目錄
cp /a/b /a/c /d 將/a/b,/a/c的文件都復(fù)制到/d
cp -p /a/b /a/d 復(fù)制文件,保持文件屬性 p is for preserve
復(fù)制的同時(shí)可以改名
cp -r /a/b.file /a/d/c.file
mv 移動(dòng)文件
ctrl + l 或 clear 清空屏幕
touch 創(chuàng)建新文件
touch a.txt b.txt 創(chuàng)建兩個(gè)文件
創(chuàng)建帶空格的文件: touch "file with blank space"
cat 命令查看文件
cat -n 帶行號(hào)查看
tac 反向查看文件
more 命令分頁(yè)顯示文件 space或f鍵翻頁(yè),回車(chē)按行翻頁(yè),按q退出
less 與more差不多,但是less可以向上翻頁(yè),可以搜索(按/)
head -n 20 a.txt 顯示a.txt的前20行
tail -n 20 a.txt 顯示a.txt的后20行
tail -f -n 20 a.txt 實(shí)時(shí)動(dòng)態(tài)顯示文件末尾內(nèi)容
硬鏈接和軟鏈接
ln -s 軟鏈接 類(lèi)似快捷方式 文件類(lèi)型 l
ln 硬鏈接 可以同步更新的相同文件,互為鏡像,ID相同
硬鏈接不能跨分區(qū)(無(wú)效的跨設(shè)備連接)
硬鏈接不能指向目錄
軟鏈接可以指向目錄
軟鏈接可以跨分區(qū)
chmod 更改文件權(quán)限(change the permissions mode of a file)
u user 給所有者權(quán)限
g group 給所屬組權(quán)限
o others 給其他用戶(hù)權(quán)限
a all 給所有人權(quán)限
+ 增加權(quán)限 如 u+x 是給所有者增加x權(quán)限
- 減少權(quán)限
= 直接修改權(quán)限
權(quán)限的數(shù)字表示
r --- 4
w --- 2
x --- 1
7 : 全部權(quán)限
1 :只有x權(quán)限
2:只有w權(quán)限
4:只有r權(quán)限
6:rw權(quán)限
5:rx權(quán)限
3:wx權(quán)限
0:無(wú)權(quán)限
755:rwxr-xr-x
532:r-x-wx-w-
- R 遞歸權(quán)限修改:將目錄下所有文件的權(quán)限進(jìn)行修改
文件權(quán)限細(xì)節(jié)
r:可以查看內(nèi)容
w:可以修改內(nèi)容,在目錄中創(chuàng)建、刪除
x:可以執(zhí)行,可以進(jìn)入目錄
目錄權(quán)限細(xì)節(jié)
r:可以查看目錄中文件內(nèi)容(ls)
w:可以在目錄中寫(xiě)入、刪除文件(touch/mkdir/rmdir/rm)
x:可以進(jìn)入目錄(cd)
*有r權(quán)限一定有x權(quán)限
可以更改文件權(quán)限的用戶(hù):所有者、ROOT
chown 更改文件所有者(只有管理員可以操作)
eg. chown root /tmp/file.txt
chgrp 更改文件所屬組
eg.
group add testGroup
chgrp testGroup file.txt
權(quán)限的默認(rèn)生成:
文件創(chuàng)建者 即 文件所有者
文件所屬組 即 文件所有者的缺省組
umask -S 以rwx顯示新建文件的缺省權(quán)限
缺省創(chuàng)建的文件不具有可執(zhí)行權(quán)限
文件 rw-r--r--
目錄 rwxr-xr-x
umask 邏輯異或權(quán)限
0022 0特殊權(quán)限
0所有者權(quán)限
2所屬組權(quán)限
2其他人權(quán)限
777 rwx rwx rwx
022 --- -w- -w-
邏輯運(yùn)算 rwx r-x r-x (目錄)
7 5 5
777 rwx rwx rwx
搜索命令
find 文件目錄 -name 文件名
不加通配符 搜索嚴(yán)格,只有嚴(yán)格符合文件名的才會(huì)被搜索出來(lái)
加通配符* 不嚴(yán)格搜索
*文件名 以文件名結(jié)束
文件名* 以文件名開(kāi)頭
文件名? 符號(hào)?表示單個(gè)字符
find 文件目錄 -iname 文件名
忽略大小寫(xiě)進(jìn)行搜索
find 文件目錄 -size 文件大小
文件大小以數(shù)據(jù)塊為單位
1KB = 2個(gè)數(shù)據(jù)塊
100MB = 102400KB = 204800個(gè)數(shù)據(jù)塊
+文件大小 比文件大小大的文件
-文件大小 比指定文件大小小的文件
find 文件目錄 -user 文件所有者
find 文件目錄 -user 文件所屬組
find 文件目錄 -cmin 文件修改時(shí)間(分鐘)
+大于設(shè)定時(shí)間 eg. find /etc -cmin +5
-小于設(shè)定時(shí)間 eg. find /etc -cmin -5
查找輸入時(shí)間內(nèi)被修改過(guò)屬性的文件和目錄
find 文件目錄 -amin 文件訪問(wèn)時(shí)間(分鐘)
find 文件目錄 -mmin 文件內(nèi)容修改時(shí)間(分鐘)
eg.
find /etc -size +16380 -a -size -20480
a表示and,邏輯與,文件大小同時(shí)滿(mǎn)足
若寫(xiě)o表示任意一項(xiàng)滿(mǎn)足即可
find /etc -type d
d 目錄
f 文件
l 軟鏈接
find /etc -name inittab -exec ls -l {} \;
-exec/-ok命令{} \; 對(duì)搜索結(jié)果執(zhí)行操作
find /etc -name inita -ok rm {} \;
找到結(jié)果執(zhí)行刪除操作,刪除前會(huì)確認(rèn)
ls -i
根據(jù)i節(jié)點(diǎn)列出文件
find /etc -inum 123456
根據(jù)i節(jié)點(diǎn)查找
locate inittab
在文件資料庫(kù)中搜索inittab
locate -i init
不區(qū)分大小寫(xiě)搜索init
updatedb
更新文件資料庫(kù)
which ls
搜索命令所在目錄及別名信息
whereis ls
搜索命令所在目錄及幫助文檔所在路徑
grep multiuser /etc/inittab
在文件中搜尋字符串匹配的行
grep -v # /etc/init/whoopsie.conf
含#的行都刪掉
grep -v ^# /etc/init/whoopsie.conf
以#開(kāi)頭的行都刪掉
man
英文原意 manual
查看幫助信息
-1 命令的幫助
-5 配置文件的幫助
apropos services
查看配置文件信息
///用戶(hù)管理命令///
useradd
【網(wǎng)絡(luò)相關(guān)】
write 用戶(hù)名
給在線(xiàn)用戶(hù)放信息 以Ctrl+D結(jié)束
如何查看用戶(hù)列表
查看/etc/passwd文件即可
groupdel 刪除用戶(hù)組
userdel 刪除用戶(hù)
id 顯示用戶(hù)信息
wall
給所有用戶(hù)發(fā)信息
wall Hello Everyone
ping ip地址
ping -c
指定ping的次數(shù)
ping -c 3 192.168.1.1
mail 用戶(hù)名
給指定用戶(hù)發(fā)郵件
last
顯示近期登錄用戶(hù)的日志
lastlog
顯示所有用戶(hù)的登錄日志
lastlog -u 用戶(hù)的uid
traceroute
顯示數(shù)據(jù)包到主機(jī)間的路徑
netstat
顯示網(wǎng)絡(luò)相關(guān)信息
-t
TCP
-u
UDP
-l
監(jiān)聽(tīng)
-r
路由
-n
顯示IP地址和端口號(hào)
-tlun
顯示計(jì)算機(jī)下開(kāi)了哪些端口
-rn
查看路由列表和網(wǎng)關(guān)
-an
顯示所有網(wǎng)絡(luò)連接
service network restart
重啟網(wǎng)絡(luò)服務(wù)
mount [-t 文件系統(tǒng)] 文件設(shè)備名 掛載點(diǎn)
掛載
eg
mount -t iso9960 /dev/sr0 /mnt/cdrom
mount -t vfat /dev/sdb1 /mnt/usb/
umount
卸載【!不是unmount】
Linux下七種文件類(lèi)型
文件類(lèi)型標(biāo)識(shí) 文件類(lèi)型
- 普通文件
d 目錄
l 符號(hào)鏈接
s(偽文件) 套接字
b(偽文件) 塊設(shè)備
c(偽文件) 字符設(shè)備
p(偽文件) 管道
占用存儲(chǔ)空間的類(lèi)型:文件、目錄、符號(hào)鏈接。符號(hào)鏈接記錄的是路徑,路徑不長(zhǎng)時(shí)存在innode里面。
其他四種:套接字、塊設(shè)備、字符設(shè)備、管道是偽文件,不占用磁盤(pán)空間。
shutdown -h now
現(xiàn)在關(guān)機(jī)
h = halt
shutdown -h 20:00
晚上8點(diǎn)關(guān)機(jī)
shutdown -r now
重啟
shutdown -c
取消前一個(gè)關(guān)機(jī)命令
shutdown命令可以正確保存數(shù)據(jù)進(jìn)行關(guān)機(jī)和重啟
halt
關(guān)機(jī)
poweroff
關(guān)機(jī)
init 0
關(guān)機(jī)
reboot
重啟
init 6
重啟
init _num
系統(tǒng)運(yùn)行級(jí)別
0 關(guān)機(jī)
1 單用戶(hù)命令行
2 不完全多用戶(hù),不含NFS服務(wù) 命令行
NFS Network File System
實(shí)現(xiàn)Linux之間的文件共享
有一定的安全隱患
3 完全多用戶(hù)命令行
4 未分配
5 圖形界面
6 重啟
修改系統(tǒng)默認(rèn)運(yùn)行級(jí)別
cat /etc/inittab
id:3:initdefault
runlevel
查詢(xún)系統(tǒng)運(yùn)行級(jí)別
默認(rèn) 當(dāng)前
logout
退出登錄init
【重要】一定要及時(shí)logout
《VIM編輯器》
插入命令(按Esc后執(zhí)行)
a 在光標(biāo)所在字符前插入
A 行尾
i 在光標(biāo)所在字符后插入
I 行首
o 光標(biāo)下插入新行
O 光標(biāo)上插入新行
命令模式
編輯模式
插入模式
:set nu 設(shè)置行號(hào)
:set nonu 取消行號(hào)
gg 到第一行
G 到最后一行
$ 移到行尾
0 移到行首
nG 移到第n行
:n 到第n行
V(大寫(xiě)) 選中
> 向右縮進(jìn)
x 刪除字符
nx 刪除光標(biāo)所在處后n個(gè)字符
dd 刪除光標(biāo)所在行
ndd 刪除光標(biāo)在內(nèi)行的n行
dG 刪除光標(biāo)所在行直到文件末尾
D 刪除光標(biāo)所在行到行尾
:n1,n2d 刪除指定范圍的行
yy 復(fù)制當(dāng)前行
nyy 復(fù)制當(dāng)前行以下n行
dd 剪切當(dāng)前行
ndd 剪切當(dāng)前行以下n行
p 粘貼光標(biāo)所在行行下
P 行上
u 撤銷(xiāo),取消上一步操作
R 從光標(biāo)所在處替換字符,按Esc結(jié)束
/string 搜索指定字符串(默認(rèn)區(qū)分大小寫(xiě))
:sec ic 開(kāi)啟區(qū)分大小寫(xiě)
:sec noic 不區(qū)分大小寫(xiě)
n 搜索指定字符串的下一個(gè)出現(xiàn)位置
:%s/old/new/g 全文替換指定字符串
:n1,n2s/old/new/g 在一定范圍內(nèi)替換指定字符串
eg. :41,44s/txta/txtb/c
:w 保存修改
:w new_filename 另存為指定文件
:wq 保存修改并退出
ZZ 快捷鍵,保存修改并退出
:q! 不保存修改并退出
:wq! 保存修改并退出(文件所有者及root可使用)
:r 文件名
導(dǎo)入文件文本到光標(biāo)處
:r !date
導(dǎo)入日期到光標(biāo)處
:map 定義快捷鍵
eg.
map ^p I#<ESC>
map ^a 0x
:1,4s/^/#/g
將1到4行的行首加入#注釋
:1,4s/^#//g
將行首#替換為空
:1,4s/#//g
將所有#替換為空
轉(zhuǎn)義符
\/ 表示字符/
ab a b
命令執(zhí)行后,每當(dāng)你在文本中輸入a并且按回車(chē),就會(huì)轉(zhuǎn)換成b
?》./.,
/root/.rimrc
編輯該配置文件可以使得vim的配置永久生效
《SSH & SSL & Telnet》
SSH 的英文全稱(chēng)是Secure SHell。通過(guò)使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣“中間人”這種攻擊方式就不可能實(shí)現(xiàn)了,而且也能夠防止DNS和IP欺騙。還有一個(gè)額 外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一 個(gè)安全的“通道”。SSH是由客戶(hù)端和服務(wù)端的軟件組成的,有兩個(gè)不兼容的版本分別是:1.x和2.x。
最初的SSH協(xié)議是由芬蘭的一家公司的研究員Tatu Yl?nen于1995年設(shè)計(jì)開(kāi)發(fā)的,但是因?yàn)槭馨鏅?quán)和加密算法等等的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件包,而且是開(kāi)放源代碼且自由的。
在客戶(hù)端來(lái)看,SSH提供兩種級(jí)別的安全驗(yàn)證。
第一種級(jí)別(基于密碼的安全驗(yàn)證),知道帳號(hào)和密碼,就可以登錄到遠(yuǎn)程主機(jī),并且所有傳輸?shù)臄?shù)據(jù)都會(huì)被加密。但是,可能會(huì)有別的伺服器在冒充真正的伺服器,無(wú)法避免被「中間人」攻擊。
第二種級(jí)別(基于密鑰的安全驗(yàn)證),需要依靠密鑰,也就是你必須為自己創(chuàng)建一對(duì)密鑰,并把公有密鑰放在需要訪問(wèn)的伺服器上。客戶(hù)端軟件會(huì)向伺服器發(fā)出請(qǐng)求,請(qǐng)求用你的密鑰進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在你在該伺服器的用戶(hù)根目錄下尋找你的公有密鑰,然后把它和你發(fā)送過(guò)來(lái)的公有密鑰進(jìn)行比較。如果兩個(gè)密鑰一致,伺服器就用公有密鑰加密「質(zhì)詢(xún)」(challenge)并把它發(fā)送給客戶(hù)端軟件。從而避免被「中間人」攻擊。
SSL TLS SSL在服務(wù)器和客戶(hù)機(jī)兩端可同時(shí)被支持,目前已成為互聯(lián)網(wǎng)上保密通訊的工業(yè)標(biāo)準(zhǔn)?,F(xiàn)行的Web瀏覽器亦普遍將HTTP和SSL相結(jié)合,從而實(shí)現(xiàn)安全通信。
SSL協(xié)議的優(yōu)勢(shì)在于它是與應(yīng)用層協(xié)議獨(dú)立無(wú)關(guān)的。高層的應(yīng)用層協(xié)議(例如:HTTP、FTP、Telnet等等)能透明的建立于SSL協(xié)議之上。
TLS 是SSL 的高級(jí)版本。 IETF將其進(jìn)行了標(biāo)準(zhǔn)化,并改名為T(mén)LS。
Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登錄服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。它為用戶(hù)提供了在本地計(jì)算機(jī)上完成遠(yuǎn)程主機(jī)工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到服務(wù)器。終端使用者可以在telnet程序中輸入命令,這些命令會(huì)在服務(wù)器上運(yùn)行,就像直接在服務(wù)器的控制臺(tái)上輸入一樣。可以在本地就能控制服務(wù)器。要開(kāi)始一個(gè)telnet會(huì)話(huà),必須輸入用戶(hù)名和密碼來(lái)登錄服務(wù)器。Telnet是常用的遠(yuǎn)程控制Web服務(wù)器的方法。
ddsaDwz4 Aa142
雖然Telnet較為簡(jiǎn)單實(shí)用也很方便,但是在格外注重安全的現(xiàn)代網(wǎng)絡(luò)技術(shù)中,Telnet并不被重用。原因在于Telnet是一個(gè)明文傳送協(xié)議,它將用戶(hù)的所有 內(nèi)容,包括用戶(hù)名和密碼都明文在互聯(lián)網(wǎng)上傳送,具有一定的安全隱患,因此許多服務(wù)器都會(huì)選擇禁用Telnet服務(wù)。如果我們要使用Telnet的遠(yuǎn)程登錄,使用前應(yīng)在遠(yuǎn)端服務(wù)器上檢查并設(shè)置允許Telnet服務(wù)的功能。
RPM包
二進(jìn)制包,安裝速度塊
eg
httpd-2.2.15-15.e16.centos.1.i686.rpm
httpd 軟件包名
2.2.15 軟件版本
15 軟件發(fā)布的次數(shù)
i686 適合的硬件平臺(tái)
e16.centos 適合的Linux平臺(tái)
noarch 表示任何平臺(tái)都可以安裝
rpm rpm包擴(kuò)展名
rpm包的依賴(lài)性較強(qiáng)
lsusb
查看U盤(pán)是否被讀取
sudo fdisk -l
查看U盤(pán)位置
df -h
same as above
RPM包默認(rèn)安裝路徑
/etc/
配置文件安裝目錄
eg.
/etc/rc.d/init.d/httpd start
service httpd start 啟動(dòng)apache //紅帽專(zhuān)有命令
/usr/bin
可執(zhí)行命令安裝目錄
/usr/lib
函數(shù)庫(kù)保存位置
/usr/share/doc/
軟件使用手冊(cè)位置
/usr/share/man
幫助文件保存位置
源碼包安裝位置
/usr/local/軟件名
ubuntu 啟動(dòng)服務(wù)
systemctl is-enabled servicename.service #查詢(xún)服務(wù)是否開(kāi)機(jī)啟動(dòng)
systemctl enable *.service #開(kāi)機(jī)運(yùn)行服務(wù)
systemctl disable *.service #取消開(kāi)機(jī)運(yùn)行
systemctl start *.service #啟動(dòng)服務(wù)
systemctl stop *.service #停止服務(wù)
systemctl restart *.service #重啟服務(wù)
systemctl reload *.service #重新加載服務(wù)配置文件
systemctl status *.service #查詢(xún)服務(wù)運(yùn)行狀態(tài)
所有服務(wù)管理命令只能服務(wù)于rpm安裝的應(yīng)用
源碼包只能用絕對(duì)路徑進(jìn)行服務(wù)的管理
eg
/usr/local/apache2/bin/apachectl start
【安裝源碼包】
源代碼安裝位置
/usr/local/src/
軟件安裝位置
/usr/local
【關(guān)于Linux安裝rpm、安裝源碼包的視頻】
https://www.bilibili.com/video/BV1mW411i7Qf?p=36&spm_id_from=pageDriver
useradd 命令格式
useradd [選項(xiàng)] 用戶(hù)名
-u UID 指定UID號(hào)
-d 家目錄
-c 用戶(hù)說(shuō)明
-g 組名 初始組
-G 組名 附加組
-s shell 手工指定用戶(hù)的登錄shell,默認(rèn)是/bin/bash
舉例
useradd -u 666 -G root,bin -c "TestUser" -d /liming liming
輸入時(shí)反斜杠\表示換行
usermod
-u UID 指定UID號(hào)
-c 用戶(hù)說(shuō)明
-g 組名 初始組
-G 組名 附加組
-s shell 手工指定用戶(hù)的登錄shell,默認(rèn)是/bin/bash
-L 鎖定用戶(hù)
-U 解鎖用戶(hù)
* usermod -G root lamp
將lamp用戶(hù)加入root組
用戶(hù)默認(rèn)值文件
/etc/default/useradd
密碼配置文件
/etc/login.defs
passwd
直接使用可以給當(dāng)前用戶(hù)設(shè)置密碼
whoami
查看當(dāng)前用戶(hù)
passwd -S 用戶(hù)名
查看當(dāng)前用戶(hù)密碼狀態(tài)
-l 鎖定用戶(hù)
-u 解鎖用戶(hù)
--stdin 接收字符串為密碼,密碼是不安全的明文
使用字符串作為用戶(hù)密碼
echo "123" | passwd --stdin lamp
Ubuntu不能使用passwd的–stdin的解決辦法
可以使用chpasswd
看一下man chpasswd
所以可以echo username:newoasswd | chpasswd
username是用戶(hù)名,newpasswd是新密碼。值得注意的是echo后面不要忘了加引號(hào)把用戶(hù)名和新密碼引起來(lái)
最后說(shuō)一個(gè)事情,目前發(fā)現(xiàn)Ubuntu的16.1系統(tǒng)沒(méi)有–stdin和/etc/rc.local,所以建議大家初學(xué)Linux不要用Ubuntu。
chage
注意不是change
用來(lái)更改用戶(hù)密碼狀態(tài)
-l 列出詳細(xì)的密碼狀態(tài)
-d 更改密碼最后一次修改日期
-m 兩次密碼修改間隔天數(shù)
-M 密碼有效期天數(shù)
-W 過(guò)期前警告天數(shù)
-l 密碼過(guò)期后寬限天數(shù)
-E 賬號(hào)失效時(shí)間
chage -d 0 user1
要求用戶(hù)一登錄就修改密碼
userdel -r user1
刪除user1用戶(hù)并且抄家
id user1
查看user1的關(guān)于ID的相關(guān)信息
su root
切換到root用戶(hù),不切換環(huán)境變量
su - root
真正切換到root
su - root -c "useradd user2"
暫時(shí)切換為root執(zhí)行字符串內(nèi)命令
env
查看環(huán)境變量
groupadd [選項(xiàng)] 組名
-g GID 指定組ID
-n 新組名 修改組名
eg
groupmod -n testgrp group1
將group1的組名修改為testgrp
groupmod
groupdel 組名
刪除組
刪除組不能刪除已存在的用戶(hù)的初始組,可以刪除附加組
gpsswd 選項(xiàng) 組名
-a 用戶(hù)名 把用戶(hù)加入組
-d 用戶(hù)名 把用戶(hù)從組中刪除
ACL
df -h
dumpe2fs -h /dev/sda1
臨時(shí)開(kāi)啟分區(qū)ACL權(quán)限
mount -o remunt,acl /
重新掛載根分區(qū),并掛載加入acl權(quán)限
永久開(kāi)啟分區(qū)ACL權(quán)限
vi /etc/fstab
UUID=79fdfff1-c995-45cc-b113-576ca9d13a19 / ext4 defaults,acl 0 1
加入ACL
mount -o -remount /
重新掛載文件系統(tǒng)或重啟系統(tǒng),使得修改生效
getfacle 文件名
查看acl權(quán)限
setfacl 選項(xiàng) 文件名
-m 設(shè)定acl權(quán)限
-x 指定刪除acl權(quán)限
eg
setfacl -x g:b_group project
-b 刪除所有的acl權(quán)限
-d 設(shè)定默認(rèn)acl權(quán)限
如果給父目錄設(shè)定了默認(rèn)ACL權(quán)限,則父目錄中所有新建的子文件都會(huì)繼承父目錄的ACL權(quán)限,不會(huì)影響舊文件的ACL權(quán)限
setfacl -m d:u:用戶(hù)名:權(quán)限 文件名
-k 刪除默認(rèn)acl權(quán)限
-R 遞歸設(shè)定acl權(quán)限
eg
setfacl -m u:_user_:rwx _folder_
setfacl -m g:a_group:rwx project
mask權(quán)限:最大有效權(quán)限
setfacl -m m:rx 文件名
刪除acl權(quán)限
setfacl -b 文件名
遞歸ACL權(quán)限(加上-R字段)
setfacl -m u:student1:rx -R project
由ACL權(quán)限的會(huì)多一個(gè)+記號(hào)
eg
drwxrwx---+ 2 root a_group 4096 Jan 28 14:43 project/
文件特殊權(quán)限SetUID(SUID)
只有可執(zhí)行的二進(jìn)制程序才能設(shè)定SUID權(quán)限
命令執(zhí)行者要對(duì)該程序擁有x權(quán)限
命令執(zhí)行者在執(zhí)行程序時(shí)獲得該程序文件的屬主身份(在執(zhí)行程序的過(guò)程中靈魂附體為文件的屬主)
SetUID權(quán)限只在該程序執(zhí)行過(guò)程中有效,也就是說(shuō)身份改變只在程序執(zhí)行過(guò)程中有效。
增加SUID權(quán)限
chmod 4755 文件名
chmod u+s 文件名
取消SUID權(quán)限
chmod 755 文件名
chmod u-s 文件名
SGID
針對(duì)文件:
只有可執(zhí)行的二進(jìn)制程序才能設(shè)置SGID權(quán)限
命令執(zhí)行者要對(duì)該程序擁有x(執(zhí)行)權(quán)限
命令執(zhí)行在執(zhí)行程序的適合,組身份升級(jí)為程序文件的所屬組
SGID權(quán)限同樣只在該程序執(zhí)行過(guò)程中有效,組身份改變只在執(zhí)行過(guò)程中有效
針對(duì)目錄:(意義不大)
普通用戶(hù)必須對(duì)此目錄擁有r和x權(quán)限,才能進(jìn)入此目錄
普通用戶(hù)在此目錄中的有效組會(huì)變成此目錄的屬組
若普通用戶(hù)對(duì)此目錄擁有w權(quán)限時(shí),新建的文件的默認(rèn)屬組是這個(gè)目錄的屬組
增加SGID權(quán)限
chmod 2755 文件名
chmod g+s 文件名
取消SGID權(quán)限
chmod 755 文件名
chmod g-s 文件名
StickyBIT 賦予只能是ROOT!
SBIT 粘著位權(quán)限
只對(duì)目錄有效
普通用戶(hù)對(duì)該目錄擁有w權(quán)限和x權(quán)限,即普通用戶(hù)可以在此目錄擁有寫(xiě)入權(quán)限
如果沒(méi)有粘著位,因?yàn)槠胀ㄓ脩?hù)由w權(quán)限,所以可以刪除此目錄下的所有文件。
一旦賦予了粘著位,除了root可以刪除所有文件,【普通用戶(hù)】就算擁有w權(quán)限,也只能是刪除自己建立的文件,而不能刪除其他用戶(hù)建立的文件
典型粘著位文件夾:/tmp
設(shè)置方法
chmod 1755
chmod o+t
取消方法
chmod 755
chmod o-t
chattr 文件系統(tǒng)屬性權(quán)限
chattr [+-=] [選項(xiàng)] 文件或目錄名
+ 增加權(quán)限
- 刪除權(quán)限
= 等于某權(quán)限
i選項(xiàng)
針對(duì)文件:不允許對(duì)文件進(jìn)行刪除、改名,也不能增加和修改數(shù)據(jù)。即除了讀文件,對(duì)文件完全保護(hù),對(duì)root也生效
針對(duì)目錄:只能修改目錄下的數(shù)據(jù),不允許建立和刪除文件
a選項(xiàng):
針對(duì)文件:如果對(duì)文件設(shè)置a屬性,則只能在文件中增加數(shù)據(jù),不能刪除也不能修改
針對(duì)目錄:只能在目錄中建立和修改文件,但是不允許刪除(自己只要建了就不能刪)
不能用編輯器修改文件,但是可以向文件中追加數(shù)據(jù)
lsattr 選項(xiàng) 文件名
查看文件系統(tǒng)屬性,包括隱藏的
-a 顯示所有文件和目錄
-d 若目標(biāo)是目錄,僅列出目錄本身的屬性,而不是子文件的
echo 111 >> file_t
直接向file_t寫(xiě)入111
sudo權(quán)限
把超級(jí)用戶(hù)能執(zhí)行的指令賦予普通用戶(hù)
sudo的操作對(duì)象是系統(tǒng)命令
-l 查看能夠運(yùn)行的指令
#visudo
為普通用戶(hù)賦予權(quán)限
其實(shí)修改的是/etc/sudoers文件
root ALL=(ALL) ALL
用戶(hù)名 被管理的主機(jī)地址_即本網(wǎng)絡(luò)任何地址=(可使用的身份) 授權(quán)命令(絕對(duì)路徑)
eg
授權(quán)sc用戶(hù)重啟服務(wù)器
sc ALL=/sbin/shutdown -r now
sc 192.168.10.123=/sbin/shutdown -r now
192.168.10.123 是被管理的計(jì)算機(jī)的IP
sudo /usr/bin/vim
普通用戶(hù)直接使用sudo vim不可以使用命令,要使用sudo /usr/bin/vim
主分區(qū):總共最多只能分四個(gè)
擴(kuò)展分區(qū):只能有一個(gè),也算主分區(qū)一種,主分區(qū)加擴(kuò)展分區(qū)最多有四個(gè)。
擴(kuò)展分區(qū)不能存儲(chǔ)數(shù)據(jù)和格式化,必須再劃分成邏輯分區(qū)才能使用
邏輯分區(qū):邏輯分區(qū)在擴(kuò)展分區(qū)中劃分,如果是IDE硬盤(pán),Linux最多支持59個(gè)邏輯分區(qū),SCSI最多支持11個(gè)
主分區(qū)或擴(kuò)展分區(qū) sda1 sda2 sda3 sda4
邏輯分區(qū) sda5 sda6 ...
ext2
ext文件系統(tǒng)的升級(jí)版本,最大支持16TB分區(qū)和最大2TB文件
ext3
相比于ext2追加了日志功能,提高了系統(tǒng)可靠性
ext4
最大支持1EB(=1024PB=1024^2TB)分區(qū),和16TB文件,相比與ext3有極大的提高
<文件系統(tǒng)常用命令>
df
顯示所有文件系統(tǒng)信息
-h 使用習(xí)慣單位表示容量
-a 顯示包括特殊文件系統(tǒng)的所有信息
從文件系統(tǒng)考慮,不僅考慮文件占用的空間,還考慮被命令和程序占用的空間
統(tǒng)計(jì)文件大小+系統(tǒng)和進(jìn)程占用的資源(包括臨時(shí)文件)
du
統(tǒng)計(jì)目錄及子目錄占用空間
-a 顯示每個(gè)子文件
統(tǒng)計(jì)所有文件大小
fsck
文件系統(tǒng)修復(fù)命令(開(kāi)機(jī)會(huì)自動(dòng)執(zhí)行)
-a 不用顯示用戶(hù)提示,自動(dòng)修復(fù)
-y 自動(dòng)修復(fù)
fdisk -l
dumpe2fs
檢測(cè)磁盤(pán)狀態(tài)
mount -l
查看系統(tǒng)中已掛載設(shè)備 -l顯示卷標(biāo)名稱(chēng)
mount -a
根據(jù)配置文件/etc/fstab的內(nèi)容自動(dòng)掛載
光盤(pán)移動(dòng)硬盤(pán)等不可以自動(dòng)掛載
mount -o remount,noexec /home
重新掛載/boot分區(qū)并使用noexec權(quán)限
【掛載光盤(pán)步驟】
#mkdir /mnt/cdrom
#mount -t iso9660 /dev/cdrom /mnt/cdrom
#mount /dev/dr0 /mnt/cdrom
由于cdrom實(shí)際上時(shí)sr0的軟連接,所以需進(jìn)一步掛載
umount /dev/sr0
【掛載U盤(pán)】
#fdisk -l
查看U盤(pán)設(shè)備文件名
#mount -t vfat /dev/sdb1 /mnt/usb/
Linux默認(rèn)不識(shí)別NTFS
【使用NTFS分區(qū)】
1 下載并安裝ntfs-3g插件
2 安裝NTFS-3G
#tar -zxvf nfts-3g_ntfsprogs-2013.1.13.tgz
#cd ntfs-3g_nftsprogs-2013.1.13
#./configure
編譯器準(zhǔn)備。沒(méi)有指定安裝目錄,安裝到默認(rèn)位置中
#make
編譯
#make install
編譯安裝
3 #mount -t ntfs-3g 分區(qū)設(shè)備文件名 掛載點(diǎn)
【Shell】
C Shell BSD版Unix中使用,語(yǔ)法和C類(lèi)似(csh,tcsh)
Bourne Shell sh,ksh,Bash,psh,zsh,Linux主要用Bash
Bash與sh兼容
Linux支持的Shell
/etc/shells
echo
輸出命令
echo 'Hello World!'
感嘆號(hào)字符需用單引號(hào)包圍,否則出現(xiàn)錯(cuò)誤
-e
輸出并處理特殊字符
\a 發(fā)出警告音
\\ 輸出\
\b 退格
\e 輸出顏色
\e[13;31m 輸出的字符 \e[0m
31m:紅色
30m:黑色
37m:白色
33m:黃色
-n
不換行輸出
#!/bin/Bash
Bash腳本必要標(biāo)識(shí)
dos2unix hello.sh
將hello.sh從dos格式轉(zhuǎn)換到unix格式
腳本執(zhí)行方式
./hello.sh
#history
查看歷史命令
歷史命令默認(rèn)保存1000條,通過(guò)/etc/profile進(jìn)行修改條目,重新登錄以生效
-c 清空歷史命令
-w 把緩存中的歷史命令寫(xiě)入歷史命令保存文件~.bash_history
#!歷史命令序號(hào)
!203
執(zhí)行歷史記錄中203條命令
#!!
執(zhí)行上一條命令
#!ser
執(zhí)行最后一條ser開(kāi)頭的命令
#alias
為命令取別名
eg
alias vi='vim'
讓別名永久生效
vi /root/.bashrc
vi /home/user1/.bashrc
命令執(zhí)行時(shí)的順序
第一順位執(zhí)行用絕對(duì)路徑或相對(duì)路徑執(zhí)行的命令
第二順位執(zhí)行別名
第三順位執(zhí)行Bash的內(nèi)部命令
第四順位執(zhí)行按照$PATH環(huán)境變量定義的目錄查找命令
echo $PATH
快捷鍵
Ctrl+
C 強(qiáng)制終止當(dāng)前程序
L 清屏
U 刪除或剪切光標(biāo)之前的命令
K 刪除或剪切光標(biāo)之后的命令
Y 粘貼剪切的內(nèi)容
R 在歷史命令中搜索
D 退出終端
輸入輸出重定向
設(shè)備
鍵盤(pán)
/dev/stdin
文件描述符 0
標(biāo)準(zhǔn)輸入設(shè)備
顯示器
/dev/stdout
文件描述符 1
標(biāo)準(zhǔn)輸出設(shè)備
顯示器
/dev/stderr
文件描述符 2
標(biāo)準(zhǔn)錯(cuò)誤輸出
輸出重定向
標(biāo)準(zhǔn)輸出重定向
命令>文件 以覆蓋方式把命令正確輸出到指定的文件或者設(shè)備當(dāng)中
命令>>文件 以追加的方式把命令正確輸出到指定的文件或者設(shè)備當(dāng)中
eg
ls >> abc
標(biāo)準(zhǔn)錯(cuò)誤輸出重定向
錯(cuò)誤命令2>文件 以覆蓋方式把命令正確輸出到指定的文件或者設(shè)備當(dāng)中
錯(cuò)誤命令2>>文件 以追加的方式把命令正確輸出到指定的文件或者設(shè)備當(dāng)中
2和>之間不能有空格
正確輸出和錯(cuò)誤輸出同時(shí)保存
命令 > 文件 2>&1 以覆蓋的方式,把正確輸出和錯(cuò)誤輸出都保存在同一文件中
命令 >> 文件 2>&1 追加的方式,把正確輸出和錯(cuò)誤輸出都保存在同一文件中
命令 &> 文件 以覆蓋的方式,把正確輸出和錯(cuò)誤輸出都保存在同一文件中
命令 &>> 文件 以追加的方式,把正確輸出和錯(cuò)誤輸出都保存在同一文件中
命令 >> 文件1 2>> 文件2
如果正確放入文件1
如果錯(cuò)誤放入文件2
eg
ls &>/dev/nul
輸入重定向
wc [選項(xiàng)] [文件名]
-c 統(tǒng)計(jì)字節(jié)數(shù)
-w 統(tǒng)計(jì)單詞數(shù)
-l 統(tǒng)計(jì)行數(shù)
eg
wc < file.txt
將文件輸入給wc進(jìn)行統(tǒng)計(jì)
多命令順序執(zhí)行
; 多個(gè)命令順序執(zhí)行,命令之間沒(méi)有任何邏輯關(guān)系
&& 邏輯與,當(dāng)命令1正確執(zhí)行,命令2則執(zhí)行,否則不執(zhí)行
|| 邏輯或,當(dāng)命令1不正確執(zhí)行,命令2則執(zhí)行,否則不執(zhí)行
eg
ls &> /dev/null && echo yes || echo no
./configure && make && make install
dd命令
dd if=輸入文件或設(shè)備 of=輸出文件或目標(biāo)設(shè)備 bs=字節(jié)數(shù) count=個(gè)數(shù)
eg
date ; dd if=/dev/zero of=/root/testFile bs=1k count=10000 ; date
管道符
命令1 | 命令2
命令1的正確輸出作為命令2的操作對(duì)象
eg
ls -lh -a /etc/ | more
netstat -an | grep 522
grep [選項(xiàng)] “搜索的內(nèi)容”
-i 忽略大小寫(xiě)
-n 輸出行號(hào)
eg
grep "root" /etc/passwd
通配符
?
匹配一個(gè)字符
*
匹配0個(gè)或任意多個(gè)字符
[]
匹配括號(hào)中任意一個(gè)字符[abc]表示可以匹配a或者b或者c
[-]
匹配括號(hào)中任意一個(gè)字符,-代表一個(gè)范圍[a-z]表示匹配任意一個(gè)小寫(xiě)字母
[^]
邏輯非,表示匹配的過(guò)濾掉括號(hào)中的字符,比如[^0-9]表示過(guò)濾掉數(shù)字
特殊符號(hào)
'' 單引號(hào)中的所有特殊符號(hào)都沒(méi)有特殊意義
"" 雙引號(hào)中的所有特殊符號(hào)都沒(méi)有特殊含義,但是$和·和\有特殊含義
$() 和反引號(hào)作用相同
# 注釋
`` 反引號(hào)括起來(lái)的是系統(tǒng)命令
\ 使得之后的特殊符號(hào)失去作用
eg
#name=sc
#echo $name
#echo '$name'
#echo "$name"
#echo ls3
#echo `ls`
#echo $(ls)
變量
變量名不可以以數(shù)字開(kāi)頭
Bash中默認(rèn)的類(lèi)型均為字符串型,如需進(jìn)行數(shù)值運(yùn)算,必須進(jìn)行指定
等號(hào)兩側(cè)不能加空格
變量的值如果有空格,請(qǐng)用引號(hào)
用戶(hù)自定義變量
環(huán)境變量
用戶(hù)自定義變量只在當(dāng)前的Shell中生效
環(huán)境變量在當(dāng)前Shell和這個(gè)Shell的所有子Shell當(dāng)中生效
如果把環(huán)境變量
位置參數(shù)變量
變量名不能自定義
變量作用固定
預(yù)定義變量
Bash中已經(jīng)定義好的變量
變量不能自定義
變量作用固定
some examples :
#aa=123
#echo $aa
#aa="$aa"456
#echo $aa
#aa=${aa}789
#echo $aa
set
查看所有變量
env
查詢(xún)變量
unset
刪除變量
設(shè)置環(huán)境變量
export 變量名=變量值
用戶(hù)自定義變量只在當(dāng)前的Shell中生效
環(huán)境變量會(huì)在當(dāng)前Shell和這個(gè)Shell的所有子Shell中生效
如果把環(huán)境變量寫(xiě)入相應(yīng)配置文件,則該環(huán)境變量就會(huì)在所有的Shell中生效
eg
#export age=18 聲明一環(huán)境變量
#sex=male 聲明一個(gè)本地變量
#export sex 將本地變量聲明為環(huán)境變量
PATH:系統(tǒng)查找命令的路徑
#echo $PATH
PATH變量的疊加:(臨時(shí)生效,重啟消失,如需永久生效請(qǐng)修改配置文件)
PATH = "$PATH":/root/sh
定義系統(tǒng)提示符的變量
\d
顯示日期
\h
顯示簡(jiǎn)寫(xiě)主機(jī)名
\t
顯示24小時(shí)時(shí)制時(shí)間
\$
顯示時(shí)間,并且顯示上午還是下午
echo $PS1
顯示系統(tǒng)提示符的定義方式
定義系統(tǒng)提示符
eg.
PS1='[\u@\t \w]\$'
$變量名
返回定義的變量
set
查看所有變量
位置參數(shù)變量
$n
n為數(shù)字$
$0代表命令本身,$1-$9代表第1-9個(gè)參數(shù),10個(gè)以上用${10}
$*
代表命令行所有參數(shù)
$@
這個(gè)變量也代表命令行中的所有參數(shù),不過(guò)$@把每個(gè)參數(shù)區(qū)分對(duì)待
$#
代表命令行中所有參數(shù)的個(gè)數(shù)
p.eg(program.example)
#!/bin/bash
for i in "$*"
do
echo $i
done
for y in "$@"
do
echo $y
done
簡(jiǎn)單加法計(jì)算器
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))
echo $sum
千萬(wàn)注意不能加空格
雙括號(hào)才能進(jìn)行標(biāo)準(zhǔn)運(yùn)算
預(yù)定義命令
$?
最后一次執(zhí)行的命令的返回狀態(tài)
如果返回0說(shuō)明正確執(zhí)行,否則不正確
$$
進(jìn)程號(hào)
$!
后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程號(hào)
接收鍵盤(pán)輸入
read
-p "message"
在等待read輸入時(shí),輸出提示信息
-t 秒數(shù)
read命令等待用戶(hù)輸入,可以指定等待時(shí)間
-n 字符數(shù)
read只接受指定的字符數(shù)才會(huì)執(zhí)行
-s
隱藏輸入的數(shù)據(jù),用于輸入機(jī)密信息
declare
聲明變量類(lèi)型
- 設(shè)定類(lèi)型
+ 取消類(lèi)型
-i 設(shè)定為整數(shù)
-x 設(shè)定為環(huán)境變量
-p 顯示指定變量的類(lèi)型
expr或let數(shù)值運(yùn)算工具
dd=$(expr $aa + $bb)
+號(hào)左右兩側(cè)必須有空格
$((運(yùn)算式))
$(系統(tǒng)命令)
$(($aa+$bb))
加號(hào)左右可以不加空格
eg
echo $((33+44))
p.eg
unset y
#刪除變量y,不管原先狀態(tài)
x = ${y-new}
#進(jìn)行測(cè)試
echo $x
#因?yàn)樽兞縴不存在,所以x=new,如果存在則為y
linux按了ctrl+s怎么辦
ctrl+q恢復(fù)
關(guān)于環(huán)境變量配置文件
/etc/profile
USER變量
LOGNAME變量
PATH變量……
umask
調(diào)用/etc/profile.d/*.sh文件
**對(duì)所有用戶(hù)生效
/etc/bashrc
PS1變量
umask
PATH變量
調(diào)用/etc/profile.d/*.sh文件
/etc/profile.d/lang.sh
當(dāng)前系統(tǒng)語(yǔ)言
調(diào)用/etc/sysc config/i18n
~/.bash
對(duì)登錄用戶(hù)生效
~/.bash_profile
對(duì)登錄用戶(hù)生效
~/.bashrc
對(duì)登錄用戶(hù)生效
定義系統(tǒng)別名
其他配置文件
~/.bash_logout
~/bash_history
/etc/issue
本地終端歡迎信息(只支持本地!)
轉(zhuǎn)義字符:
\n
顯示主機(jī)名
\l
顯示登錄的終端號(hào)
/etc/isssue.net
轉(zhuǎn)義字符在該文件中無(wú)法使用
/etc/ssh/sshd_config中配置是否生效(banner字段),然后通過(guò)service sshd restart來(lái)正式生效
/etc/motd
不管是本地還是遠(yuǎn)程登錄都可以顯示該歡迎信息
該歡迎信息是輸入完密碼后顯示的歡迎信息
source命令
強(qiáng)制讓當(dāng)前環(huán)境變量立即生效,而不是重啟后生效
#source 配置文件
#.配置文件
~/.bashrc
~表示家目錄,只對(duì)當(dāng)前用戶(hù)生效
【正則表達(dá)式】
可以使用正則表達(dá)式的命令
grep #在文件當(dāng)中提取符合的字符串
awk
sed
基礎(chǔ)正則表達(dá)式
*
前一個(gè)字符匹配0次或任意多次
eg
a*
.
匹配除了換行符外任意一個(gè)字符
^
行首,^hello 匹配以hello為首的任意行
hello$
匹配以hello結(jié)尾的任意行
[aoeiuv]
匹配aoeiuv中任意一個(gè)字符
[0-9]
匹配任意一個(gè)數(shù)字
[a-z][0-9]
匹配任意一個(gè)小寫(xiě)字母和任意一個(gè)數(shù)字的組合
[^0-9]
匹配任意一位非數(shù)字字符
[^a-z][^0-9]
非小寫(xiě)字母和一個(gè)非數(shù)字的組合
\
轉(zhuǎn)義字符,用于將特殊符號(hào)的含義取消
\{n\}
表示之前的字符恰好出現(xiàn)n次
[0-9]\{4\}
匹配四位數(shù)字
[1][3-8][0-9]\{9\}
匹配手機(jī)號(hào)碼
\{n,\}
表示前面的字符的出現(xiàn)不小于n次
[0-9]\{2,\}
表示兩位及以上數(shù)字
\{n,m\}
至少出現(xiàn)n次,最多出現(xiàn)m次
[a-z]\{6,8\}
匹配6到8位小寫(xiě)字母
(?!abc)
不包含abc
^((?!abc).)*$
正則表達(dá)式是包含匹配,通配符是完全匹配
[測(cè)試用]
grep "size" /root/anaconda-ks.cfg
包含size的文本行
a*
所有文本
aa*
至少包含一個(gè)a的行
aaa*
至少包含兩個(gè)連續(xù)的a的行
.*
匹配任意字符重復(fù)任意多次
a.*d
a和d之間任意字符
^[^0-9]
非數(shù)字開(kāi)頭的行,不匹配空白行
[a-zA-Z]
所有字母
\.$
以點(diǎn)結(jié)束的行
【指令雜記】
cat /root/anaconda-ks.cfg
查看安裝記錄
cut命令
字段提取
和grep的區(qū)別:
grep:文件中提取符合條件的行
cut:文件中提取符合條件的列
cut -f 列號(hào)
提取第幾列
cut -d 分隔符
手工指定分隔符
eg
cut -d ":" -f 1 /etc/passwd
提取passwd中的第一列,分隔符為:
cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
printf命令
printf %s 1 2 3 4 5 6
每一個(gè)為一組輸出
printf %s %s %s 1 2 3 4 5 6
只輸出最后一個(gè)%s
printf '%s %s %s' 1 2 3 4 5 6
每三個(gè)為一組輸出
printf '%s %s %s\n' 1 2 3 4 5 6
printf '%s' 1 2 3 4 5 6
printf '%s' $(cat /etc/profile)
無(wú)換行輸出
printf '%s\t %s\t %s\t %s\t \n' $(cat student.txt)
自行調(diào)整格式輸出
printf不接收管道符,printf不接收文件名
print命令(awk中使用,系統(tǒng)不支持)
printf不會(huì)自動(dòng)加換行符
print會(huì)自動(dòng)加換行符
awk命令
提供比cut更強(qiáng)大的功能
awk '條件1 {動(dòng)作1} 條件2 {動(dòng)作2} ...' 文件名
條件 Pattern :
x > 10
動(dòng)作 Action :
格式化輸出
流程控制語(yǔ)句
eg
awk '{printf $2 "\t" $6 "\n"}' student.txt
$2:文件第2列
awk '{print $2 "\t" $6 ""}' student.txt
$2:文件第2列
awk 'BEGIN{printf"This is a transcript \n"}{printf $2 "\t" $6 "\n"}' student.txt
awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd
BEGIN:在所有的命令執(zhí)行前執(zhí)行
END:在所有的命令執(zhí)行后執(zhí)行
FS:內(nèi)置變量,自定義分隔符,默認(rèn)分隔符是空格或制表符
awk 'BEGIN{FS=":"}END{printf "【THE END】"}{print $1 "\t" $3}' /etc/passwd
awk '$4 >= 50 {printf $2 "\n"}' test.txt
sed命令
輕量級(jí)流編輯器
主要用來(lái)將數(shù)據(jù)進(jìn)行選取、替換、刪除、新增
行號(hào)從1開(kāi)始而不是0
Options
-n 將經(jīng)過(guò)sed命令處理的行輸出到屏幕
-e 允許對(duì)輸入數(shù)據(jù)應(yīng)用多條sed命令編輯
-i 用sed的修改結(jié)果直接修改讀取數(shù)據(jù)的文件,而不是由屏幕輸出
具有一定危險(xiǎn)性 54若55
Actions
a
追加
append
\表示數(shù)據(jù)輸入未完成
sed '2a hello' test.txt
在第二行后追加hello
c
行替換
change
sed '2c OH MY GOD' test.txt
i
插入
insert
sed '2i insertTest \
test2 test3' test.txt
d
刪除
delete
sed '2,4d1' test.txt
刪除2到4行
p
打印
print_
輸出指定行
sed -n '2p' test.txt
不加-n會(huì)輸出指定行和所有行
df -h | sed -n '2p'
s
字符串替換
substitute
sed 's/舊字符串/新字符串/g' 文件名
sed 's/Dick/John/g' test.txt
sort命令
排序命令
選項(xiàng)
-f
忽略大小寫(xiě)
-n
以數(shù)值型進(jìn)行排序,默認(rèn)使用字符串型排序
-r
反向排序
-t
指定分隔符
sort -t ":" -k 3,3 /etc/passwd
指定分隔符為":",用第三字段開(kāi)頭,用第三字段結(jié)尾排序,就是只有第三字段排序
此時(shí)排序的對(duì)象依然被視為字符串
sort -n -t ":" -k 3,3 /etc/passwd
同上不過(guò)視為數(shù)值
-k n[,m]
eg
sort /etc/passwd
排序用戶(hù)信息文件(a-z)
sort -r /etc/passwd
反向排序(z-a)
wc命令
用于統(tǒng)計(jì)
輸出結(jié)果為:行 單詞 字符
-l
只統(tǒng)計(jì)行數(shù)
-w
只統(tǒng)計(jì)單詞數(shù)
-m
只統(tǒng)計(jì)字符數(shù)
eg
df -h | wc
條件判斷
Options
-b
塊設(shè)備
-c
字符設(shè)備
-d
目錄
-e
判斷文件是否存在(exist)
-f
普通文件
-L
符號(hào)鏈接
-p
管道文件
-s
空
-S
套接字文件
Format
test -options 文件名
[ -options 文件名]
ActualUsage
使用echo $?來(lái)查看最后一次命令的執(zhí)行狀態(tài)來(lái)判斷文件是否存在,0為存在,其他為不存在
[ -d /root ] && echo "yes" || echo "no"
&& : 前方真則執(zhí)行
|| : 前方假則執(zhí)行
文件權(quán)限判斷
-r
有讀權(quán)限
-w
有寫(xiě)權(quán)限
-x
有執(zhí)行權(quán)限
文件之間比較
file1 -nt file2
1比2新嗎
file1 -ot file2
1比2舊嗎
file1 -ef file2
1比2的 lnode號(hào) 一致嗎
判斷兩文件是否為同一文件,可用于判斷硬鏈接
數(shù)值比較
num1 -eq num2
相等
num1 -ne num2
不相等
1 -gt 2
1大于2
greater
1 -lt 2
1小于2
lighter
1 -ge 2
大于等于
greater || equal
1 -le 2
小于等于
lighter || equal
字符串比較
[ -z "$name"] && echo yes || echo no
-z 為空返回真
-n 非空返回真
[ "$aa" == "$bb" ] && echo yes || echo no
多重條件判斷
判斷1 -a 判斷2
同時(shí)成立為真
判斷1 -o 判斷2
一個(gè)成立就為真
!判斷
使得原始判斷式取反
date命令
date
顯示當(dāng)前時(shí)間
date +%y
顯示年
date +%y-%m-%d
以 年-月-日 顯示時(shí)間
date -s 04:59:30
更改當(dāng)前時(shí)間為59分30秒
useradd
passwd user1
為user1創(chuàng)建密碼
who
登錄用戶(hù)名 登錄終端 登錄時(shí)間(登錄的主機(jī)IP)
tty 本地登錄
pts 遠(yuǎn)程終端
uptime
連續(xù)運(yùn)行時(shí)間
w
詳細(xì)信息
【文件壓縮】.tar.gz / .gz / .zip / .bz2
gzip 文件名
壓縮
只能壓縮文件,不能壓縮目錄
gunzip 文件名 / gzip -d 文件名
解壓縮
tar -cvf 壓縮后文件名.tar 需要壓縮的目錄
(建議加上后綴名便于識(shí)別壓縮文件)
-c打包
-v顯示詳細(xì)信息(可省略)
-f顯示文件名
-z打包并壓縮
-zx解包并解壓縮
tar -zcf testFolder.tar.gz TestFolderT2
在testFolder.tar.gz后面可加多個(gè)空格和文件名來(lái)壓縮多個(gè)文件
tar -zxvf testFolder.tar.gz
解壓縮
tar -ztvf testFolder.tar.gz
之查看,不解壓縮
zip
-r 壓縮目錄
unzip
bzip2
-k 壓縮文件后保留原文件(默認(rèn)不保留)
bunzip2
-k 保留壓縮包(默認(rèn)不保留)
Linux用戶(hù)管理
/etc/passwd 基本用戶(hù)信息配置文件
查看幫助:#man 5 passwd
用戶(hù)名稱(chēng):密碼標(biāo)識(shí):用戶(hù)UID:用戶(hù)組GID:用戶(hù)備注:用戶(hù)家目錄:Shell
密碼標(biāo)識(shí)
查看密碼是否存在
x:表示用戶(hù)有密碼
UID
0 超級(jí)用戶(hù)
一旦用戶(hù)UID被改為0,該用戶(hù)就變成root用戶(hù)
1-499 系統(tǒng)用戶(hù)(偽用戶(hù))
500-65535 普通用戶(hù)
用戶(hù)組
初始組
一般和用戶(hù)名同名
附加組
用戶(hù)可以加入其他的用戶(hù)組
用戶(hù)家目錄
用戶(hù)進(jìn)入終端的默認(rèn)目錄
/home/用戶(hù)名 二級(jí)目錄
/root/ 一級(jí)目錄
Shell
標(biāo)準(zhǔn)Shell:/bin/bash
系統(tǒng)禁止登錄Shell:/sbin/nologin
/etc/shadow 查看密碼文件
只有root有權(quán)限查看shadow
字段號(hào) 說(shuō)明
1 用戶(hù)名
2 SHA512散列加密密文(如果為*或者!!表示沒(méi)有密碼)
3 密碼最后一次修改日期(1970年1月1日開(kāi)始到今天經(jīng)過(guò)的天數(shù))
4 兩次密碼修改間隔(默認(rèn)為0)
5 密碼有效期(99999即永久生效),到了有效期將警告修改密碼
6 密碼到期警告時(shí)間(在有效期前的警告天數(shù))
7 密碼到期寬限時(shí)間(在有效期后的警告天數(shù),警告結(jié)束則封禁),如果寫(xiě)-1表示永久生效
8 時(shí)間戳表示的賬號(hào)失效時(shí)間(到了時(shí)間戳就失效,優(yōu)先級(jí)最高)
9 保留
/etc/group
字段號(hào) 說(shuō)明
1 組名,默認(rèn)和用戶(hù)名相同
2 組密碼標(biāo)識(shí) /etc/gshadow 保存真正組密碼
知道組密碼的人可以管理組內(nèi)用戶(hù),有一定安全隱患
3 GID,組ID
4 組中附加用戶(hù)
/home/用戶(hù)名
所有者和所屬組都是此用戶(hù)
/var/spool/mail
/var/ 可變數(shù)據(jù)保存目錄
/etc/skel
模板目錄
時(shí)間戳和日期轉(zhuǎn)化
date -d "1970-01-01 365 days"
echo $(($(date --date="2021-01-01" +%s)/86400+1))
vim tab鍵空格數(shù)量規(guī)定
Ubuntu安裝deb
dpkg -i
安裝
安裝包的安裝文件夾
/opt/
dpkg -r
關(guān)于mNetAssist無(wú)法啟動(dòng)問(wèn)題
add-apt-repository ppa:linuxuprising/libpng12
apt update
apt install libpng12-0
ps aux
查看當(dāng)前進(jìn)程
ubuntu安裝apache服務(wù)器
1 安裝
sudo apt install apache2 -y
2 檢查服務(wù)是否啟動(dòng)
systemctl status apache2
3 常用apache命令
/etc/init.d/apache2 start
啟動(dòng)服務(wù)
/etc/init.d/apache2 stop
停止服務(wù)
/etc/init.d/apache2 restart
重啟服務(wù)
Apache修改網(wǎng)站根目錄及默認(rèn)網(wǎng)頁(yè)
我們來(lái)試著修改web服務(wù)器的配置,讓我們可以在自己搭建的web服務(wù)器上訪問(wèn)到自己規(guī)定的數(shù)據(jù):
修改根目錄
在 /etc/apache2/sites-available 中修改 000-default.conf 中的DocumentRoot /var/www/ 修改為想要的目錄
比如:DocumentRoot /var/www/html/mainpage
執(zhí)行命令:
vim /etc/apache2/sites-available/000-default.conf
1
修改000-default.conf中的DocumentRoot /var/www/,如下
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html // 一般我們默認(rèn)為這個(gè)作為網(wǎng)站的根目錄
1
2
接下來(lái)重啟apache 即可
sudo apache2ctl -k restart
1
修改默認(rèn)網(wǎng)頁(yè)為自己想要的頁(yè)面
修改/etc/apache2/mods-available/dir.conf中的內(nèi)容
執(zhí)行命令:
vim /etc/apache2/mods-available/dir.conf
1
原來(lái)是:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
1
2
3
添加上想要的/wordpress就行啦~
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm /wordpress
</IfModule>
1
2
3
實(shí)際上在這里添加文件或目錄的意思是,用于我們?cè)试Shttp請(qǐng)求訪問(wèn)到/var/www/html下的改文件或目錄中的內(nèi)容的意思:
例如我添加了test這個(gè)目錄
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm /test
</IfModule>
1
2
3
在再里面添加個(gè)名為index.html的文檔,寫(xiě)入“Hello World!”,于是我們便可通過(guò)IP地址+/test/index.html訪問(wèn)到
Ubuntu設(shè)置PS1提示符
永久生效:在用戶(hù)家目錄下的.bashrc進(jìn)行修改
暫時(shí)生效:#PS1="..."
修改位置:PS1=${debian_chroot:+($debian_chroot)}\u@\h:\w\$
/u 當(dāng)前登錄用戶(hù)名
/h 當(dāng)前計(jì)算機(jī)名稱(chēng)(譬如ubuntu)
/H 當(dāng)前計(jì)算機(jī)的域名全程,譬如(ubuntu.ubuntu.com)
/w 當(dāng)前目錄的完整路徑。家目錄會(huì)以~代替
/W 利用basename取得工作目錄名稱(chēng),所以只會(huì)列出最后一個(gè)目錄
/,root用戶(hù)為>
時(shí)間顯示
/t 當(dāng)前時(shí)間(24小時(shí)制,HH:MM:SS 分別代表 小時(shí):分鐘:秒)
/T 當(dāng)前時(shí)間(12小時(shí)制)
/@ 當(dāng)前時(shí)間(AM/PM顯示)
/d 當(dāng)前日期
Shell信息:
/v Bash版本
/V Bash的發(fā)布版本號(hào)
/S Shell名稱(chēng)
/! Bash命令的歷史編號(hào)
/j job序號(hào)
/l Shell的終端名稱(chēng)
修改后重新加載配置文件:
source .bashrc
PS1顏色設(shè)置參數(shù)
在PS1中設(shè)置字符顏色的格式為:\[\e[F;Bm\]........\[\e[0m\],其中“F“為字體顏色,編號(hào)為30-37,“B”為背景顏色,編號(hào)為40-47,\[\e[0m\]作為顏色設(shè)定的結(jié)束。
顏色對(duì)照表:
F B
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍(lán)色
35 45 紫紅色
36 46 青藍(lán)色
37 47 白色
只需將對(duì)應(yīng)數(shù)字套入設(shè)置格式中即可。
比如要設(shè)置命令行的格式為綠字黑底(\[\e[32;40m\]),顯示當(dāng)前用戶(hù)的賬號(hào)名稱(chēng)(\u)、主機(jī)的第一個(gè)名字(\h)、完整的當(dāng)前工作目錄名稱(chēng)(\w)、24小時(shí)格式時(shí)間(\t),可以直接在命令行鍵入如下命令:
# PS1='[\[\e[32;40m\]\u@\h \w \t]$ \[\e[0m\]'
ubuntu查看服務(wù)
service --status-all
【流程控制】
if語(yǔ)句
1
if [ 條件判斷式 ];then
程序
fi
2
if [ 條件判斷式 ]
then
程序
fi
3
if [ 條件判斷式 ]
then
程序
else
程序
fi
4
if [ 條件判斷式 ]
then
程序
(如果企圖提前終止判斷,使用exit)
elif [ 條件判斷式 ]
then
程序
[ 條件判斷式 ] 本質(zhì)是test判斷
eg
統(tǒng)計(jì)分區(qū)使用率的腳本
#!/bin/bash
rate =$(df -h | grep "/dev/nvme0n1p3" | awk '{print $5}' | cut -d "%" -f 1 )
#將根分區(qū)使用率作為變量值賦予變量rate
if [ $rate -ge 80 ]
then
echo "Your disk is almost full !"
else
echo "Disk free space : %$rate"
fi
備份/etc目錄到/tmp/testFolder目錄
#!/bin/bash
ntpdate asia.pool.ntp.org &>/dev/null
#同步系統(tǒng)時(shí)間
date=$(date +%y%m%d)
#備份時(shí)間
size=$(du -sh /tmp/testFolder)
#目錄大小
if [ -d /tmp/testFolder ]
then
echo "Date : $date!" > /tmp/testFolderBackupInfo.txt
# > 表示覆蓋
echo "Date size : $size" >> /tmp/testFolderBackupInfo.txt
cd /tmp
tar -zcf folderBackup-$date.tar.gz /tmp/testFolder testFolderBackupInfo.txt &>/dev/null
# 命令 &> 文件 以覆蓋的方式,把正確輸出和錯(cuò)誤輸出都保存在同一文件中
rm -rf /tmp/testFolderBackupInfo.txt
#Info文件打入包中后舍棄
判斷apache是否啟動(dòng)
#!/bin/bash
port=$(nmap -sT 192.168.10.115 | grep tcp | grep http | awk '{print $2}')
#使用nmap命令掃描服務(wù)器,并截取apache服務(wù)的狀態(tài),賦予變量port
if [ "$port" == "open" ]
then
echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log
else
/etc/rc.d/init.d/httpd start &>/dev/null
echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
fi
判斷文件類(lèi)型
read -p "please enter a file name" file
#將用戶(hù)輸入的字符串賦予變量file
if [ -z "$file" ]
#判斷file是否為空
then
echo "Error,please input a file name !"
exit 1
elif [ ! -e "$file" ]
then
echo "Your input is not a file !"
exit 2
elif [ -f "$file" ]
then
echo "It's a normal file ."
elif [ -d "$file" ]
then
echo "It's a directory ."
else
echo "I don't know this thing ."
fi
case語(yǔ)句
case $變量名 in
"值1")
程序
;;
"值2")
程序
;;
"值3")
程序
;;
*)
其他值都不符合時(shí)執(zhí)行該程序
;;
esac
eg
判斷輸入
#!/bin/bash
read -p "Please enter y/n" -t 30 cho
case $cho in
"y")
echo "Yes , good luck !"
;;
"no")
echo "No ? ok !"
;;
*)
echo "You entered something else"
;;
esac
for循環(huán)
1
for 變量 in 值1 值2 值3
#值1 值2 值3 依次賦值給 變量
do
程序
done
2
for (( 初始值;循環(huán)條件;變量變化 ))
do
程序
done
eg
批量解壓縮腳本
#!/bin/bash
cd /lamp
ls *.tar.gz > ls.log
for i in $(cat ls.log)
do
tar -zxf $i &>/dev/null
done
rm -rf /lamp/ls.log
從1加到100
#!bin/bash
s=0
for (( i=1;i<=100;i=i+1 ))
do
s=$(( $s+$i ))
done
echo "sum: $s"
while循環(huán)
語(yǔ)法
while [ 條件判斷式 ]
do
Program
done
eg
1加到100
#!/bin/bash
i=1
s=0
while [ $i -le 100 ]
do
s=$(( $s+$i ))
i=$(( $i+1 ))
done
echo "sum: $s"
until循環(huán)
不成立則一直循環(huán),與while相反
語(yǔ)法
until [ 條件判斷式 ]
do
Program
done
eg
1加到100
#!/bin/bash
i=1
s=0
until [ $i -gt 100 ]
do
s=(( $s+$i ))
i=(( $i+1 ))
done
Linux Shell中的美元符號(hào)
$0 shell的命令本身(包括完整路徑)
$1到$9 數(shù)字表示shell 的第幾個(gè)參數(shù)
$# 傳遞到腳本的參數(shù)個(gè)數(shù)
$* 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)
$$ 腳本運(yùn)行的ID號(hào)
$! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的ID號(hào)
$@ 與$*相同。
$- 顯示shell使用的當(dāng)前選項(xiàng)。
$? 顯示最后命令的執(zhí)行狀況。0表示沒(méi)有錯(cuò)誤。
Shell腳本語(yǔ)言:
不適合大量運(yùn)算
運(yùn)行前編譯
CentOS安裝Apache
yum install httpd
【服務(wù)管理】
服務(wù)的分類(lèi)
RPM包默認(rèn)安裝的服務(wù)
獨(dú)立的服務(wù)
服務(wù)響應(yīng)快
常駐內(nèi)存
基于xinetd的服務(wù)
不占內(nèi)存
響應(yīng)慢
源碼包安裝的服務(wù)
源碼包安裝在指定位置,一般在/usr/local
相關(guān)命令
#chkconfig --list
查看服務(wù)自啟動(dòng)狀態(tài)
可以看到所有RPM包安裝的服務(wù)
#ps aux
查看所有運(yùn)行的進(jìn)程
關(guān)于RPM包的獨(dú)立服務(wù)相關(guān)路徑
/etc/init.d
或者/etc/rc.d/init.d
實(shí)質(zhì)上是/etc/init.d的軟鏈接
/etc/sysconfig/
初始化環(huán)境配置文件位置
/etc/
配置文件位置
/etc/xinetd.conf
xinetd配置文件
/etc/xinetd.d/
基于xinetd服務(wù)的啟動(dòng)腳本
/var/lib/
服務(wù)產(chǎn)生的數(shù)據(jù)(可變數(shù)據(jù))放在這里
/var/log
日志
獨(dú)立服務(wù)的手動(dòng)啟動(dòng)
方式1
/etc/init.d/獨(dú)立服務(wù)名 start|status|stop|restart
方式2
service 獨(dú)立服務(wù)名 start|status|stop|restart
#非標(biāo)準(zhǔn)啟動(dòng)方式
獨(dú)立服務(wù)的自啟動(dòng)
方式1
chkconfig
ubuntu系統(tǒng):
systemctl
systemctl list-unit-files --type=service|grep enabled
禁用服務(wù):
sudo systemctl disable apache2.service
方式2
/etc/rc.d/rc.local
登陸之前都會(huì)執(zhí)行一遍
方式3
使用ntsysv命令管理自啟動(dòng)
yum install ntsysv
紅帽專(zhuān)有
xinetd服務(wù)
xinetd:超級(jí)守護(hù)進(jìn)程
基于xinetd的服務(wù)逐漸減少,xinetd的安全性可能不佳,所以現(xiàn)有l(wèi)inux不會(huì)預(yù)裝
xinetd不是獨(dú)立服務(wù),不可以通過(guò)service啟動(dòng)
xinetd啟動(dòng)方式:
vim /etc/xinetd.d/telent
將diable字段改為no
進(jìn)程管理
進(jìn)程管理的作用
判斷服務(wù)器的健康狀態(tài)
#ps aux
使用bsd操作格式
進(jìn)程屬性說(shuō)明
VSZ
占用虛擬內(nèi)存大小 單位KB
RSS
占用實(shí)際物理內(nèi)存大小 單位KB
TTY
進(jìn)程實(shí)在哪個(gè)終端運(yùn)行的
tty1-tty7 本地控制臺(tái)終端
其中tty1-tty6是本地字符界面終端,tty7為圖形界面終端
pts/0-256 虛擬終端(遠(yuǎn)程登錄終端)
STAT
進(jìn)程狀態(tài)
R 運(yùn)行
S 睡眠
T 停止
s 包含子進(jìn)程
+ 位于后臺(tái)
START
進(jìn)程啟動(dòng)時(shí)間
超過(guò)一天顯示日期
TIME
進(jìn)程占用CPU運(yùn)算時(shí)間
COMMAND
進(jìn)程名
#ps -le
使用Linux標(biāo)準(zhǔn)命令格式查看進(jìn)程
#top [選項(xiàng)]
每三秒更新一次進(jìn)程列表
top - 10:33:17 up 6 days, 16:36, 2 users, load average: 0.19, 0.20, 0.21
#top - 當(dāng)前時(shí)間|運(yùn)行時(shí)間(天數(shù)、小時(shí)、分鐘)| 當(dāng)前登錄用戶(hù)數(shù) | 1分鐘、5分鐘、15分鐘的平均負(fù)載(整數(shù)1為一顆核心滿(mǎn)載)
Tasks: 218 total, 1 running, 217 sleeping, 0 stopped, 0 zombie
#218個(gè)進(jìn)程,1個(gè)在運(yùn)行,217個(gè)睡眠,0個(gè)停止,0個(gè)僵尸進(jìn)程(如果不是0,需要手工檢查)
#僵尸進(jìn)程:正在啟動(dòng)還未完全啟動(dòng)
%Cpu(s): 2.3 us, 1.8 sy, 0.0 ni, 95.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
#行為CPU信息
95.8 id 表示 95.8%空閑率
us 用戶(hù)模式cpu占用
sy 系統(tǒng)模式cpu占用
ni 改變過(guò)優(yōu)先級(jí)的用戶(hù)進(jìn)程占用的cpu
wa 等待輸入或輸出的進(jìn)程占用的cpu
hi 硬中斷請(qǐng)求服務(wù)占用的cpu
si 軟中斷請(qǐng)求服務(wù)占用的cpu
st 虛擬時(shí)間百分比,即有虛擬機(jī)時(shí),虛擬cpu等待實(shí)際cpu的時(shí)間百分比
MiB Mem : 7857.4 total, 4213.5 free, 684.8 used, 2959.2 buff/cache
內(nèi)存信息
MiB Swap: 1359.6 total, 1359.6 free, 0.0 used. 6772.2 avail Mem
交換分區(qū)信息 | 總大小 | 空閑的大小 | 已經(jīng)使用的大小
選項(xiàng)
-d 秒數(shù)
指定每隔多少秒更新
?或h
顯示幫助
P
以cpu使用率排序
M
以?xún)?nèi)存使用率排序
N
以PID排序
q
退出top
#pstree
查看進(jìn)程樹(shù)
-p
顯示進(jìn)程PID
-u
顯示進(jìn)程所屬用戶(hù)
#kill -進(jìn)程信號(hào) 進(jìn)程id號(hào)
進(jìn)程信號(hào)
1 重啟進(jìn)程
9 強(qiáng)制終止
15 默認(rèn)終止,在默認(rèn)終止無(wú)效時(shí),可以選擇9
#killall
-9 進(jìn)程名
強(qiáng)制終止
eg
killall -9 apache2
-i 交互式,詢(xún)問(wèn)是否殺死
-I 忽略進(jìn)程名大小寫(xiě)
#pkill
pkill -9 apache2
w命令
查看登錄的用戶(hù)
踢出用戶(hù):
1
w命令查看用戶(hù)TTY
2
pkill -9 -t 用戶(hù)TTY號(hào)
【工作管理】
把進(jìn)程放入后臺(tái)
1 [放入后臺(tái)繼續(xù)運(yùn)行]在命令結(jié)尾加入&符號(hào)
tar -zcf etc.tar.gz /etc &
2 [放入后臺(tái)暫停運(yùn)行]在命令執(zhí)行過(guò)程中按下ctrl+z
查看后臺(tái)工作
#jobs
-l:顯示工作的pid
+號(hào)表示最近一個(gè)放入后臺(tái)的工作,也是工作恢復(fù)時(shí)默認(rèn)恢復(fù)的工作
-號(hào)表示倒數(shù)第二個(gè)放入后臺(tái)的工作
恢復(fù)工作到前臺(tái)
#fg %工作號(hào)
工作號(hào)可以省略,fg 1代表恢復(fù)第一個(gè)工作
#bg
把暫停的工作在后臺(tái)繼續(xù)運(yùn)行
但是例如top等必須和用戶(hù)交互的進(jìn)程將不會(huì)繼續(xù)運(yùn)行,仍然保持暫停
vi和vim的區(qū)別
1、多級(jí)撤消
在vi編輯器中,按u只能撤消上次命令,而在vim里可以無(wú)限制的撤消。
2、易用性
vi編輯器只能運(yùn)行于unix中,而vim不僅可以運(yùn)行于unix,還可用于windows、mac等多操作平臺(tái)。
3、語(yǔ)法加亮
vim可以用不同的顏色來(lái)加亮你的代碼。
【系統(tǒng)資源查看】
#vmstat [刷新延時(shí) 刷新次數(shù)]
#vmstat 2 3
每隔2秒刷新一次,刷新3下
#dmesg
開(kāi)機(jī)時(shí)檢測(cè)內(nèi)核信息
#dmesg|grep CPU
查看CPU相關(guān)的開(kāi)機(jī)信息
#free
查看內(nèi)存使用狀態(tài)
-b
單位 字節(jié)
-k
單位KB
-m
單位MB
-g
單位GB
緩沖buffer和緩存cache
cache:
用來(lái)加速數(shù)據(jù)從硬盤(pán)中讀取
buffer:
用來(lái)加速數(shù)據(jù)寫(xiě)入到硬盤(pán)
#cat /proc/cpuinfo
查看cpu信息
#uptime
看top命令第一行
#uname 選項(xiàng)
-a
查看系統(tǒng)所有相關(guān)信息
-r
查看內(nèi)核版本
-s
查看內(nèi)核名稱(chēng)
#file /bin/ls
判斷當(dāng)前系統(tǒng)位數(shù)(32位還是64位)
#lsb_release -a
查詢(xún)Linux的發(fā)行版本
#lsof [選項(xiàng)]
-c 字符串
列出以字符串開(kāi)頭的進(jìn)程打開(kāi)的文件
-u 用戶(hù)名
列某個(gè)用戶(hù)的進(jìn)程打開(kāi)的文件
-p pid
列出某個(gè)PID進(jìn)程打開(kāi)的文件
file命令
判斷文件類(lèi)型
【系統(tǒng)定時(shí)任務(wù)】
crond服務(wù)
service crond restart
chkconfig crond on
* * * * *
第n個(gè)星 代表含義 范圍
1 分鐘 0-59
2 小時(shí) 0-23
3 日 1-31
4 月 1-12
5 周 0-7 (0和7都代表周日)
特殊符號(hào)
*
代表任何時(shí)間
45 22 * * * 命令
在每天22點(diǎn)45分執(zhí)行
0 17 * * 1
每周1的17點(diǎn)整執(zhí)行
,
代表不連續(xù)時(shí)間
0 0 1,15 * 1
每月的1號(hào)和15號(hào)的0點(diǎn)0分 和 每周1的0點(diǎn)0分 都會(huì)執(zhí)行
-
代表連續(xù)的時(shí)間范圍
*/n
代表每隔多久執(zhí)行一次
*/10 * * * * 表示每隔10分鐘執(zhí)行一次
舉例
*/5 * * * * /bin/echo "11" >> /tmp/test
每5分鐘寫(xiě)11到/tmp/test
5 5 * * 2 /sbin/shutdown -r now
每周二的5點(diǎn)5分重啟
【日志管理】
rsyslogd
查看rsyslogd是否在運(yùn)行
ps aux | grep rsyslogd
查看rsyslogd服務(wù)
systemctl list-unit-files | grep rsyslog
日志文件
/var/log/cron
記錄了系統(tǒng)定時(shí)任務(wù)相關(guān)的日志
/var/log/cups/
記錄了打印信息的日志
/var/log/dmesg
記錄了系統(tǒng)在開(kāi)機(jī)時(shí)的內(nèi)核自檢信息,可以用dmesg命令查看該信息
/var/log/btmp
記錄錯(cuò)誤登錄的日志,該文件為二進(jìn)制文件,不可以直接查看,而使用lastb命令查看
/var/log/lastlog
記錄系統(tǒng)中所有用戶(hù)最后一次的登錄時(shí)間的日志,該文件為二進(jìn)制文件,不可以直接查看,而使用lastlog命令查看
/var/log/mailog
記錄郵件信息
/var/log/message
記錄系統(tǒng)重要信息的日志。該日志會(huì)記錄Linux系統(tǒng)的絕大多數(shù)重要信息。如果系統(tǒng)出現(xiàn)問(wèn)題,請(qǐng)查看該日志
/var/log/secure
記錄驗(yàn)證和授權(quán)方面的信息,只要涉及賬戶(hù)和密碼都會(huì)記錄
/var/log/wtmp
永久記錄所有用戶(hù)登錄和注銷(xiāo)信息,同時(shí)記錄重啟、關(guān)機(jī)事件。不能直接查看,請(qǐng)使用last命令查看
/var/run/utmp
記錄當(dāng)前已經(jīng)登錄的用戶(hù)信息
其他關(guān)于
RPM安裝的軟件的日志會(huì)放在/var/log/中
eg.var/log/httpd apache日志文件目錄
源碼包安裝的不會(huì)
關(guān)于systemctl
systemctl 命令兼容 service
日志文件的格式
列 信息
1 日志發(fā)生時(shí)間
2 發(fā)生日志的主機(jī)名
3 發(fā)生日志的服務(wù)名或主機(jī)名
4 日志具體信息
/etc/rsyslog.conf配置文件
authpriv.* /var/log/secure
服務(wù)名稱(chēng)[連接符號(hào)]日志等級(jí) 日志記錄位置
認(rèn)證相關(guān)服務(wù).所有日志等級(jí) 記錄在/var/log/secure日志中
關(guān)于連接符號(hào)
*
代表所有日志等級(jí)
.
只要比后面等級(jí)高的(包含該等級(jí))日志都要記錄下來(lái)
.=
代表只記錄所需等級(jí)的日志,其他等級(jí)都不記錄
.!
代表不等于,即除了該等級(jí)的日志外,其他等級(jí)的日志都記錄
日志記錄位置
/var/log/secure
日志文件的絕對(duì)路徑
/dev/lp0
系統(tǒng)設(shè)備文件
@192.168.0.210:514
遠(yuǎn)程轉(zhuǎn)發(fā)給主機(jī)
用戶(hù)名
如root
忽略或丟棄日志,如"~"
日志輪替
產(chǎn)生新日志覆蓋舊日志
日志文件名的命名規(guī)則
如果配置文件中有dateext參數(shù),則日志會(huì)用日期作為日志文件的后綴
logrotate配置文件
參數(shù) 說(shuō)明
daily 每日輪替,即備份一天的日志
weekly 每周輪替,即備份一周的日志
monthly 每月輪替,即備份一月的日志
rotate 數(shù)字 保留的日志文件個(gè)數(shù),0指沒(méi)有備份
compress 日志輪替時(shí),舊的日志進(jìn)行壓縮
create mode owner group 建立新日志,同時(shí)指定新日志的權(quán)限與所有者和所屬組,如create 0600 root utmp
mail address 日志輪替時(shí),將輸出內(nèi)容通過(guò)郵件發(fā)送到指定郵件地址
missingok 日志不存在,忽略警告
minsize 大小 日志輪替的最小值
size 大小 日志大于指定大小輪替
eg
將apache日志加入輪替
/usr/local/apache2/logs/access_log{
daily
create
rotate 30
}
logrotate命令
logrotate [選項(xiàng)] 配置文件名
-v
顯示日志輪替過(guò)程
-f
強(qiáng)制進(jìn)行日志輪替,不管是否符合輪替條件
啟動(dòng)管理
系統(tǒng)運(yùn)行級(jí)別
級(jí)別1-6(見(jiàn)上)
更改系統(tǒng)默認(rèn)運(yùn)行級(jí)別
#vim /etc/inittab
id:3:initdefault:
系統(tǒng)運(yùn)行過(guò)程
啟動(dòng)引導(dǎo)程序grub
/etc/grub.conf
實(shí)際上是一個(gè)指向 /boot/grub/grub.conf的軟鏈接
default=0
表示默認(rèn)啟動(dòng)0
timeout=5
超時(shí)時(shí)間5秒
【備份和恢復(fù)】
重要目錄
/root
/home
/var/spool/mail
/etc
...
備份類(lèi)型
完全
增量
差異
備份命令
#dump -options fileNameAfterBackup originalFile
options
-level
指明備份級(jí)別
-f 文件名
指定備份之后的文件名
-u
備份成功后將備份時(shí)間記錄在/etc/dumpdates中
-v
顯示備份過(guò)程中更多的輸出信息
-j
調(diào)用bzlib庫(kù)壓縮備份文件,即將備份文件壓縮為.bz2格式
-W
顯示允許被dump的分區(qū)的備份等級(jí)和備份時(shí)間
eg
dump -0ug -f /root/boot.bak.bz2 /boot/
cat /etc/dumpdates #查看備份時(shí)間和文件
cp install.log /boot/ #復(fù)制日志文件到boot分區(qū)
dump -1uj -f /root/boot.bak1.bz2 /boot/ #增量備份/boot分區(qū)并壓縮
dump -W #查詢(xún)分區(qū)的備份時(shí)間和備份級(jí)別
注意事項(xiàng)
dump命令只有在備份分區(qū)時(shí)可以增量備份,對(duì)于文件作增量備份會(huì)報(bào)錯(cuò)
#restore
模式選項(xiàng)
-C
比較備份數(shù)據(jù)和實(shí)際數(shù)據(jù)的變化
-i
進(jìn)入交互模式,手工選擇需要恢復(fù)的文件
-t
查看模式,用于查看備份文件中擁有哪些數(shù)據(jù)
-r
還原模式,用于數(shù)據(jù)還原
一般選項(xiàng):
-f
指定備份文件的文件名
eg
mv /boot/vmlinuz-2.6.32-279.e16.i686 /boot/vmlinuz-2.6.32.279.e16.i6h6.bak
restore -C -f /root/boot.bak
Linux學(xué)習(xí)筆記
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 一、命令基本格式 命令提示符 當(dāng)?shù)卿沴inux系統(tǒng)時(shí),最常見(jiàn)的命令就是:** [root@bogon ~]#**其...
- 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
- Linux習(xí)慣問(wèn)題: 在vim編輯時(shí),按了ctrl + s后,再按ctrl + q就可以繼續(xù)執(zhí)行了。ctrl + ...
- 1,X Window是一個(gè)協(xié)議,獨(dú)立于操作系統(tǒng),有很多種實(shí)現(xiàn),比如KDE,GNOME,FVWM等,在登錄時(shí)可以自由...
- 前言 find命令是我們?nèi)粘9ぷ髦斜容^常用的Linux命令。全面的掌握這個(gè)命令可以使很多操作達(dá)到事半功倍的效果。 ...