主要內(nèi)容
1. 進程管理
2. 工作管理
3. 系統(tǒng)資源查看
4. 系統(tǒng)定時任務(wù)
1. 進程管理
1.1 進程簡介和Linux進程管理的作用
進程簡介
進程是正在執(zhí)行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
進程管理的作用
- 判斷服務(wù)器健康狀態(tài)
- 查看系統(tǒng)中所有進程
- 殺死進程
1.2 linux進程的查看PS指令和pstree命令
ps指令查看所有的進程
#查看系統(tǒng)中所有的進程,使用BSD操作系統(tǒng)格式
ps aux
#查看系統(tǒng)中所有進程,使用Linux標準命令格式
ps -le
#選項
-a: 顯示一個終端的所有進程,除了會話引線
-u: 顯示進程的歸屬用戶及內(nèi)存的使用情況
-x: 顯示沒有控制終端的進程
-l: 長格式顯示,顯示更加詳細的信息
-e: 顯示所有的進程,和-A作用一致
ps命令的輸出

- USER: 該進程是由哪個用戶產(chǎn)生的
- PID: 進程的ID號
- %CPU: 該進程占用CPU資源的百分比,占用越高,進程越耗費資源
- %MEM: 該進程占用物理內(nèi)存的百分比,占用越高,進程越耗費資源
- VSZ: 該進程占用虛擬內(nèi)存的大小,單位KB
- RSS: 該進程占用物理內(nèi)存的大小,單位是KB
- TTY: 該進程是在哪個終端中運行的,其中tty1-tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。 pts/0-255代表虛擬終端
- STAT: 進程狀態(tài),常見的狀態(tài)有: R: 運行; S: 睡眠; T: 停止狀態(tài); s: 包含子進程; +: 位于后臺
- START: 該進程的啟動時間
- TIME: 該進程占用CPU的運算時間,注意不是系統(tǒng)時間
- COMMAND: 產(chǎn)生該進程的命令名
查看進程樹
pstree [選項]
#選項:
-p: 顯示進程的PID
-u: 顯示進程的所屬用戶
1.3 進程的查看top命令
top指令查看系統(tǒng)健康狀態(tài)
top [選項]
#選項:
-d 秒數(shù): 指定top命令每隔幾秒更新,默認是3s
-b: 使用批處理模式輸出,一般和"-n"選項合用
-n 次數(shù): 指定top命令執(zhí)行的次數(shù),一般和"-b" 選項合用
#在top命令的交互模式中可以執(zhí)行的命令:
?或h: 顯示交互模式的幫助
P: 以CPU使用率排序,默認就是此項
M: 以內(nèi)存的使用率排序
N: 以PID排序
q: 退出top
top指令的輸出

top指令輸出前五行內(nèi)容的具體含義:





1.4 殺死進程
kill命令 殺死單一進程
#查看可用的進程信號
kill -l


#幾個根據(jù)不同信號殺死進程的例子
#平滑重啟,不影響當前登錄的用戶
kill -HUP 1523
kill -1 1523
#強制終止,只有手工關(guān)閉不了的時候才會使用,被迫到最后的命令
kill -9 2236
#默認終止
kill -15 2236
killall命令
#按照進程名殺死進程
killall [選項] [信號] 進程名
#選項
-i: 交互式,詢問是否要殺死某個進程
-I: 忽略進程名的大小寫
pkill命令
#按照進程名終止進程
pkill [信號] [選項] 進程名
#選項
-t 終端號: 按照終端號踢出用戶
#使用w命令查詢本機已經(jīng)登錄的用戶
w
#例子: 強制殺死從pts/1虛擬終端登錄的進程
pkill -9 -t pts/1
1.5 修改進程優(yōu)先級
進程優(yōu)先級簡介
Linux操作系統(tǒng)是一個多用戶多任務(wù)的操作系統(tǒng),Linux系統(tǒng)中通知運行著非常多的進程,但是CPU在同一個時鐘周期內(nèi)只能運算一個指令。進程優(yōu)先級決定了某個進程處理的先后順序。
查看優(yōu)先級的方式
ps -le

