Linux - 系統 - 進程管理

吳宏東 - 記於2018年06月19日 - 博客 https://segmentfault.com/u/wu...shell

Linux 進程管理

進程概述

父子進程

PID:進程的惟一標識號;
systemd:系統啓動後第一個進程,PID=1;
login:systemd進程會建立login進程,因此,systemd是login的父進程,反之login是systemd的子進程;
shell:shell(默認是bash)是login進程建立的,其後用戶的全部進程都由該進程派生建立;segmentfault

進程標識

RUID:實際用戶識別號;
RGID:實際組識別號;
EUID:有效用戶識別號;
EGID:有效組識別號;
RUID和RGID的做用是識別正在運行此進程的用戶和組;
若是程序沒有設置SUID和SGID,那麼EUID和EGID就是RUID和RGID,而RUID和RGID就是用戶和組的UID和GID;bash

進程類型

交互進程:由shell啓動的進程,能夠前臺或後臺運行;
批處理進程:不與特定終端關聯,加入後臺的計劃隊列順序處理;
守護進程:系統初始化後,須要運行於後臺的進程;命令行

查看進程

命令 ps -aux

[-a]:顯示全部進程;
[-u]:顯示用戶名和啓動時間等信息;
[-x]:顯示沒有控制終端的進程;
[-w]:顯示完整命令行;code

# 查找關於openshift的進程
ps -aux|grep openshift;
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 128020  6620 ?        Ss   10:33   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    10:33   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    10:33   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   10:33   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    10:33   0:01 [kworker/u256:0]

USER:用戶名;
PID:進程號;
%CPU:佔用CPU時間與總時間的百分比;
%MEM:佔用內存與系統內存總量的百分比;
VSZ:佔用虛擬內存空間,單位KB;
RSS:佔用內存空間,單位KB;
TTY:從哪一個終端啓動;
STAT:進程當前狀態;
START:開始執行時間;
TIME:自啓動以來佔用CPU的總時間;
COMMAND:啓動命令名; 隊列

狀態:R 執行中;S 睡眠;T 追蹤或中止;Z 殭屍進程;< 高優先級;N 低優先級;進程

命令 pgrep

經過模糊匹配模式,查找進程的ID內存

# 查找關於openshift的進程ID
pgrep openshift;

命令 pidof

經過模糊匹配模式,查找進程的IDget

# 查找關於openshift的進程ID
pidof openshift;

殺死進程

命令 kill

# 殺死指定PID爲10086的進程
kill 10086;
# 強制殺死進程
kill -9 10086;
# 殺死進程名爲openshift的進程
kill openshift;
kill -9 $(pgrep openshift);

命令 killall

# 殺死進程名爲openshift的全部進程
killall openshift;

命令 pkill

# 殺死進程名爲openshift的全部進程
pkill openshift;

做業進程

cmd &:表示後臺執行;
nohup cmd &:表示後臺執行,而且用戶註銷後仍然運行着;
<Ctrl+D>:正常終止一個前臺運行的進程;
<Ctrl+C>:強行終止一個前臺運行的進程;
<Ctrl+Z>:掛起一個正在前臺運行的進程;
<Ctrl+S>:掛起終端;
<Ctrl+Q>:解除掛起終端;cmd

命令 [cmd] &

# 終端休眠100秒,調度到後臺運行
sleep 100 &;

命令 nohup [cmd] &

# 終端休眠100秒,調度到後臺運行,且用戶註銷後仍然運行着
nohup sleep 100 &;

命令 jobs

# 查看正在運行的做業
jobs;
# 顯示進程PID
jobs -l;
[root@master ~]# jobs -l
[1]+  1810 完成                  sleep 100

[1] 是做業序號;
1810 是進程PID;
sleep 100 是命令;

命令 fg %

# 將做業[1]調度到前臺終端運行
fg %1;

命令 bg %

# 將做業[1]調度到後臺終端運行
bg %1;

命令 kill %

# 將做業[1]進程殺死
kill %1;
相關文章
相關標籤/搜索