進程管理:
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,...]
[-g pgrp,...]
[-s sid,...] [-u euid,...] [-U uid,...] [-G
gid,...]
[-t term,...] [pattern]
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 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
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值
( #爲某數值 )
renice # PID 調整一個已經起來的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次