4.1 定時(shí)任務(wù)
linux定時(shí)任務(wù)由crond這個(gè)服務(wù)管理拂玻,Crond每分鐘執(zhí)行三個(gè)位置的腳本:
-
/etc/crontab
:系統(tǒng)相關(guān)的酸些,由root直接編寫(xiě) -
/etc/cron.d/*
:自定義的軟件相關(guān) -
/var/spool/cron/*
:用戶(hù)用crontab -e
命令編寫(xiě)的定時(shí)任務(wù)。
定時(shí)任務(wù)執(zhí)行的日志位于:/var/log/cron
關(guān)于crontab -e
日期編寫(xiě):,
表示多個(gè)時(shí)間檐蚜,-
表示一段時(shí)間魄懂,*/5
表示每5個(gè)時(shí)間單位做一次。
4.2 任務(wù)管理
在一個(gè)shell中闯第,如果任務(wù)都在前臺(tái)執(zhí)行市栗,那一個(gè)shell只能執(zhí)行一個(gè)任務(wù),效率低下咳短。一種方式是將任務(wù)放到【后臺(tái)】執(zhí)行填帽,但注意這里的后臺(tái)指的是shell的后臺(tái),也是shell的子進(jìn)程咙好,并非是系統(tǒng)的后臺(tái)篡腌。
-
&
:只需在命令后面加入這個(gè)符號(hào),即可轉(zhuǎn)入后臺(tái)執(zhí)行勾效,但是stdout和stderr依然會(huì)輸出到前臺(tái)命令行上嘹悼。在執(zhí)行結(jié)束后,也會(huì)有任務(wù)結(jié)束的提示葵第。 -
jobs
:任務(wù)執(zhí)行時(shí)绘迁,會(huì)產(chǎn)生一個(gè)job id合溺,注意不是pid,上述后臺(tái)執(zhí)行時(shí),會(huì)產(chǎn)生類(lèi)似[1] 19888
類(lèi)似的輸出伪嫁,表示的就是job id和pid饭耳。jobs
這個(gè)命令就是顯示所有后臺(tái)任務(wù)的狀態(tài)和對(duì)應(yīng)的命令,參數(shù)-l
會(huì)額外顯示pid睛约。 -
[ctrl]+z
:這個(gè)熱鍵可以將前臺(tái)正在執(zhí)行的任務(wù)暫停鼎俘,放到后臺(tái)去; -
fg %job id
:這個(gè)命令將一個(gè)后臺(tái)任務(wù)拿到前臺(tái)來(lái)繼續(xù)執(zhí)行辩涝; -
bg %job id
:這個(gè)命令將一個(gè)后臺(tái)任務(wù)在后臺(tái)繼續(xù)執(zhí)行贸伐,相當(dāng)于給命令后面加了一個(gè)&
。 -
kill %job id
:可以殺掉一個(gè)任務(wù)怔揩,常見(jiàn)的參數(shù)有-1
重啟進(jìn)程捉邢,-9
強(qiáng)制殺掉脯丝,-19
暫停運(yùn)行([ctrl]+z
)-
killall bash
:可以殺掉用bash啟動(dòng)的所有任務(wù),通常用來(lái)終止任務(wù)伏伐; - 但注意
kill
并不是殺掉的意思宠进,而是向進(jìn)程發(fā)送信號(hào)。
-
-
nohup
:上面我們提到藐翎,即使放到后臺(tái)材蹬,也是shell的后臺(tái),一旦shell關(guān)掉了吝镣,所有的任務(wù)也就都關(guān)了堤器。為了避免和shell關(guān)聯(lián),可以用nohup
末贾。但是注意nohup
是不支持shell內(nèi)置命令的吼旧。
4.3 進(jìn)程管理
進(jìn)程有五種狀態(tài):R
:running(運(yùn)行),S
:sleeping(掛起)未舟,D
:阻塞圈暗,T
:后臺(tái)暫停狀態(tài)或者在跟蹤狀態(tài),Z
:僵尸狀態(tài)裕膀。
-
ps -l
:當(dāng)前shell的相關(guān)進(jìn)程员串,ps aux
查看所有運(yùn)行的進(jìn)程。 -
pstree -p
:進(jìn)程樹(shù)- 能觀察到所有進(jìn)程都是1號(hào)進(jìn)程
systemd
的子進(jìn)程昼扛。
- 能觀察到所有進(jìn)程都是1號(hào)進(jìn)程
-
top
:-
f
調(diào)顯示的項(xiàng)目寸齐; -
1
:查看各個(gè)CPU的負(fù)載情況; -
-p pid
:參數(shù)可以查看某一個(gè)進(jìn)程的情況 -
e
和E
用來(lái)調(diào)內(nèi)存單位抄谐; -
M
按照內(nèi)存使用排序渺鹦,P
按照CPU使用排序; -
VIRT
:進(jìn)程申請(qǐng)使用的內(nèi)存蛹含,不是實(shí)際使用的毅厚,意義不大; -
RES
:進(jìn)程的常駐內(nèi)存浦箱,包含SHR
吸耿,但不包含SWAP
; -
SHR
:多核之間的共享內(nèi)存酷窥,通常是共享庫(kù)函數(shù)咽安; -
TIME+
:累計(jì)CPU時(shí)間,注意不是運(yùn)行時(shí)間蓬推,是占用CPU的時(shí)間妆棒,多核程序會(huì)累計(jì)在多個(gè)CPU上的時(shí)間。 - 系統(tǒng)負(fù)載和每秒內(nèi)運(yùn)行的任務(wù)數(shù)相關(guān)。
-
- 進(jìn)程的優(yōu)先級(jí):進(jìn)程一般都有一個(gè)優(yōu)先級(jí)糕珊,由linux計(jì)算蛋铆,值越小越先執(zhí)行,具體來(lái)說(shuō)會(huì)有一個(gè)PR值放接,由系統(tǒng)設(shè)置無(wú)法改動(dòng)刺啦,還有一個(gè)NICE值(NI),可以由用戶(hù)微調(diào)纠脾。使用
nice
和renice
命令可以調(diào)整玛瘸。 -
free -m
查看內(nèi)存信息 -
netstat
:查看網(wǎng)絡(luò)信息,分成兩部分苟蹈,一部分是真的網(wǎng)絡(luò)連接(type為tcp/udp)糊渊,一部分是本機(jī)的進(jìn)程間通信(IPC,type為unix):- 網(wǎng)絡(luò)連接:
-
Recv-Q
:接收隊(duì)列中的消息包數(shù)量慧脱,Send-Q
:發(fā)送隊(duì)列
-
- 本地socke
-
RefCnt
:關(guān)聯(lián)的進(jìn)程數(shù)渺绒; -
Path
:關(guān)聯(lián)的進(jìn)程路徑
-
-
netstat -ltunp
:列出正在偵聽(tīng)的網(wǎng)絡(luò)連接。
- 網(wǎng)絡(luò)連接:
-
dmseg
:里面存在內(nèi)核啟動(dòng)時(shí)的信息菱鸥; -
vmstat
:能對(duì)當(dāng)下系統(tǒng)資源做監(jiān)控宗兼。 - 有關(guān)
/proc
目錄下的信息:- 每個(gè)進(jìn)程對(duì)應(yīng)的pid都有一個(gè)目錄,存儲(chǔ)著進(jìn)程相關(guān)信息氮采。比較典型的
cmdline
存儲(chǔ)啟動(dòng)命令殷绍,environ
存儲(chǔ)環(huán)境變量。 -
/proc
下面還存儲(chǔ)著相當(dāng)多的其他信息鹊漠,包括cpu主到,內(nèi)核版本,文件系統(tǒng)躯概,掛在分區(qū)登钥,驅(qū)動(dòng),等等娶靡,是很多命令讀取的來(lái)源地牧牢。
- 每個(gè)進(jìn)程對(duì)應(yīng)的pid都有一個(gè)目錄,存儲(chǔ)著進(jìn)程相關(guān)信息氮采。比較典型的
-
fuser -v
:可以通過(guò)文件找出使用該文件的所有進(jìn)程; -
lsof
:查看進(jìn)程使用的文件和設(shè)備固蛾,偵聽(tīng)的端口结执。- 參數(shù)
-p
:指定pid度陆;參數(shù)-c
指定命令的名稱(chēng)艾凯,支持正則表達(dá)式。 -
lsof + 文件名
:也可以查看打開(kāi)該文件的進(jìn)程懂傀,+d
表示不遞歸查詢(xún)目錄趾诗,+D
則會(huì)遞歸查詢(xún)。 -
lsof -i
可以查看與網(wǎng)絡(luò)相關(guān)的連接,后面可以接具體端口號(hào)恃泪,比如lsof -i:22-25 -nP
,-P
可以顯示具體的端口號(hào)郑兴,-n
顯示具體ip。
- 參數(shù)
4.4 服務(wù)管理
linux中服務(wù)就是后臺(tái)守護(hù)進(jìn)程贝乎,可能是一個(gè)情连,也可能是多個(gè)。
-
服務(wù)的類(lèi)型:
-
.service
:一般服務(wù)類(lèi)型览效,主要是系統(tǒng)服務(wù)却舀。 -
.socket
:內(nèi)部程序IPC的服務(wù)。 -
.target
:一組.service和/或.socket服務(wù)打包成的锤灿。 -
.mount
:掛載相關(guān)的挽拔;.path
:檢測(cè)特定目錄的服務(wù);.timer
:循環(huán)執(zhí)行的服務(wù)但校。
-
網(wǎng)絡(luò)服務(wù)還會(huì)額外對(duì)應(yīng)端口螃诅,對(duì)應(yīng)規(guī)則在
/etc/services
。-
服務(wù)管理:
systemctl [command] [xxx.service/target]
-
start
,stop
,restart
:?jiǎn)?dòng)状囱,停止术裸,重啟; -
reload
:重新加載配置亭枷; -
enable
,disable
:開(kāi)機(jī)自啟動(dòng)穗椅, 非自啟動(dòng); -
status
:狀態(tài)
-
-
查看所有的服務(wù):
systemctl
-
--all
:也列出沒(méi)啟動(dòng)的服務(wù)
-
-
服務(wù)的狀態(tài):
-
running
:運(yùn)行中奶栖; -
exited
:一次性服務(wù)匹表,已經(jīng)結(jié)束; -
listening
:等待其他事件觸發(fā)的服務(wù)宣鄙; -
inactive
:掛掉的服務(wù)袍镀。
-