天天看點

linux系統的程序管理機制,Linux - 系統 - 程序管理

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 &:表示背景執行,而且使用者登出後仍然運作着;

:正常終止一個前台運作的程序;

:強行終止一個前台運作的程序;

:挂起一個正在前台運作的程序;

:挂起終端;

:解除挂起終端;cmd

指令 [cmd] &

# 終端休眠100秒,排程到背景運作

sleep 100 &;

指令 nohup [cmd] &

# 終端休眠100秒,排程到背景運作,且使用者登出後仍然運作着

nohup sleep 100 &;

指令 jobs

# 檢視正在運作的做業

jobs;

# 顯示程序PID

jobs -l;

[[email protected] ~]# jobs -l

[1]+ 1810 完成 sleep 100

[1] 是做業序号;

1810 是程序PID;

sleep 100 是指令;

指令 fg %

# 将做業[1]排程到前台終端運作

fg %1;

指令 bg %

# 将做業[1]排程到背景終端運作

bg %1;

指令 kill %

# 将做業[1]程序殺死

kill %1;