優(yōu)先級中的NI值是可以進行修改的,修改NI值時的注意事項
- NI的值的范圍是-20到19
- 普通用戶調(diào)整NI值得范圍是0到19,而且只能調(diào)整自己的進程
- 普通用戶只能調(diào)高NI值而不能降低,如原本NI值為0,則只能調(diào)整為大于0
- root用戶才能設(shè)定NI值為負值,而且可以調(diào)整任何用戶的進程
- PRI(最終值) = PRI(原始值) + NI
- 用戶只能修改NI得值,不能直接修改PRI
nice命令
#nice命令可以給新執(zhí)行得命令直接賦予NI值,但是不能修改已經(jīng)存在得進程的NI值
nice [選項] 命令
#選項
-n NI值: 給命令賦予NI值
#舉例子
nice -n -5 service httpd start
renice命令
#renice命令是修改已經(jīng)存在進程的NI值的命令
renice [優(yōu)先級] PID
#例如
renice -10 2125
2. 工作管理
2.1 工作管理簡介
工作管理簡介
工作管理指的是單個登錄終端中(也就是登錄的shell界面中)同時管理多個工作的行為。
工作管理注意事項
- 當前的登錄終端,只能管理當前終端的工作,而不能管理其他登錄終端的工作
- 放入后臺的命令必須可以持續(xù)運行一段時間,這樣我們才能捕捉和操作這個工作
- 放入后臺執(zhí)行的命令不能和前臺用戶有交互或需要前臺輸入,否則放入后臺只能暫停而不能執(zhí)行
2.2 工作管理方法
1.將進程放入后臺
#在運行的命令后面 + &
#在運行中點擊ctrl + z
#把命令放入后臺,并在后臺執(zhí)行
tar -zcf etc.tar.gz /etc &
#按下ctrl+z快捷鍵,放到后臺暫停
top
2.查看后臺的工作
jobs [-l]
#選項
-l: 顯示工作的PID
#注: "+"號代表最近一個放入后臺的工作,也是工作恢復時,默認要恢復的工作,"-"號代表倒數(shù)第二個放入后臺的工作。
3.將后臺暫停的工作恢復到前臺執(zhí)行
fg %工作號
#參數(shù):
-%工作號:%號可以忽略,但是注意工作號和PID的區(qū)別(工作號不是進程號)
4.把后臺暫停的工作恢復到后臺執(zhí)行
bg %工作號
#注:后臺恢復執(zhí)行的命令,是不能和前臺有交互的,否則不能恢復到后臺執(zhí)行
2.3 后臺命令脫離登錄終端執(zhí)行
簡介
把命令放入后臺,只能在當前登錄終端執(zhí)行,一旦退出或關(guān)閉終端,后臺程序就會停止。在關(guān)閉終端的時候會默認發(fā)出sighup的指令停止當前的所有指令。
后臺命令脫離登錄終端執(zhí)行的方法
- 1.把需要后臺執(zhí)行的命令加入/etc/rc.local文件
- 使用系統(tǒng)定時任務(wù),讓系統(tǒng)在指定的時間執(zhí)行某個后臺命令
- 使用nohup命令
nohup命令
nohup [命令] &
#舉例
#首先編輯for.sh
vi for.sh
#!/bin/bash
for((i=1;i<1000;i=i+1))
do
echo 111 >> /root/for.log
sleep 10
done
#在后臺執(zhí)行for.sh命令
nohup /root/for.sh &
3. 系統(tǒng)資源查看
3.1 vmstat命令監(jiān)控系統(tǒng)資源
vmstat [刷新延時] [刷新次數(shù)]

vmstat命令監(jiān)控系統(tǒng)資源輸出結(jié)果每個字段的含義



memory之中緩存和緩沖的區(qū)別
簡單來說緩存(cache)是用來加速數(shù)據(jù)從硬盤中“讀取”的,而緩沖(buffer)是用來加速數(shù)據(jù)“寫入”硬盤的。
3.2 dmesg開機時內(nèi)核檢測信息
dmesg
dmesg | grep CPU
3.3 free命令查看內(nèi)存使用狀態(tài)
free [-b|-k|-m|-g]
#選項
-b: 以字節(jié)為單位顯示
-k: 以KB為單位顯示,默認就是以KB為單位顯示
-m: 以MB為單位顯示
-g: 以GB為單位顯示


3.4 查看CPU信息
cat /proc/cpuinfo
3.5 uptime命令
#顯示系統(tǒng)的啟動時間和平均負載,也就是top命令的第一行,w命令也可以看到這個數(shù)據(jù)
uptime
3.6 查看系統(tǒng)和內(nèi)核相關(guān)信息
#查看系統(tǒng)和內(nèi)核相關(guān)信息
uname [選項]
#選項:
-a: 查看系統(tǒng)所有相關(guān)信息
-r: 查看內(nèi)核版本
-s: 查看內(nèi)核名稱
#判斷當前系統(tǒng)的位數(shù)
file /bin/ls
#查詢當前Linux系統(tǒng)發(fā)行版本
lsb_release -a
3.7 列出進程打開或使用的文件信息
#列出進程調(diào)用或打開的文件信息
lsof [選項]
#選項:
-c 字符串: 只列出以字符串開頭的進程打開的文件
-u 用戶名: 只列出某個用戶的進程打開的文件
-p pid: 列出某個PID進程打開的文件
#查詢系統(tǒng)中所有進程調(diào)用的文件
lsof | more
#查詢某個文件被哪個進程調(diào)用
lsof /sbin/init
#查看httpd進程調(diào)用了哪些文件
lsof - c httpd
#按照用戶名,查詢某用戶的進程調(diào)用的文件名
lsof -u root
4. 系統(tǒng)定時任務(wù)
4.1 at一次執(zhí)行
1. 確定at安裝
#at服務(wù)是否安裝
chkconfig --list | grep atd
#at服務(wù)的啟動
service atd restart
2. at的訪問控制
- 如果系統(tǒng)中有/etc/at.allow文件,那么只有寫入/etc/at.allow(白名單)的用戶可以使用at命令(/etc/at.deny文件會被忽略)
- 如果系統(tǒng)中沒有/etc/at.allow文件,只有寫入/etc/at.deny(黑名單)的用戶不能使用at命令,對root不起作用
- 如果系統(tǒng)中這兩個文件都不存在,那么只有root用戶可以使用at命令
3. at命令
at [選項] 時間
#選項:
-m: 當at工作完成后,無論是否命令有輸出,都用email通知執(zhí)行at命令的用戶
-c 工作號: 顯示該at工作的實際內(nèi)容

