當前位置:首頁 » 操作系統 » linux監控進程

linux監控進程

發布時間: 2022-06-23 12:10:08

『壹』 linux如何定時監控進程狀態

大概就是寫一個腳本, 腳本的樣子大概如下就可以了, 你給完善一下

#!/bin/bash
ps 1>> pslog.txt
top 1>> toplog.txt

然後用crontab -e 這個命令 就是用vim編輯一下
比如 */5 * * * * /home/你的名字/腳本名字.sh
這樣就是每隔5分鍾執行一次腳本這個腳本.
*/5(分鍾) *(小時) *(日期) *(月份) *(星期幾)
明白了嗎?

『貳』 linux下監控進程是否掛掉的一種方法

所以,有時候對進程進行實時監控,當發現進程掛掉時,立刻重新啟動進程,也是一種可以救急的方式(當然這個只是一種臨時救急,並不是根本解決方法)。
實現方式:使用fork()創建子進程,子進程用於執行具體功能,主進程只是用於監控子進程,當主進程檢測到子進程掛掉後,可以實現立即重新啟動子進程。
子進程結束,系統會向主進程發送信號:SIGCHLD,主進程可以通過捕捉該信號,從而檢測子進程已經不存在,進而繼續下一步操作。如果需要,主進程還可以獲得子進程是為何退出的。
源代碼例子:#include#include#include#include#include#include#includevoid process_exit(int s){exit(0);}void child_fun(){printf("child_fun. ppid %d\n",getppid());
char *st = NULL;
strcpy(st, "123");}void fork_child(){pid_t child_process;
int status;
int signal_num;
wait(&status);//等待子進程中斷或終止,釋放子進程資源,否則死掉的子進程會變成僵屍進程
//如果子進程是由於某種信號退出的,捕獲該信號
if(WIFSIGNALED(status))
signal_num = WTERMSIG(status);
child_process = fork();
if(child_process == 0){printf("fork new child process.\n");
child_fun();}}int main(){pid_t child_process;int i = 0;while(1){printf("fork new process.\n");
child_process = fork();
if(child_process > 0){while(1){//捕獲子進程結束信號
signal(SIGCHLD, fork_child);
signal(SIGTERM, process_exit);
pause();//主進程休眠,當有信號到來時被喚醒。}}else if(child_process == 0){child_fun();}}return 0;}僵屍進程的產生:
在fork()/execve()過程中,假設子進程結束時父進程仍存在,而父進程如果沒有給子進程收屍,死掉的子進程就變成僵屍進程了。僵屍進程是非常特殊的一種,它已經放棄了幾乎所有內存空間,沒有任何可執行代碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等信息供其他進程收集,除此之外,僵屍進程不再佔有任何內存空間,它需要它的父進程來為它收屍。僵屍進程,無法正常結束,此時即使是root身份kill-9也不能殺死僵屍進程。補救辦法是殺死僵屍進程的父進程(僵屍進程的父進程必然存在),僵屍進程成為"孤兒進程",過繼給1號進程init,init始終會負責清理僵屍進程。
僵屍進程的危害:
Linux系統對運行的進程數量有限制,如果產生過多的僵屍進程佔用了可用的進程號,將會導致新的進程無法生成。這就是僵屍進程對系統的最大危害。

『叄』 如何靈活運用Linux 進程資源監控和進程限制

你可以使用 mpstat 單獨查看每個處理器或者系統整體的活動,可以是每次一個快照或者動態更新。
為了使用這個工具,你首先需要安裝 sysstat:
# yum update && yum install sysstat [基於 CentOS 的系統]
# aptitutde update && aptitude install sysstat [基於 Ubuntu 的系統]
# zypper update && zypper install sysstat [基於 openSUSE 的系統]

你可以在 Linux 中學習 Sysstat 和其中的工具 mpstat、pidstat、iostat 和 sar,了解更多和 sysstat 和其中的工具相關的信息。
安裝完 mpstat 之後,就可以使用它生成處理器統計信息的報告。
你可以使用下面的命令每隔 2 秒顯示所有 CPU(用-P ALL 表示)的 CPU 利用率(-u),共顯示3次。
# mpstat -P ALL -u 2 3

示例輸出:
Linux 3.19.0-32-generic (tecmint.com) Wednesday 30 March 2016 _x86_64_ (4 CPU)

11:41:07 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:41:09 IST all 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91
11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53
11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00
11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57
11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56

11:41:09 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:41:11 IST all 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66
11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50
11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68
11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50
11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60

11:41:11 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:41:13 IST all 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07
11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54
11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75
11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00
11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57

Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89
Average: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87
Average: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78
Average: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35
Average: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59

要查看指定的 CPU(在下面的例子中是 CPU 0),可以使用:
# mpstat -P 0 -u 2 3

示例輸出:
Linux 3.19.0-32-generic (tecmint.com) Wednesday 30 March 2016 _x86_64_ (4 CPU)

11:42:08 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50
11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37
11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74
Average: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23

上面命令的輸出包括這些列:
CPU: 整數表示的處理器號或者 all 表示所有處理器的平均值。
%usr: 運行在用戶級別的應用的 CPU 利用率百分數。
%nice: 和 %usr相同,但有 nice 優先順序。
%sys: 執行內核應用的 CPU 利用率百分比。這不包括用於處理中斷或者硬體請求的時間。
%iowait: 指定(或所有)CPU 的空閑時間百分比,這表示當前 CPU 處於 I/O 操作密集的狀態。
%irq: 用於處理硬體中斷的時間所佔百分比。
%soft: 和%irq相同,但是是軟中斷。
%steal: 虛擬機非自主等待(時間片竊取)所佔時間的百分比,即當虛擬機在競爭 CPU 時所從虛擬機管理程序那裡「贏得」的時間。應該保持這個值盡可能小。如果這個值很大,意味著虛擬機正在或者將要停止運轉。
%guest: 運行虛擬處理器所用的時間百分比。
%idle: CPU 沒有運行任何任務所佔時間的百分比。如果你觀察到這個值很小,意味著系統負載很重。在這種情況下,你需要查看詳細的進程列表、以及下面將要討論的內容來確定這是什麼原因導致的。
運行下面的命令使處理器處於極高負載,然後在另一個終端執行 mpstat 命令:
# dd if=/dev/zero of=test.iso bs=1G count=1
# mpstat -u -P 0 2 3
# ping -f localhost # Interrupt with Ctrl + C after mpstat below completes
# mpstat -u -P 0 2 3

最後,和 「正常」 情況下 mpstat 的輸出作比較:

正如你在上面圖示中看到的,在前面兩個例子中,根據%idle的值可以判斷 CPU 0 負載很高。
在下一部分,我們會討論如何識別資源飢餓型進程,如何獲取更多和它們相關的信息,以及如何採取恰當的措施。
Linux 進程報告
我們可以使用有名的ps命令,用-eo選項(根據用戶定義格式選中所有進程) 和--sort選項(指定自定義排序順序)按照 CPU 使用率排序列出進程,例如:
# ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

上面的命令只會顯示PID、PPID、和進程相關的命令、 CPU 使用率以及 RAM 使用率,並按照 CPU 使用率降序排序。創建 .iso 文件的時候運行上面的命令,下面是輸出的前面幾行:

一旦我們找到了感興趣的進程(例如PID=2822的進程),我們就可以進入/proc/PID(本例中是/proc/2822) 列出目錄內容。
這個目錄就是進程運行的時候保存多個關於該進程詳細信息的文件和子目錄的目錄。
例如:
/proc/2822/io:包括該進程的 IO 統計信息(IO 操作時的讀寫字元數)。
/proc/2822/attr/current:顯示了進程當前的 SELinux 安全屬性。
/proc/2822/cgroup:如果啟用了 CONFIGCGROUPS 內核設置選項,這會顯示該進程所屬的控制組(簡稱cgroups),你可以使用下面命令驗證是否啟用了 CONFIGCGROUPS:
# cat /boot/config-$(uname -r) | grep -i cgroups

如果啟用了該選項,你應該看到:
CONFIG_CGROUPS=y
根據紅帽企業版 Linux 7 資源管理指南第一到四章的內容、openSUSE 系統分析和調優指南第九章、Ubuntu 14.04 伺服器文檔Control Groups 章節,你可以使用cgroups管理每個進程允許使用的資源數目。
/proc/2822/fd這個目錄包含每個打開的描述進程的文件的符號鏈接。下面的截圖顯示了 tty1(第一個終端) 中創建 .iso 鏡像進程的相關信息:

上面的截圖顯示 stdin(文件描述符 0)、stdout(文件描述符 1)、stderr(文件描述符 2) 相應地被映射到 /dev/zero、 /root/test.iso 和 /dev/tty1。
在 Linux 中為每個用戶設置資源限制
如果你不夠小心、讓任意用戶使用不受限制的進程數,最終你可能會遇到意外的系統關機或者由於系統進入不可用的狀態而被鎖住。為了防止這種情況發生,你應該為用戶可以啟動的進程數目設置上限。
你可以在 /etc/security/limits.conf 文件末尾添加下面一行來設置限制:* hard nproc 10
第一個欄位可以用來表示一個用戶、組或者所有人(*), 第二個欄位強制限制可以使用的進程數目(nproc) 為 10。退出並重新登錄就可以使設置生效。
然後,讓我們來看看非 root 用戶(合法用戶或非法用戶) 試圖引起 shell fork 炸彈時會發生什麼。如果我們沒有設置限制, shell fork 炸彈會無限制地啟動函數的兩個實例,然後無限循環地復制任意一個實例。最終導致你的系統卡死。
但是,如果使用了上面的限制,fort 炸彈就不會成功,但用戶仍然會被鎖在外面直到系統管理員殺死相關的進程。

提示:limits.conf文件中可以查看其它 ulimit 可以更改的限制。
其它 Linux 進程管理工具
除了上面討論的工具, 一個系統管理員還可能需要:
a) 通過使用 renice 調整執行優先順序(系統資源的使用)。這意味著內核會根據分配的優先順序(眾所周知的 「niceness」,它是一個范圍從-20到19的整數)給進程分配更多或更少的系統資源。
這個值越小,執行優先順序越高。普通用戶(而非 root)只能調高他們所有的進程的 niceness 值(意味著更低的優先順序),而 root 用戶可以調高或調低任何進程的 niceness 值。
renice 命令的基本語法如下:
# renice [-n] <new priority> <UID, GID, PGID, or empty> identifier

如果 new priority 後面的參數沒有(為空),默認就是 PID。在這種情況下,PID=identifier 的進程的 niceness 值會被設置為<new priority>
b) 需要的時候中斷一個進程的正常執行。這也就是通常所說的「殺死」進程。實質上,這意味著給進程發送一個信號使它恰當地結束運行並以有序的方式釋放任何佔用的資源。
按照下面的方式使用 kill 命令殺死進程:
# kill PID

另外,你也可以使用pkill結束指定用戶(-u)、指定組(-G), 甚至有共同的父進程 ID (-P)的所有進程。這些選項後面可以使用數字或者名稱表示的標識符。
# pkill [options] identifier

例如:
殺死組GID=1000的所有進程.
# pkill -G 1000

殺死PPID 是 4993的所有進程.
# pkill -P 4993

在運行pkill之前,先用pgrep測試結果、或者使用-l選項列出進程名稱是一個很好的辦法。它需要和pkill相同的參數、但是只會返回進程的 PID(而不會有其它操作),而pkill會殺死進程。
# pgrep -l -u gacanepa

『肆』 LINUX進程監控保護

幾種辦法,
1, 最簡單的,寫一個腳本,比如

#!/bin/sh

while true
do
./1234 xx bb
done

執行這個腳本,就不用擔心 1234 退出後出問題了。

2, 用上面的方法,你可能會提出,如果腳本本身被殺了怎麼辦…… 可以用定時任務,比如 通過 crontab 可以每分鍾去檢查一下1234進程是否還在

比如下面的腳本可以檢查 1234 是否存在,如果不存在就會自動啟動 1234

#!/bin/sh
ps -A | awk '{print $4}' | grep -q '^1234$'
if [ $? -ne 0]; then
/PATH/TO/1234 xx bb
fi
假定這個腳本叫 a.sh
然後用crontab -e增加定時任務

* * * * * /path/to/a.sh
即可。

『伍』 linux怎麼監聽進程並在進程死掉的時候重新執行

一、superviseSupervise是daemontools的一個工具,可以用來監控管理unix下的應用程序運行情況,在應用程序出現異常時,supervise可以重新啟動指定程序。使用:mkdirtestcdtestvimrun寫入希望執行的操作supervisetest(注意這里是的參

『陸』 如何查看linux系統的進程監控日誌

cat /var/log/*.log
如果日誌在更新,如何實時查看 tail -f /var/log/messages
還可以使用 watch -d -n 1 cat /var/log/messages
-d表示高亮不同的地方,-n表示多少秒刷新一次。
該指令,不會直接返回命令行,而是實時列印日誌文件中新增加的內容,這一特性,對於查看日誌是非常有效的。如果想終止輸出,按 Ctrl+C 即可。

在Linux系統中,有三個主要的日誌子系統:
連接時間日誌--由多個程序執行,把紀錄寫入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系統管理員能夠跟蹤誰在何時登錄到系統。
進程統計--由系統內核執行。當一個進程終止時,為每個進程往進程統計文件(pacct或acct)中寫一個紀錄。進程統計的目的是為系統中的基本服務提供命令使用統計。
錯誤日誌--由syslogd(8)執行。各種系統守護進程、用戶程序和內核通過syslog(3)向文件/var/log/messages報告值得注意的事件。另外有許多UNIX程序創建日誌。像HTTP和FTP這樣提供網路服務的伺服器也保持詳細的日誌。

常用的日誌文件如下:
access-log 紀錄HTTP/web的傳輸

acct/pacct 紀錄用戶命令

aculog 紀錄MODEM的活動

btmp紀錄失敗的紀錄

lastlog紀錄最近幾次成功登錄的事件和最後一次不成功的登錄

messages從syslog中記錄信息(有的鏈接到syslog文件)系統啟動後的信息和錯誤日誌,是Red Hat Linux中最常用的日誌之一

sudolog 紀錄使用sudo發出的命令

sulog 紀錄使用su命令的使用

syslog 從syslog中記錄信息(通常鏈接到messages文件)

utmp紀錄當前登錄的每個用戶

wtmp一個用戶每次登錄進入和退出時間的永久紀錄

xferlog 紀錄FTP會話
/var/log/secure與安全相關的日誌信息
/var/log/maillog 與郵件相關的日誌信息
/var/log/cron 與定時任務相關的日誌信息
/var/log/spooler 與UUCP和news設備相關的日誌信息
/var/log/boot.log 守護進程啟動和停止相關的日誌消息
utmp、wtmp和lastlog日誌文件是多數重用UNIX日誌子系統的關鍵--保持用戶登錄進入和退出的紀錄。有關當前登錄用戶的信息記錄在文件utmp中;登錄進入和退出紀錄在文件wtmp中;最後一次登錄文件可以用lastlog命令察看。數據交換、關機和重起也記錄在wtmp文件中。所有的紀錄都包含時間戳。這些文件(lastlog通常不大)在具有大量用戶的系統中增長十分迅速。例如wtmp文件可以無限增長,除非定期截取。許多系統以一天或者一周為單位把wtmp配置成循環使用。它通常由cron運行的腳本來修改。這些腳本重新命名並循環使用wtmp文件。通常,wtmp在第一天結束後命名為wtmp.1;第二天後wtmp.1變為wtmp.2等等,直到wtmp.7。

每次有一個用戶登錄時,login程序在文件lastlog中察看用戶的UID。如果找到了,則把用戶上次登錄、退出時間和主機名寫到標准輸出中,然後login程序在lastlog中紀錄新的登錄時間。在新的lastlog紀錄寫入後,utmp文件打開並插入用戶的utmp紀錄。該紀錄一直用到用戶登錄退出時刪除。utmp文件被各種命令文件使用,包括who、w、users和finger。

下一步,login程序打開文件wtmp附加用戶的utmp紀錄。當用戶登錄退出時,具有更新時間戳的同一utmp紀錄附加到文件中。wtmp文件被程序last和ac使用。

具體命令
wtmp和utmp文件都是二進制文件,他們不能被諸如tail命令剪貼或合並(使用cat命令)。用戶需要使用who、w、users、last和ac來使用這兩個文件包含的信息。

who:who命令查詢utmp文件並報告當前登錄的每個用戶。Who的預設輸出包括用戶名、終端類型、登錄日期及遠程主機。例如:who(回車)顯示

chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15

如果指明了wtmp文件名,則who命令查詢所有以前的紀錄。命令who /var/log/wtmp將報告自從wtmp文件創建或刪改以來的每一次登錄。
w:w命令查詢utmp文件並顯示當前系統中每個用戶和它所運行的進程信息。例如:w(回車)顯示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27。
USER TTYFROM LOGIN@ IDLE JCPU PCPUWHAT
chyang pts/0 202.38.68.2423:06pm 2:04 0.08s 0.04s -bash
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w
lewis pts/3 202.38.64.2331:55pm 30:39 0.27s 0.22s -bash
lewis pts/4 202.38.64.2331:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
yloupts/8 202.38.64.2352:15pm 1:09m 0.10s 0.04s-bash

users:users用單獨的一行列印出當前登錄的用戶,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示相同的次數。例如:users(回車)顯示:chyang lewis lewis ylou ynguo ynguo

last:last命令往回搜索wtmp來顯示自從文件第一次創建以來登錄過的用戶。例如:
chyang pts/9202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfanpts/6202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)

如果指明了用戶,那麼last只報告該用戶的近期活動,例如:last ynguo(回車)顯示:
ynguopts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguopts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguopts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguopts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
ynguopts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
ynguopts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
ynguopts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)

ac:ac命令根據當前的/var/log/wtmp文件中的登錄進入和退出來報告用戶連結的時間(小時),如果不使用標志,則報告總的時間。例如:ac(回車)顯示:total 5177.47
ac -d(回車)顯示每天的總的連結時間
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
Aug 17 total 104.29
Today total 179.00

ac -p (回車)顯示每個用戶的總的連接時間
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
zjzhu 52.87
zqzhou 13.14
liangliu 24.34
total 5178.22

lastlog:lastlog文件在每次有用戶登錄時被查詢。可以使用lastlog命令來檢查某特定用戶上次登錄的時間,並格式化輸出上次登錄日誌/var/log/lastlog的內容。它根據UID排序顯示登錄名、埠號(tty)和上次登錄時間。如果一個用戶從未登錄過,lastlog顯示"**Never logged**。注意需要以root運行該命令,例如:

rong5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
dbb **Never logged in**
xinchen **Never logged in**
pb9511 **Never logged in**
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000

另外,可一加一些參數,例如,lastlog -u 102將報告UID為102的用戶;lastlog -t 7表示限制上一周的報告。

『柒』 linux查看有哪些進程正在使用

您好,方法
Linux中常用的查看進程的命令是:ps
該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵屍、哪些進程佔用了過多的資源等信息,常用於監控後台進程的工作情況
使用man ps命令可以查看該命令的介紹和用例,
使用ps -ef查看所有進程,輸出信息如圖。
使用ps axu,查看所有進程,輸出信息如圖。
如果想查詢特定進程,可以使用

(1)ps -ef|grep 名稱。

(2)ps aux|grep 名稱。

『捌』 linux 系統進程監控管理

我給你說說思路和框架,C代碼我就不寫了:

1、a程序先啟動,啟動之後fork出兩個子進程,簡稱a_b、a_c並記下他們的PID;

2、在a_b和a_c這兩個子進程中執行execlp函數,啟動b和c這個程序,這樣b和c程序就替換掉a_b和a_c這個進程成為a程序的兩個子進程;

說明:在第一步的時候a程序會得到兩個子進程的pid,在第二步的時候執行execlp操作不會改變進程的pid,所以程序A始終知道b和c的PID;

3、在一個死循環中調用wait直到其中的一個子進程(進程b或c)退出,根據wait的返回值與第一步保存的兩個子進程的PID對比可以知道是哪個子進程退出了,然後重新fork一個子進程並調用execlp啟動相應的程序(a、b)即可,注意要更新第一步保存的PID。

相關函數:
fork、execlp、wait

『玖』 如何linux下監控進程及其子進程佔用資源

你可以使用 mpstat 單獨查看每個處理器或者系統整體的活動,可以是每次一個快照或者動態更新。 為了使用這個工具,你首先需要安裝 sysstat: # yum update && yum install sysstat [基於 CentOS 的系統] # aptitutde update

『拾』 如何監控linux下的進程佔用內存的情況

top
-n
10
前10個最耗資源的進程。
或者
linux下獲取佔用cpu資源最多的10個進程,可以使用如下命令組合:
ps
aux|head
-1;ps
aux|grep
-v
pid|sort
-rn
-k
+3|head

熱點內容
張藝謀我們一家訪問人 發布:2024-05-05 12:38:05 瀏覽:111
美版安卓系統怎麼安裝 發布:2024-05-05 12:37:18 瀏覽:919
qq郵箱緩存地址 發布:2024-05-05 12:37:16 瀏覽:985
電位演算法 發布:2024-05-05 12:36:01 瀏覽:726
我的世界清風斗羅大陸伺服器地址 發布:2024-05-05 12:35:50 瀏覽:452
dell伺服器如何進入bios 發布:2024-05-05 12:34:26 瀏覽:329
在線名片製作源碼 發布:2024-05-05 12:29:27 瀏覽:447
陰陽師按鍵腳本 發布:2024-05-05 12:00:33 瀏覽:760
魔獸查腳本 發布:2024-05-05 11:54:37 瀏覽:39
sqlserver執行時間 發布:2024-05-05 11:50:31 瀏覽:649