在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 工作管理與進程管理
Linux 學習記錄--開機掛載錯誤
日志系統(tǒng)
數(shù)據(jù)流重定向
內存交換空間的構建
文件系統(tǒng)簡介
Linux 學習記錄--軟件安裝 RPM|SRPM|YUM
文件特殊權限
目錄配置 FHS
文件內容查閱
Boot Loader
文件壓縮
Linux 學習記錄--文件權限
Linux 命令縮寫
命令與文件的查詢
文件|目錄的默認權限與隱藏權限
shell script
服務
Linux 學習記錄--程序編譯與函數(shù)庫
正則表達式與其應用
關機相關指令
shell
vim 與 vi 常用命令
系統(tǒng)調用:進程控制
文件系統(tǒng)簡單操作
磁盤掛載與卸載
有名管道通訊
磁盤分區(qū),格式化與檢驗
工作管理與進程管理
匿名管道通訊
Linux 學習記錄--啟動流程
文件與目錄管理
管道命令
命名別名與歷史命令
文件備份|還原
shell變量
Linux 學習記錄--ACL 權限控制
內核|內核模塊編譯
文件管理相關系統(tǒng)編程

工作管理與進程管理

始終不能明白進程的正確理解和定義。就說我自己的理解吧
進程是 CPU 調度的基本單位,對于 unix like 來說,當我們登錄取得 bash 時,系統(tǒng)會根據(jù)用戶的uid 和 gid 分配給我們一個進程,在當前 bash 下,這個進程就是所有進程的父進程,當我們執(zhí)行一些命令時,每個命令都由一個新的子進程來完成。

工作管理

在單一終端下,可以同時進行多項工作,如:一邊復制數(shù)據(jù),一邊查詢文件。每一項工作都由獨立的子進程來完成,他們的父進程就是當前終端對應 bash 的那個進程。

對于終端來說分為前臺和后臺
前臺:你可以控制于執(zhí)行命令的那個環(huán)境(串行工作)
后臺:可以自行運行的工作,無法使用 ctrl+c 終端它(并行工作)

如果所有的工作都由前臺來做,那么必須等一個工作處理完成才能進行下一個工作,這樣做效率很低,因此我們可以把一些不需要人工交互的工作放到后臺,使多個工作可以共同執(zhí)行

說明:前臺和后臺是針對同一個終端來說,tty1環(huán)境是無法管理 tty2的

查看目前的后臺工作狀態(tài)(jobs)

語法:jobs[-lrs]
選項與參數(shù)
-l:列出工作與命令串之外,同時列出 PID
-r:僅列出后臺 run 的工作
-s: 僅列出后臺 stop 的工作

舉例

[root@localhost tmp]# jobs -l
[1]-  9154 停止                  vim newfile.txt
[2]+  9368 停止                  find / -print
[3]   9374 Running                 tar -jcpP -f /tmp/etc1.tar.bz2 /etc &

以上輸出的格式為:工作序號|順序 PID 狀態(tài) 命令
順序:分為(+,-,空白),+號代表最后一個被放到后臺的工作;-號代表倒數(shù)第二個被放到后臺的工作,倒數(shù)第三個及以后用空白

直接將命令放到后臺執(zhí)行 ( &)

[root@localhost tmp]# tar -jcpP -f/tmp/etc.tar.bz2 /etc &
[2] 8985 其中【2】表示工作號,8985表示處理這個工作的子進程號
如果我們將壓縮信息顯示出來
[root@localhost tmp]# tar –jcpP -v -f/tmp/etc.tar.bz2 /etc &
雖然這個工作在后臺進行,但是輸出信息還是會在前臺輸出的,因此可以應用數(shù)據(jù)流重定向將輸出信息寫到文件

將目前工作放到后臺并暫停(ctrl+z)

[root@localhost tmp]# vim newfile.txt
=>按下 ctrl+z
[1]+ Stopped vimnewfile.txt

將后臺工作拿到前臺來處理(fg)

語法:fg %工作序號
fg –
fg +

將后臺工作由停止變?yōu)檫\行(bg)

語法:fg %工作序號

舉例

[root@localhost tmp]# jobs -l;bg %2;jobs -l
[1]-  9154 停止                  vim newfile.txt
[2]+  9729 停止                  tar -jcpP -f /tmp/etc1.tar.bz2 /etc
[2]+ tar -jcpP -f /tmp/etc1.tar.bz2 /etc &
[1]+  9154 停止                  vim newfile.txt
[2]-  9729 Running                 tar -jcpP -f /tmp/etc1.tar.bz2 /etc &

后臺任務管理(kill)

