day4 - Linux系統(tǒng)管理

主要內(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命令的輸出

1.1 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指令輸出舉例

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

第一行任務(wù)隊列信息

第二行進程信息
第三行CPU信息
第四行物理內(nèi)存信息
第五行交換分區(qū)信息

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)先級

優(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文件
    1. 使用系統(tǒng)定時任務(wù),讓系統(tǒng)在指定的時間執(zhí)行某個后臺命令
    1. 使用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é)果

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

proc和memory含義
swap和io含義
system和CPU含義

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為單位顯示
free命令模擬運行結(jié)果
free命令輸出結(jié)果的含義

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)容
at命令中的時間

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ù)

每個*的含義

每個*的含義.png

特殊符號的含義
*的例子
crontab命令的例子

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 中的配置文件

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配置文件

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í)行文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容