進程管理:
process instance
Memory ,
32bit 4G, 線性內存
PID 進程號
PPID 父進程
進程之間是相互獨立的!
每一個進程都需要一個進程的結構體struct!
init,1,fork
數據結構:
struct
進程狀態:
running運行
ready就緒
sleep
interrupable 可中斷的睡眠
uniterruptable 不可中斷的睡眠
stop:阻塞
zombie:僵死
pstree
ps:
BSD
Sysv
a跟終端相關的進程
u顯示詳細信息
x跟終端無關的進程
aux可以組合起來用!
j顯示進程父子關係
STAT:進程狀態
R 運行態
S 可中斷的睡眠態
D 不可中斷的睡眠態
T 停止態
Z 僵死態
< 高優先順序的進程
N 低優先順序的進程
s 會話進程的發起者
l 多線程的進程
前台進程
ps參數:
-e 選擇所有進程
-f 顯示詳細信息
-ef 組合起來使用 顯示所有進程詳細信息
兩個組合
ps axjf
ps -ejH
-o format 用戶自定義顯示風格
例子:
ps aox pid,ppid
watch 命令周期顯示刷新的結果
watch [-dhvt] [-n <seconds>] [--differences[=cumula-
tive]] [--help] [--interval=<seconds>] [--no-title]
[--version] <command>
eg:
watch -n 1 'ps aox pid' 一秒鐘刷新顯示命令結果
pgrep PATTERN
NAME
pgrep, pkill - look up or signal processes based on
name and other attributes
SYNOPSIS
pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,...]
pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g
pgrp,...]
[-s sid,...] [-u euid,...] [-U uid,...] [-G
gid,...]
[-t term,...] [pattern]
pidof PATTERN
NAME
pidof -- find the process ID of a running program.
SYNOPSIS
pidof [-s] [-c] [-x] [-o omitpid] [-o omitpid..]
program [program..]
kill -l 查看信號
man 7 signl 查看信號
signal
1)SIGHUP 讓進程或服務重讀其配置文件卻不用重啟
2)SIGINT ctrl c
9) SIGKILL 強制殺死進程
15)SIGTERM 終止進程
18) SIGCONT 繼續進程
19) SIGSTOP 停止進程
使用方法:
kill -SIGTERM/-15 PID
例子:
kill -SIGTERM/-15 3133
killall -9 command (-9=SIGKILL)
即:killall -SIGKILL command 強制殺死進程
pkill -SIGNAL [options] PATTERN
process ,優先順序
優先順序決定了進程獲得的時間片長短!
靜態優先順序,手動調整的
動態優先順序,系統內核計算得來的
cpu密集型進程,優先順序較I/O稍低,但是它獲取的時間片較長
I/O密集型進程,優先順序稍高,但是的獲取的時間片較短
靜態優先順序的調整是通過nice值來調整的;
nice值:-20 -- 19 :共40個值
優先順序:139 --100 :共40個值
nice數值越大優先順序越低!
默認值的nice為0 對應的優先順序值為120!
普通用戶只能將自己的nice值調高,即降低自己的優先順序!
nice -n # command 指定一個將要啟動的nice值
ps -eo comm ,nice ,pid
查看命令的nice 值和PID
eg:
[root@localhost wangzhen]# ps -eo pid,nice,command
PID NI COMMAND
1 0 init [5]
2 - [migration/0]
3 19 [ksoftirqd/0]
4 - [watchdog/0]
5 - [migration/1]
6 19 [ksoftirqd/1]
7 - [watchdog/1]
8 -5 [events/0]
9 -5 [events/1]
renice 5 2232
重新指定一個已經起來的進程的nice值
nice -n -5 ftp 172.16.0.1
手動指定一個新的ftp進程的nice 值為-5
作業和進程
job
前台作業:執行開始后結束之前始終佔據了命令提示符的進程
後天作業:當進程開始後會立即釋放命令提示符,無論此進程是否結束
前台-->後台:ctrl Z
後台-->前台:fg
jobs 可顯示後台中掛起的作業
[2] vim sh.txt
fg %2 調出2號特定作業(%可省略)
bg #(#為jobs中的後台作業號),可以將此項作業調用至後台中運行;
kill %# 這裡的%不可省略,用來刪除此項後台作業進程!
nohup command & 進程跟終端無關,啟動后直接送到後台運行;
進程查看命令:
top
top -d 10 延遲10秒鐘刷新顯示進程
eg:
[root@localhost ~]# top -d 10
top - 01:20:35 up 20:29, 2 users, load average: 0.03, 0.01, 0.00
Tasks: 122 total, 1 running, 121 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.5%sy, 0.0%ni, 97.3%id, 0.2%wa, 0.0%hi, 1.7%si, 0.0%st
Mem: 255368k total, 239800k used, 15568k free, 6432k buffers
Swap: 522104k total, 132k used, 521972k free, 93036k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
3585 dbus 18 0 13124 1200 864 S 1.9 0.5 0:06.69 dbus-daemon
數字1鍵 可以顯示cpu個數;
m鍵 按照內存的使用排序
P鍵 按照cpu佔據的百分比 排序
-b -n 3
-b 表示在批處理模式下,-n 3表示在批處理模式下刷新採樣113次
[火星人 ] linux 進程管理實例已經有490次圍觀