語法:kill –signal %工作序號
Sighal:
1:重新讀取一次參數(shù)的配置文件
2:代表有 ctrl+c 同樣的操作
9:立刻強制刪除一個工作
15.以正常方式終止工作

說明:unix like 中的信號64個,比較復雜以后在整體學習

舉例

[root@localhost tmp]# jobs -l;kill -9 %1; jobs -l
[1]+  已殺死               tar -jcpP -f /tmp/etc1.tar.bz2 /etc

進程管理

進程的查看

靜態(tài)進程查看(ps)

語法
ps aux|ps -lA 查看系統(tǒng)所有進程數(shù)據(jù)
ps –l 查看自己相關進程
ps –axjf 查看進程樹

舉例

[root@localhost ~]# su -l tkf
[tkf@localhost tmp]$ tar -cjPp -f ./home.bz2 /home 

[1]+  Stopped                 tar -cjPp -f ./home.bz2 /home

查看 ps -l
[tkf@localhost tmp]$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S   500 10894 10893  0  75   0 -  1224 wait   pts/1    00:00:00 bash
0 T   500 10951 10894  0  78   0 -  1224 finish pts/1    00:00:00 tar
0 T   500 10952 10951  0  78   0 -  2289 finish pts/1    00:00:01 bzip2

查看 ps -lA
[tkf@localhost tmp]$ ps –lA
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0    1     0  0  75   0 -   544 stext  ?        00:00:00 init
0 R     0 10691    1  0  75   0 - 20262 stext  ?        00:00:01 gnome-terminal
4 S     0 10694 10691  0  77   0 -   649 stext  ?        00:00:00 gnome-pty-help
0 S     0 10695 10691  0  76   0 -  1253 wait   pts/1    00:00:00 bash
4 S     0 10893 10695  0  78   0 -  1319 wait   pts/1    00:00:00 su
4 S   500 10894 10893  0  75   0 -  1224 wait   pts/1    00:00:00 bash
0 T   500 10951 10894  0  78   0 -  1224 finish pts/1    00:00:00 tar
0 T   500 10952 10951  0  78   0 -  2289 finish pts/1    00:00:01 bzip2

處理 Init 程序的進程為所有進程的父進程 tar 命令內部會調用 bzip2命令因此產(chǎn)生10952進程,且bzip2進程的父進程就是 tar 進程

