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;