linux-5. 系統管理(進程,前後臺,系統資源,定時任務)

1. 進程管理

1.1 查看系統中所有進程

  1. 顯示所有進程
ps aux # 查看系統中所有進程, 使用BSD操作系統格式
# a: 查看所有前臺進程
# x:查看所有後臺進程
# u:顯示這個進程是由哪個用戶產生的
# 輸出
# USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
# USER: 該進程是由哪個用戶產生的;
# PID: 進程的ID號;
# %CPU: 該進程佔用CPU資源的百分比,佔用越高,進程越耗費資源;
# %MEM: 該進程佔用物理內存的百分比,佔用越高,進程越耗費資源;
# VSZ: 該進程佔用虛擬內存的大小,單位KB;
# RSS: 該進程佔用實際物理內存的大小,單位KB;
# TTY: 該進程是在哪個終端中運行的。其中tty1-tty7代表本地控制檯終端,tty1-tty6是本地的字符界面終端,
# tty7是圖形終端。pts/0-255代表虛擬終端(遠程登錄終端)。ALT+F1-F7:可切換終端tty1-tty7;
# STAT: 進程狀態。常見的狀態有:R: 運行、S: 睡眠、T: 停止狀態、s: 包含子進程、+: 位於後臺;
# START: 該進程的啓動時間;
# TIME: 該進程佔用CPU的運算時間,注意不是系統時間;
# COMMAND: 產生此進程的命令名。

ps -le # 查看系統中所有進程, 使用Linux標準命令格式
# -l:顯示更加詳細的信息
# -e:顯示所有進程
  1. 查看進程樹
pstree [option]
-p: 顯進程的PID
-u: 顯示進程的所屬用戶

1.2 查看系統健康狀態

top [option]
# -d: 指定top命令每隔幾秒更新。默認是3s

在top命令的交互模式當中可以執行的命令:
?/h: 顯示交互模式的幫助
P: 以CPU使用率排序,默認就是此項
M: 以內存的使用率排序
N: 以PID排序
q: 退出top

輸出:

top - 10:19:02 up 13:23, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0
si, 0.0 st KiB Mem: 4046536 total, 562324 used, 3484212 free,
5092 buffers KiB Swap: 1045500 total, 59248 used, 986252 free.
424300 cached Mem

第一行信息爲任務隊列信息
第二行爲進程信息
第三行爲CPU信息
第四行爲物理內存信息
第五行爲交換分區信息

內容 說明
10:19:02 系統當前時間
up 13:23 系統的運行時間,本機已經運行13小時23分鐘
3 users 當前登錄了3個用戶
load average: 0.00, 0.00, 0.00 系統在之前1分鐘,5分鐘,15分鐘的平均負載,一般(單核)認爲小於1時,負載較小,如果大於1,系統已經超出負荷
Tasks: 105 total 系統中的進程總數
1 running 正在運行的進程數
104 sleeping 睡眠的進程
0 stopped 正在停止的進程
0 zombie 殭屍進程,如果不是0,需要手工檢查殭屍進程
0.0 us 用戶模式佔用的CPU百分比
0.0 sy 系統模式佔用的CPU百分比
0.0 ni 改變過優先級的用戶進程佔用的CPU百分比
100.0 id 空閒CPU的CPU百分比(注意看這項)
0.0 wa 等待輸入/輸出的進程的佔用CPU百分比
0.0 hi 硬中斷請求服務佔用的CPU百分比
0.0 si 軟中斷請求服務佔用的CPU百分比
0.0 st Steal time 虛擬時間百分比,就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比
4046536 total 物理內存的問題,單位KB
562324 used 已經使用的物理內存數量
3484212 free 空閒的物理內存數量
5092 buffers 作爲緩衝的內存數量
1045500 total 交換分區(虛擬內存)的總大小
59248 used 已經使用的交換分區的大小
986252 free 空閒交換分區的大小
424300 cached Mem 作爲緩存的交換分區的大小

1.3 終止進程

  1. kill 命令
kill -l # 查看可用的進程信號
# kill 常用的信息是常用的是1,9,15,默認不寫是15
kill -1 22354 # 重啓進程
kill -9 22368 # 強制殺死進程
kill 22369 # 正常殺死進程 
kill -15 22369 # 正常殺死進程

在這裏插入圖片描述
2. killall 命令:按照進程名殺死進程

# killall [option][信號]進程名
# -i:交互式,詢問是否要殺死某個進程
# -I:忽略進程名的大小寫
killall -9 httpd # 將httpd進程殺死
  1. pkill命令:按照進程名殺死進程
# pkill [option][信號]進程名
# -t:按照終端號踢出用戶
pkill -9 httpd # 和killall -9 httpd 功能一樣
# 與killall不同的是,pkill可以按照終端號踢出用戶

w # 使用命令w查詢本機已經登錄的用戶
pkill -t -9 pts/1 # 強制殺死從pts/1虛擬終端登錄的進程

2. 工作管理

# 把進程放入後臺的方法
# 1. 在進程最報加入&, 此種方法放入後臺的命令,命令還在執行
tar -zcf etc.tar.gx /etc &
# 2.在命令執行的過程中,按下Ctrl+z快捷鍵,此種方法放入後臺的命令,命令暫停運行
top