l F:代表這個程序旗標 (process flags),說明這個程序的總結權限,常見號碼有:
若為 4 表示此程序的權限為 root ;
若為 1 則表示此子程序僅進行復制(fork)而沒有實際運行(exec)。
l S:代表這個程序的狀態(tài) (STAT),主要的狀態(tài)有:
R (Running):該程序正在運行中;
S (Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal)。
D :不可被喚醒的睡眠狀態(tài),通常這支程序可能在等待 I/O 的情況(ex>列印)
T :停止狀態(tài)(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態(tài);
Z (Zombie):僵尸狀態(tài),程序已經(jīng)終止但卻無法被移除至內存外。
l UID/PID/PPID:代表[此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼]
l C:代表 CPU 使用率,單位為百分比;
l PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所運行的優(yōu)先順序,數(shù)值越小代表該程序越快被 CPU 運行。
l ADDR/SZ/WCHAN:都與內存有關,ADDR 是 kernel function,指出該程序在內存的哪個部分,如果是個 running 的程序,一般就會顯示[- ] / SZ 代表此程序用掉多少內存 / WCHAN 表示目前程序是否運行中,同樣的,若為 - 表示正在運行中。
l TTY:登陸者的終端機位置,若為遠程登陸則使用動態(tài)終端介面 (pts/n);
l TIME:使用掉的 CPU 時間,注意,是此程序實際花費 CPU 運行的時間,而不是系統(tǒng)時間;
l CMD:簡單描述命令

查看 ps aux
[tkf@localhost tmp]$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2176   640 ?        Ss   08:50   0:00 init [5]  
root     10691  0.1  0.8  81336 17104 ?        Sl   15:03   0:04 gnome-terminal
root     10694  0.0  0.0   2596   676 ?        S    15:03   0:00 gnome-pty-helper
root     10695  0.0  0.0   5012  1476 pts/1    Ss   15:03   0:00 bash
root     10893  0.0  0.0   5276  1312 pts/1    S    15:16   0:00 su -l tkf
tkf      10894  0.0  0.0   4896  1444 pts/1    S    15:16   0:00 -bash
tkf      10951  0.0  0.0   4896   992 pts/1    T    15:18   0:00 tar -cjPp -f ./home.bz2 /home
tkf      10952  0.0  0.3   9156  7792 pts/1    T    15:18   0:01 bzip2

USER:該 process 屬於那個使用者帳號的?
PID :該 process 的程序識別碼。
%CPU:該 process 使用掉的 CPU 資源百分比;
%MEM:該 process 所占用的實體內存百分比;
VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
RSS :該 process 占用的固定的內存量 (Kbytes)
TTY :該 process 是在那個終端機上面運行,若與終端機無關則顯示 ?,另外, tty1-tty6 是本機上面的登陸者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡連接進主機的程序。
STAT:該程序目前的狀態(tài),狀態(tài)顯示與 ps -l 的 S 旗標相同 (R/S/T/Z)
START:該 process 被觸發(fā)啟動的時間;
TIME :該 process 實際使用 CPU 運行的時間。
COMMAND:詳細描述命令

查看 ps axjf
[tkf@localhost tmp]$ ps axjf
PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    1 10691  4628  4628 ?           -1 Sl       0   0:06 gnome-terminal
10691 10694  4628  4628 ?           -1 S        0   0:00  \_ gnome-pty-helper
10691 10695 10695 10695 pts/1    11743 Ss       0   0:00  \_ bash
10695 10893 10893 10695 pts/1    11743 S        0   0:00      \_ su -l tkf
10893 10894 10894 10695 pts/1    11743 S      500   0:00          \_ -bash
10894 10951 10951 10695 pts/1    11743 T      500   0:00              \_ tar -cjPp -f ./home.bz2 /home
10951 10952 10951 10695 pts/1    11743 T      500   0:01              |   \_ bzip2

動態(tài)進程查看(top)

語法:top[-d 數(shù)字] [-bn 數(shù)字] [-p pid]
選項與參數(shù)
-d:動態(tài)刷新時間間隔
-b:以批次方式執(zhí)行,與-n 連用
-n:執(zhí)行次數(shù)
-p:查看單個進程信息

在top 執(zhí)行過程中可以使用的命令
?:顯示幫助文檔
P:以 CPU 使用資源排序
M: 以 mem 使用資源排序
N: 以 PID 排序
T: 以 TIME+排序
k:給某個 PID 一個信號
r:給某個 PID 設置新的 Ni 值
q:離開
Z|z:設置|取消顏色
B|b:設置|取消關鍵字加粗
W:將設置信息寫入配置文件
n:顯示進程數(shù)量
c:顯示完整的 command
u:設置查看某個 USER 的進程

舉例

[tkf@localhost ~]$ top

top - 10:08:12 up 55 min,  2 users,  load average: 0.01, 0.01, 0.00
Tasks: 162 total,   1 running, 160 sleeping,   0 stopped,   1 zombie
Cpu(s):  1.5%us,  0.7%sy,  0.0%ni, 97.7%id,  0.0%wa,  0.2%hi,  0.0%si,  0.0
Mem:   2074908k total,   640268k used,  1434640k free,    41856k buffers
Swap:  1020088k total,        0k used,  1020088k free,   387260k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
4784 root      15   0 64580  17m  10m S  5.4  0.9   0:06.63 gnome-terminal                                                                    
4502 root      16   0  148m  11m 5964 S  0.6  0.6   0:12.18 Xorg 

特殊字段說明
us 用戶空間占用 CPU 百分比
sy 內核空間占用 CPU 百分比
ni 用戶進程空間內改變過優(yōu)先級的進程占用 CPU 百分比
id 空閑 CPU 百分比
wa 等待輸入輸出的 CPU 時間百分比
hi 硬件中斷
si 軟件中斷
st: 實時

USER:該 process 所屬的使用者;
PR :Priority 的簡寫,程序的優(yōu)先運行順序,越小越早被運行;
NI :Nice 的簡寫,與 Priority 有關,也是越小越早被運行;
%CPU:CPU 的使用率;
%MEM:內存的使用率;
TIME+:CPU 使用時間的累加;

進程樹查看(pstree)

語法:pstree[-A|-U] [-up]
選項與參數(shù)
-A :各程序樹之間的連接以 ASCII 字節(jié)來連接;
-U :各程序樹之間的連接以 unicode 的字節(jié)來連接。在某些終端介面下可能會有錯誤;
-p :并同時列出每個 process 的 PID;
-u :并同時列出每個 process 的所屬帳號名稱。

舉例

[tkf@localhost ~]$ pstree -Apu
init(1)-+-/usr/bin/sealer(4774)
        |-acpid(3891)
        |-atd(4227)
        |-auditd(3599)-+-audispd(3601)---{audispd}(3602)
        |              `-{auditd}(3600)
        |-automount(3994)-+-{automount}(3995)
        |                 |-{automount}(3996)
        |                 |-{automount}(3999)
        |                 `-{automount}(4002)

進程的管理

進程的管理就是給進程發(fā)送一個信號,告訴進程做什么事情
語法:kill –signal PID
killall [-iIe] –signal 服務名稱

說明 使用 kill 需要知道 PID,killall 根據(jù)服務發(fā)送信號

舉例1:給 bash 進程發(fā)送信號1
[root@localhost ~]# kill -1 $(ps aux |awk '{print $11 "" $2}'|grep '^bash'|awk '{print $2}')

舉例2:給 bash 這個服務對應的進程發(fā)送信號1
[root@localhost ~]# killall -i -1 bash Kill bash(10202) ? (y/N)

設置進程優(yōu)先級(nice)

進程的優(yōu)先級相關的只要是 PRI 與 NI 這兩個值, 數(shù)值越小優(yōu)先級越高,PRI 是系統(tǒng)內核設置的,用戶無法設置,用戶只能是指 NI 值來改變進程的優(yōu)先級
進程的優(yōu)先級=PRI+NI

在執(zhí)行命令時給予新的 NI 值
語法:nice –n 數(shù)值 命令
數(shù)值的范圍從-20~19

設置以及啟動的進程
語法:renice 數(shù)值 PID

舉例

[root@localhost ~]# nice -n 4 vim &
[1] 11467
[root@localhost ~]# ps -l|grep 'vim'
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 T     0 11467 10202  0  81   4 -  2525 finish pts/1    00:00:00 vim

[root@localhost ~]# renice -6 $(ps -l|grep 'vim'|awk '{print $4}')
11467: old priority 4, new priority -6
[root@localhost ~]# ps -l|grep 'vim'
0 T     0 11467 10202  0  71  -6 -  2525 finish pts/1    00:00:00 vim

查詢文件|目錄與進程使用關系

我們經(jīng)常會遇到這種情況,要刪除某個文件或卸載某個文件系統(tǒng),提示我們正在使用,無法被刪除,此時我們就需要找到哪些進程正在使用它們,“殺死“這些進程后我們才能刪除這些文件
查詢文件被哪個進程使用(fuser)

語法:fuser[-umv] [-ki -signal] file/dir
選項與參數(shù)
-u:列出 user
-m:會查詢后面文件所在的文件系統(tǒng)
-v:列出詳細命令
-k:找出使用該文件 PID 并試圖發(fā)送 SIGKILL 這個信號給這個進程
-i:與-k 連用,發(fā)送信號之前詢問用戶

舉例

[root@localhost tmp]# tar -jtv -f ./etc.tar.bz2 > ./newfile.txt 
= >按下 ctrl+z 工作在后臺暫停
[1]+  Stopped                 tar -jtv -f ./etc.tar.bz2 > ./newfile.txt
[root@localhost tmp]# fuser -uv ./etc.tar.bz2 
                     USER        PID ACCESS COMMAND
./etc.tar.bz2:       root      11822 f.... (root)bzip2
= >這個文件正在被11822這個進程所使用

查詢進程正在使用的文件(lsof)

語法:lsof [-aUu][+d]
選項與參數(shù)
-a :多項數(shù)據(jù)需要同時成立才顯示出結果時
-U :僅列出 Unixlike 系統(tǒng)的 socket 文件類型;
-u :后面接 username,列出該使用者相關程序所開啟的文件;
+d :后面接目錄,找出某個目錄底下已經(jīng)被開啟的文件

舉例:查看 tar 對應經(jīng)常所打開的文件

[root@localhost tmp]# lsof |grep '^tar'
COMMAND     PID      USER   FD      TYPE     DEVICE SIZE/OFF       NODE NAME
tar       11821      root  cwd       DIR        8,2     4096     745569 /tmp
tar       11821      root  rtd       DIR        8,2     4096          2 /
tar       11821      root  txt       REG        8,2   229652    1199406 /bin/tar
……..
tar       11821      root    2u      CHR      136,1      0t0          3 /dev/pts/1
tar       11821      root    3r     FIFO        0,6      0t0      38124 pipe

查詢正在執(zhí)行進程的 PID

語法:pidof [-sx] 程序名
選項與參數(shù)
-s:僅列出一個 PID
-x:列出程序所對應進程的父進程的 PID

舉例
[root@localhost tmp]# ps aux |grep $(pidoftar)|grep -v 'grep' root 11821 0.0 0.0 4880 944 pts/1 T< 13:09 0:00 tar -jtv -f./etc.tar.bz2

上一篇:Boot Loader下一篇:命令與文件的查詢