Linux系统的进程管理
Linux系統(tǒng)的進(jìn)程管理
- 一、系統(tǒng)進(jìn)程介紹
- 1.進(jìn)程概念
- 2.進(jìn)程特點(diǎn)
- 3.進(jìn)程類型
- 二、查看系統(tǒng)進(jìn)程
- 1.PS命令
- 2.查看系統(tǒng)進(jìn)程
- 3.ps aux結(jié)果說明
- 4.top命令
- ①top命令使用方法
- ② top命令選項(xiàng)
- 5.pgerp命令
- 6.pidof
- 三、signal信號(hào)的管理
- 1.signal信號(hào)的介紹
- 2.給進(jìn)程發(fā)送信號(hào)
- 3.man 7 signal
- 4.常用信號(hào)
- 四、進(jìn)程的優(yōu)先級(jí)
- 1.進(jìn)程優(yōu)先級(jí)介紹
- 2.查看進(jìn)程優(yōu)先級(jí)
- 3.優(yōu)先級(jí)修改
- ①當(dāng)啟動(dòng)進(jìn)程時(shí)
- ②當(dāng)啟動(dòng)進(jìn)程后
- 五、作業(yè)控制
- 1.后臺(tái)運(yùn)行一個(gè)程序
- 2.顯示后臺(tái)程序
- 3.停止運(yùn)行程序
- 4.后臺(tái)和前臺(tái)恢復(fù)程序
一、系統(tǒng)進(jìn)程介紹
1.進(jìn)程概念
進(jìn)程process是指正在執(zhí)行的程序;是程序正在運(yùn)行的一個(gè)實(shí)例。它由程序指令,和從文件、其它程序中讀取的數(shù)據(jù)或系統(tǒng)用戶的輸入組成。
2.進(jìn)程特點(diǎn)
①進(jìn)程是加載到內(nèi)存中的一段指令
②進(jìn)程ID(PID)是唯一標(biāo)識(shí)進(jìn)程
③子進(jìn)程集成父進(jìn)程的屬性信息
3.進(jìn)程類型
①前臺(tái)進(jìn)程(也稱為交互式進(jìn)程):這些進(jìn)程由終端會(huì)話初始化和控制。換句話說,需要有一個(gè)連接到系統(tǒng)中的用戶來啟動(dòng)這樣的進(jìn)程;它們不是作為系統(tǒng)功能/服務(wù)的一部分自動(dòng)啟動(dòng)。
②后臺(tái)進(jìn)程(也稱為非交互式/自動(dòng)進(jìn)程: 這些進(jìn)程沒有連接到終端;它們不需要任何用戶輸入。
③守護(hù)進(jìn)程:這是后臺(tái)進(jìn)程的特殊類型,它們?cè)谙到y(tǒng)啟動(dòng)時(shí)啟動(dòng),并作為服務(wù)一直運(yùn)行;它們不會(huì)死亡。它們自發(fā)地作為系統(tǒng)任務(wù)啟動(dòng)(作為服務(wù)運(yùn)行)。但是,它們能被用戶通過 init 進(jìn)程控制。
二、查看系統(tǒng)進(jìn)程
1.PS命令
#PS 查看進(jìn)程信息 -a 查看所有終端的進(jìn)程 -u 打印進(jìn)程的所有者信息 -x 查看不屬于任何終端的進(jìn)程 -e 查看系統(tǒng)的所有進(jìn)程 -f 查看額外的信息 -o 指定格式輸出 --sort 指定排序的參數(shù),例如: --sort=-%mem 按照內(nèi)存大小降序 常用組合為: ps aux 或者 ps -ef2.查看系統(tǒng)進(jìn)程
[root@node1 ~]# ps aux |head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.5 176372 10932 ? Ss 15:22 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17 root 2 0.0 0.0 0 0 ? S 15:22 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 15:22 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 15:22 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 15:22 0:00 [kworker/0:0H-kblockd] root 8 0.0 0.0 0 0 ? I< 15:22 0:00 [mm_percpu_wq] root 9 0.0 0.0 0 0 ? S 15:22 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? R 15:22 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? S 15:22 0:00 [migration/0] [root@node1 ~]# ps -ef |head UID PID PPID C STIME TTY TIME CMD root 1 0 0 15:22 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 17 root 2 0 0 15:22 ? 00:00:00 [kthreadd] root 3 2 0 15:22 ? 00:00:00 [rcu_gp] root 4 2 0 15:22 ? 00:00:00 [rcu_par_gp] root 6 2 0 15:22 ? 00:00:00 [kworker/0:0H-kblockd] root 8 2 0 15:22 ? 00:00:00 [mm_percpu_wq] root 9 2 0 15:22 ? 00:00:00 [ksoftirqd/0] root 10 2 0 15:22 ? 00:00:00 [rcu_sched] root 11 2 0 15:22 ? 00:00:00 [migration/0]3.ps aux結(jié)果說明
USER 用戶 PID 進(jìn)程ID %CPU CPU占用 %MEM 內(nèi)存占用 VSZ 項(xiàng)內(nèi)存申請(qǐng)地址空間 RSS 實(shí)際使用內(nèi)存 TTY 使用終端 STAT 進(jìn)程狀態(tài) START 進(jìn)程開始時(shí)間 TIME 進(jìn)程持續(xù)時(shí)間 進(jìn)程命令 COMMAND S 休眠 D 不可中斷 R 正在運(yùn)行 Z 僵尸進(jìn)程 T 停止 s 子進(jìn)程 < 高優(yōu)先級(jí) n 低優(yōu)先級(jí) + 后臺(tái)進(jìn)程 I 鎖定進(jìn)程4.top命令
①top命令使用方法
[root@node1 ~]# top top - 18:47:52 up 3:25, 2 users, load average: 0.61, 0.66, 0.71 Tasks: 237 total, 2 running, 235 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 1966.1 total, 854.9 free, 537.0 used, 574.2 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1275.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 835 root 20 0 1277568 52788 23924 S 0.7 2.6 0:18.12 containerd 821 zabbix 20 0 710536 30140 15880 S 0.3 1.5 0:55.17 zabbix_agent2 4887 root 20 0 0 0 0 I 0.3 0.0 0:00.01 kworker/0:1-events 1 root 20 0 176372 10932 8104 S 0.0 0.5 0:01.11 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp② top命令選項(xiàng)
按鍵盤數(shù)字1,可監(jiān)控每個(gè)邏輯CPU狀況 C 切換顯示命令名稱和完整命令行 M 可按內(nèi)存占用情況進(jìn)程排序 P 根據(jù)CPU使用百分比大小進(jìn)程排序 T 根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)程排序 f 可以選擇顯示的內(nèi)容5.pgerp命令
# pgrep -U 查找摸個(gè)用戶的進(jìn)程ID -G 查找某個(gè)組的進(jìn)程ID -P 根據(jù)父進(jìn)程ID,查找所有子進(jìn)程ID -l 不僅打印pid,也打印進(jìn)程名 -o 表示該程序有多個(gè)程序正在運(yùn)行,則只查招老的,即最先啟動(dòng),(多個(gè)進(jìn)程時(shí)即父進(jìn)程PID) -n 表示該程序有多個(gè)程序正在運(yùn)行,則查找最新的 -d 定義多個(gè)進(jìn)程之間的分隔符,如果不定義則使用換行符 [root@node1 ~]# pgrep -l sshd 819 sshd 2882 sshd 2884 sshd 2887 sshd 2905 sshd 3669 sshd 3671 sshd 3673 sshd 3689 sshd6.pidof
[root@node1 ~]# ps -p $(pidof sshd)PID TTY STAT TIME COMMAND819 ? Ss 0:00 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,2882 ? Ss 0:00 sshd: root [priv]2884 ? S 0:00 sshd: root@pts/12887 ? Ss 0:00 sshd: root [priv]2905 ? S 0:00 sshd: root@notty3669 ? Ss 0:00 sshd: root [priv]3671 ? S 0:00 sshd: root@pts/23673 ? Ss 0:00 sshd: root [priv]3689 ? S 0:00 sshd: root@notty [root@node1 ~]#三、signal信號(hào)的管理
1.signal信號(hào)的介紹
對(duì)進(jìn)程的操作可以通過發(fā)送不同的信號(hào)來實(shí)現(xiàn)。
2.給進(jìn)程發(fā)送信號(hào)
kill 信號(hào) pid killall 信號(hào) comm pikill [-signal] pattern3.man 7 signal
Signal Value Action Comment──────────────────────────────────────────────────────────────────────SIGHUP 1 Term Hangup detected on controlling terminalor death of controlling processSIGINT 2 Term Interrupt from keyboardSIGQUIT 3 Core Quit from keyboardSIGILL 4 Core Illegal InstructionSIGABRT 6 Core Abort signal from abort(3)SIGFPE 8 Core Floating-point exceptionSIGKILL 9 Term Kill signalSIGSEGV 11 Core Invalid memory referenceSIGPIPE 13 Term Broken pipe: write to pipe with noreaders; see pipe(7)SIGALRM 14 Term Timer signal from alarm(2)SIGTERM 15 Term Termination signalSIGUSR1 30,10,16 Term User-defined signal 1SIGUSR2 31,12,17 Term User-defined signal 2SIGCHLD 20,17,18 Ign Child stopped or terminatedSIGCONT 19,18,25 Cont Continue if stoppedSIGSTOP 17,19,23 Stop Stop processSIGTSTP 18,20,24 Stop Stop typed at terminalSIGTTIN 21,21,26 Stop Terminal input for background processSIGTTOU 22,22,27 Stop Terminal output for background process4.常用信號(hào)
signal 15 終止 signal 9 立即終止 signal 1 重讀配置文件 [root@tianyi ~]# kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) 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四、進(jìn)程的優(yōu)先級(jí)
1.進(jìn)程優(yōu)先級(jí)介紹
調(diào)度優(yōu)先級(jí)決定對(duì)CPU的訪問,進(jìn)程的nice值影響優(yōu)先級(jí)。
nice值為-20到19 ,缺省為0,低nice值意味著高CPU優(yōu)先級(jí)
2.查看進(jìn)程優(yōu)先級(jí)
[root@node1 ~]# ps -eo pid,comm,nice --sort=-nice |headPID COMMAND NI23 khugepaged 19766 alsactl 1922 ksmd 51 systemd 02 kthreadd 09 ksoftirqd/0 010 rcu_sched 011 migration/0 -12 watchdog/0 -3.優(yōu)先級(jí)修改
①當(dāng)啟動(dòng)進(jìn)程時(shí)
[root@node1 ~]# nice -n 5 vim file.txt②當(dāng)啟動(dòng)進(jìn)程后
[root@node1 ~]# pidof vim 5330 [root@node1 ~]# ps -eo pid,comm,nice |grep vim5330 vim 0 [root@node1 ~]# renice 5 5330 5330 (process ID) old priority 0, new priority 5 [root@node1 ~]# ps -eo pid,comm,nice |grep vim5330 vim 5五、作業(yè)控制
1.后臺(tái)運(yùn)行一個(gè)程序
[root@node1 ~]# firefox & [1] 5397 [root@node1 ~]# Running without a11y support!2.顯示后臺(tái)程序
[root@node1 ~]# jobs [1]+ Running firefox &3.停止運(yùn)行程序
[root@node1 ~]# kill 15 5397 [root@node1 ~]# jobs [1]+ Terminated firefox4.后臺(tái)和前臺(tái)恢復(fù)程序
[root@tianyi ~]# [root@tianyi ~]# jobs [1]- Running ping www.baidu.com > /dev/null & [2]+ Stopped ping www.jd.com > /dev/null [root@tianyi ~]# bg 2 [2]+ ping www.jd.com > /dev/null & [root@tianyi ~]# jobs [1]- Running ping www.baidu.com > /dev/null & [2]+ Running ping www.jd.com > /dev/null & [root@tianyi ~]# fg 2 ping www.jd.com > /dev/null ^Z [2]+ Stopped ping www.jd.com > /dev/null [root@tianyi ~]# jobs [1]- Running ping www.baidu.com > /dev/null & [2]+ Stopped ping www.jd.com > /dev/null 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Linux系统的进程管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统的日志管理
- 下一篇: Linux基础之网络配置