# 查看後臺的工作
jobs -l
# -l: 顯示工作的PID
# "+"號代表最近一個放入後臺的工作,也是工作恢復時,默認恢復的工作。“-”號代表倒數第二個放入後臺的工作

# 將後臺暫停的工作恢復到前臺執行
fg %工作號
# %工作號: %號可以省略,但是注意工作號和PID的區別

# 將後臺暫停的工作恢復到後臺執行
bg %工作號
# 後臺恢復執行的命令,是不能和前臺有交互的,否則不能恢復到後臺執行

3. 系統資源查看

  1. vmstat命令監控系統資源
# vmstat [刷新延時][刷新次數]
vmstat 1 3  # 每隔1s刷新1次,共3次,輸出如下:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  57768 3482520   6008 424732    0    1     2     2   11   17  0  0 99  0  0
 0  0  57768 3482496   6008 424764    0    0     0     0   55   89  0  0 100  0  0
 0  0  57768 3482504   6008 424764    0    0     0     0   31   53  0  0 100  0  0
  1. dmesg開機時內核檢測信息
dmesg | grep CPU # 查看CPU信息
dmesg | grep etho # 查看網上信息
  1. free命令查看內存使用狀態
# free [-b|-k|-m|-g]
# -b:以字節爲單位顯示
# -k:以KB爲單位顯示,默認就是以KB爲單位顯示
# -m: 以MB爲單位顯示
# -g: 以GB爲單位顯示
free -m 
# 輸出
             total       used       free     shared    buffers     cached
Mem:          3951        554       3396          1          6        415
-/+ buffers/cache:        133       3818
Swap:         1020         54        966

# used的大小是包含了buffers和cached的大小
# 緩存和緩衝的區別
# 緩存(cache):用來加速數據從硬盤中“讀取”的
# 緩衝(buffers):用來加速數據“寫入”硬盤的
  1. 查看CPU信息
# CPU更加詳細的信息:/proc/cpuinfo
cat /proc/cupinfo
  1. uptime命令
# 顯示系統的啓動時間和平均負載,也就是top命令的第一行,w命令也可以看到這個數據
uptime
  1. 查看系統與內核相關信息
# uname [option]
# -a: 查看系統所有相關信息
# -r: 查看內核版本
# -s: 查看內核名稱
  1. 判斷當前系統的位數
# 沒有直接的命令來查看, 通過file 外部命令來查看
file /bin/ls
# 從輸出中可以看出是64-bit
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped
  1. 查詢當前Linux系統的發行版本
lsb_release -a
  1. 列出進程打開或使用的文件信息
# lsof [option]
# -c 字符串: 只列出以字符串開頭的進程打開的文件
# -u 用戶名: 只列出某個用戶的進程打開的文件
# -p pid:列出某個PID進程打開的文件
lsof -p 6119 # 查看6119進程打開的文件
lsof -c init 

4. 系統定時任務

crond服務管理與訪問控制(debian )

啓動:/etc/init.d/cron start
關閉:/etc/init.d/cron stop
重啓:/etc/init.d/cron restart
        有的系統可能init.d目錄下沒有 cron 而只有 crond,其實也一樣,只不過把cron換爲crond:
啓動:/etc/init.d/crond start
關閉:/etc/init.d/crond stop
重啓:/etc/init.d/crond restart

# 安裝
apt-get install cron
# crond 啓動命令
service cron restart 
# 或者
/etc/init.d/cron restart 
# 檢查狀態
service cron status

# 將cron變成自啓動命令
chkconfig cron on 

crontab [option]
# -e: 編輯crontab定時任務
# -l:查詢crontab任務
# -r: 刪除當前用戶所有的crontab任務
項目 含義 範圍
第一個“*” 一個小時當中的第幾分鐘 0-59
第二個“*” 一天當中的第幾小時 0-23
第三個“*” 一個月當中的第幾天 1-31
第四個“*” 一年當中的第幾個月 1-12
第五個“*” 一週當中的星期幾 0-7(0和7都代表星期日)

特殊符號

特殊符號 含義
* 代表作保時間。比如第一個“*”就代表一個小時中每分鐘都執行一次的意思
, 代表不連續的時間。比如“0 8, 12, 16 * * * 命令” , 就代表在每天的8點0分,12點0分,16點0分都執行一次命令
- 代表連續的時間範圍。比如“0 5 * * 1-6 命令“ ,代表在週一到週六的凌晨5點0分執行命令
*/n 代表每隔多久執行一次。比如"*/10 * * * * 命令 ",代表每隔10分鐘就執行一遍命令
# 舉例
*/5 * * * * /bin/echo "hello world"  >> /tmp/test # 每隔5分鐘將"hello world"追加到/tmp/test"
5 5 * * 2 /sbin/shutdown -r now # 每週二的5點5分關機
# 每月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因爲他們定義的都是天。
# 非常容易讓管理員混亂
0 0 1,15 * 1 命令
發佈了140 篇原創文章 · 獲贊 44 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章