4.at命令例子
#例子: 在兩分鐘之后執(zhí)行hello.sh腳本
at now +2 minutes
at> /root/hello.sh >> /root/hello.log

5.其他at管理命令
#查詢當前服務(wù)器上的at工作
atq
#刪除指定的at任務(wù)
atrm [工作號]
4.2 crontab循環(huán)定時任務(wù)
1. crond服務(wù)管理與訪問控制
# service crond restart
# chkconfig crond on
訪問控制
- 如果系統(tǒng)中有/etc/cron.allow文件,那么只有寫入此文件的用戶可以使用crontab命令,沒有寫入的不能使用,(/etc/cron.deny文件會被忽略,/etc/cron.allow文件的優(yōu)先級更高)
- 如果系統(tǒng)中只有/etc/cron.deny文件時,則寫入該文件的用戶不能使用crontab命令
2. 用戶的crontab設(shè)置
crontab [選項]
#選項:
-e: 編輯crontab定時任務(wù)
-l: 查詢crontab任務(wù)
-r: 刪除當前用戶所有的crontab任務(wù)
crontab -e
#進入crontab編輯界面,會打開vim編輯你的工作
*****執(zhí)行的任務(wù)
每個*的含義




3. 常用命令
#查看root用戶的crontab任務(wù)
crontab -l
#刪除root用戶所有的定時任務(wù)
crontab -r
4. crontab注意事項
- 五個選項都不能為空,必須填寫,如果不確定使用"*"代表任意時間
- crontab定時任務(wù),最小有效時間是分鐘,最大時間范圍是月
- 定義時間時,日期和星期最好不要在一條定時任務(wù)中出現(xiàn),因為它們都是以天作為單位,非常容易讓管理員混亂
- 在定時任務(wù)中,不管是直接寫命令,還是在腳本中寫命令,最好都是用絕對路徑
4.3 系統(tǒng)crontab設(shè)置
系統(tǒng)定時任務(wù)
crontab -e是每個用戶執(zhí)行的命令,也就是不同用戶身份可以執(zhí)行自己的定時任務(wù),可是有些定時任務(wù)就需要系統(tǒng)執(zhí)行,這時我們就需要編輯/etc/crontab這個配置文件了
CentOS 5 中的配置文件

執(zhí)行系統(tǒng)的定時任務(wù)的方法
- 手工執(zhí)行定時任務(wù)
- 系統(tǒng)定時任務(wù)
-第一種把需要定時執(zhí)行的腳本復制到 /etc/cron.{daily, weekly, monthly}目錄中的任意一個
-第二種是修改/etc/crontab配置文件
4.4 anacron配置
anacron是什么
anacron是用來保證在系統(tǒng)關(guān)機的時候錯過的定時任務(wù),可以在系統(tǒng)開機之后再執(zhí)行
anacron檢測周期
- anacron會使用一天,七天,一個月作為檢測周期
- 在系統(tǒng)的/var/spool/anacron/目錄中存在cron.{daily, weekly, monthly}文件,用于記錄上次執(zhí)行cron的時間
- 和當前的時間做比較,如果兩個時間差超過了anacron的指定時間差值,證明有cron任務(wù)被遺漏
anacron配置文件

cron.daily工作來說明執(zhí)行過程
- 首先讀取/var/spool/anacron/cron.daily中的上一次anacron執(zhí)行的時間
- 和當前時間比較,如果兩個時間差值超過一天,就執(zhí)行cron.daily工作
- 執(zhí)行這個工作只能在03:00-22:00之間
- 執(zhí)行工作強制延遲時間為5分鐘,再隨機延遲0-45分鐘時間
- 使用nice命令指定默認優(yōu)先級,使用run-parts腳本執(zhí)行/etc/cron.daily目錄中的所有可執(zhí)行文件