1. 程式人生 > >Linux程序控制

Linux程序控制

1.程序的組成部分

一個程序由一個地址空間和核心內部的一組資料結構共同組成。地址空間是由核心標記出來供程序使用的一組記憶體頁面。

2.kill 傳送訊號

命令引數:

    -l :訊號,若果不加訊號的編號引數,則使用“-l”引數會列出全部的訊號名稱。
    -a :當處理當前程序時,不限制命令名和程序號的對應關係。
    -p :指定kill 命令只打印相關程序的程序號,而不傳送任何訊號。
    -s :指定傳送訊號。
    -u :指定使用者。

顧名思義,kill命令最常見的用法是終止一個程序。
kill -9 pid
killall 按名字殺死程序

3.ps:監視程序

ps

是系統管理員監視程序的主要工具。

ps aux
選項a的意思是顯示所有的程序。
x的意思是顯示沒有控制終端的程序。
u的意思是選擇“面向使用者”的輸出格式。
ps -ef
選項e選擇所有的程序。
f選項設定輸出格式。

top對活動程序及其所使用的資源情況提供定期更新的匯總資訊。

pstree

該命令顯示當前執行的所有程序及其相關的子程序,以樹的格式輸出。

基本格式:pstree 引數

說明:pestree命令對程式名稱相同的會自動合併,所有“|-httpd---8*[httpd]”即表示系統中有8個httpd程序產生的子程序。

引數:

-a :顯示出該命令的引數,假如這個命令程序被其他程序替換掉,那麼程序將顯示在括號中 -a 選項包含有壓實程序樹的選項,對於相同的程序,會使用n*(process)的形式展顯出來。

-c :關閉禁用顯示結果程序樹,在預設情況下,程序子樹是會被壓縮的。不管有多少程序名相同的程序,都會逐個顯示出來。

-G :使用vt100線性描述樹

-h :突空出顯示當前程序的父程序並高亮顯示出來,如果沒有父程序那麼什麼都不會顯示。

-H :突出顯示出指定程序的父程序資訊並高亮顯示出來,使用方法為 pstree  -H  PID

-l :顯示長格式命令選項,在預設的情況下,命令列最多顯示寬度為132bit  ,超過將不能正常顯示。

-n :基於程序相同的祖先來進行排序,可以命名pid來代替程序名稱 。

-p :顯示所有的時程,顯示結果包含程序名和時程序ID

-u :顯示出使用者的UID,無論何時,這個UID和程序比較UID引數,這個新的UID將在程序名後顯示不同的引數。

-U :使用utf-8字符集以十進位制表示,

-v :顯示版本號。

top

第一行:任務佇列資訊

10:44:56    當前時間

up 104days,18:07    系統執行時間。104天,18小時07分鐘。

2 user    當前登入使用者數。

load average: 0.06, 0.60, 0.48    系統負載,即任務佇列的平均長度。 三個數值分別為  1分鐘、5分鐘、15分鐘前到現在的平均值。

 

第二行:程序數資訊

160 total    程序總數

1 running    正在執行的程序數

159 sleeping    睡眠的程序數

0 stopped    停止的程序數

0 zombie    殭屍程序數

 

第三行:CPU狀態

0.0% us    使用者程序佔用CPU百分比。

0.0% sy    系統程序佔用CPU百分比。

0.0% ni    使用者程序空間內改變過優先順序的程序佔用CPU百分比。

100% id    空閒CPU百分比。

0.0% wa    IO等待佔用CPU的百分比

0.0% hi    硬中斷(Hardware IRQ)佔用CPU的百分比

0.0% si    軟中斷(Software Interrupts)佔用CPU的百分比

 

第四行:記憶體狀態

3813844k total    實體記憶體總量

3693040k used    使用的實體記憶體總量

120804k free    空閒記憶體總量

116448k buffers    用作核心快取的記憶體量

 

第五行:swap交換狀態

4095992k total    交換區總量。

625764k used    使用的交換區總量。

3470228k free    空閒交換區總量。

374160k cached    緩衝的交換區總量。

 

第六行:空行

 

第七行以下:各程序的狀態監控

PID    程序id

PPID    父程序id

RUSER    Real user name

UID    程序所有者的使用者id

USER    程序所有者的使用者名稱

GROUP    程序所有者的組名

TTY    啟動程序的終端名。不是從終端啟動的程序則顯示為 ?

PR    優先順序

NI    nice值。負值表示高優先順序,正值表示低優先順序。

P    最後使用的CPU,僅在多CPU環境下有意義

%CPU    上次更新到現在的CPU時間佔用百分比

TIME    程序使用的CPU時間總計,單位秒

TIME+    程序使用的CPU時間總計,單位1/100秒

%MEM    程序使用的實體記憶體百分比

VIRT     程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES

SWAP    程序使用的虛擬記憶體中,被換出的大小,單位kb。

RES    程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA

CODE    可執行程式碼佔用的實體記憶體大小,單位kb

DATA    可執行程式碼以外的部分(資料段+棧)佔用的實體記憶體大小,單位kb

SHR    共享記憶體大小,單位kb

nFLT    頁面錯誤次數

nDRT    最後一次寫入到現在,被修改過的頁面數。

S    程序狀態。 

            D=不可中斷的睡眠狀態
            R=執行
            S=睡眠
            T=跟蹤/停止
            Z=殭屍程序

COMMAND    命令名/命令列

WCHAN    若該程序在睡眠,則顯示睡眠中的系統函式名

Flags    任務標誌,參考 sched.h
[[email protected]_0_7_centos ~]# top
top - 09:30:45 up 196 days, 13:38,  1 user,  load average: 2.07, 3.14, 3.49
Tasks: 187 total,   5 running, 182 sleeping,   0 stopped,   0 zombie
%Cpu(s): 38.0 us, 19.2 sy,  0.0 ni,  0.0 id, 42.8 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1883616 total,    71796 free,  1537996 used,   273824 buff/cache
KiB Swap:        0 total,        0 free,        0 used.    89032 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND          
23070 centos    20   0  424124 175936   7500 R 51.0  9.3   0:06.64 ruby2.1          
32239 root      20   0 1191848  32784      0 S  1.7  1.7   1694:09 cadvisor         
   25 root      20   0       0      0      0 S  1.3  0.0   1351:31 kswapd0          
22140 centos    20   0 1088448 249760   1900 S  0.7 13.3   0:15.02 ruby2.1          
    3 root      20   0       0      0      0 R  0.3  0.0 422:55.08 ksoftirqd/0      
    9 root      20   0       0      0      0 R  0.3  0.0 219:46.26 rcu_sched        
14760 101       20   0   52588   1840    532 S  0.3  0.1 158:06.69 redis-server     
23364 root      20   0  164496   8672   1268 S  0.3  0.5  48:54.67 barad_agent      
26877 polkitd   20   0 1487892 100464      0 S  0.3  5.3  71:31.99 mysqld           
28015 root      20   0  571312  19612    212 S  0.3  1.0  23:19.41 YDService        
    1 root      20   0  190944   2292    800 S  0.0  0.1  27:02.92 systemd          
    2 root      20   0       0      0      0 S  0.0  0.0   0:04.37 kthreadd         
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H     
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0

相關推薦

實驗4 Linux程序控制實驗指導書

實驗4 Linux程序控制實驗指導書 一、Ubuntu18下安裝fcitx及中文輸入法 1、解除安裝IBUS sudo apt-get  remove  ibus sudo apt-get  purge  ibus   2、開

Linux程序控制——exec函式族

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

linux程序控制之訊號量 semget,semctl,semop

轉載自 https://www.cnblogs.com/52php/p/5851570.html 這篇文章將講述別一種程序間通訊的機制——訊號量。注意請不要把它與之前所說的訊號混淆起來,訊號與訊號量是不同的兩種事物。有關訊號的更多內容,可以閱讀我的另一篇文章:L

LInux 程序控制作業——1

題目如下: u建立子程序 u在子程序中開啟檔案file1,寫入自己的“班級_姓名_學號”, u父程序讀取file1中的內容,並且列印顯示。 u在父程序中獲取已經結束的子程序的狀態資訊,列印該資訊,並且列印結束的子程序的程序號。 程式碼如下: #include<

Linux程序控制--程序建立

Linux程序建立 linux下建立程序的方式有三種,通過fork vfork clone系統呼叫實現程序的建立 1. fork fork函式用於建立一個新的程序,其建立的程序和當前程序為父關係,子程序建立自己的task_struct 之後初始化子程序的互斥變數

Linux程序控制--程序退出和等待

Linux程序退出 1. 程序退出的場景 程式碼執行完畢正常退出,結果正確 程式碼執行完畢正常退出,結果不正確 異常退出 2 .程序常見退出方式 正常退出 從main() 函式中返回return退出 呼叫exit()函式退出 呼叫_exit()函式退出 異

Linux程序控制函式之exec()函式的學習

           轉載地址:http://www.linuxidc.com/Linux/2011-02/32125p6.htm,   紅色部分, 是我自己的註解。      當我們看恐怖片時,經常會有這樣的場景:當一個人被鬼上身後,這個人的身體表面上還和以前一樣

linux 程序控制總結筆記

1,時間和空間是計算機裡的兩個基本概念,作業系統將這兩個概念實現為程序和檔案。 首先理解程序的概念:        程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是動態的,是系統進行資源分配和排程的一個獨立單位。 2,程序ID是程序的一個基本屬性,下面介紹程序中六個重要的ID,及獲取的函式原型

Linux程序控制實驗報告

一、實驗目的:進一步認識併發(並行)執行的概念,區別順序執行和併發(並行)執行。分析程序爭用臨界資源的現象,學習解決程序排斥的方法。二、實驗環境:一臺至少具有256MB記憶體的計算機,並安裝Red Hat Linux 9的Linux作業系統。三、實驗內容:(寫出主要的內容)1

Linux程序控制塊(Processing Control Block)

程序 在廣義上,所有的程序資訊被放在一個叫做程序控制塊的資料結構中,可以理解為程序屬性 的集合。 程序控制塊 每個程序在核心中都有一個程序控制塊(PCB)來維護程序相關的資訊,Linux核心的 程序控制塊是task_struct結構體。現在我們全面瞭解

Linux程序控制

1.程序的組成部分 一個程序由一個地址空間和核心內部的一組資料結構共同組成。地址空間是由核心標記出來供程序使用的一組記憶體頁面。 2.kill 傳送訊號 命令引數: -l :訊號,若果不加訊號的編號引數,則使用“-l”引數會列出全部的訊號名稱。

【嵌入式Linux C程式設計】Linux程序控制程式設計

程序是一個具有一定獨立功能的程式的一次執行活動,同時也是資源分配的最小單元。程序的生命週期:        建立:每個程序可以由父程序建立,程序可以建立子程序,子程序可以建立孫程序。        執行:多個程序可以同時存在,程序間可以通訊。        撤銷:程序可以撤銷

Linux程序控制(fork/vfork)(程序終止:exit/_exit)(程序等待:wait/waitpid/status)(程序替換:exec函式/shell實現)

目錄   程序建立 fork原理 fork函式返回值 fork用法和呼叫失敗的原因 vfork函式 總結 程序終止 程序退出場景: 程序常見退出方法 return退出 _exit函式 exit函式 總結: 程序等待 程序等待的

Linux 多工程式設計——多程序控制:結束程序、等待程序結束

結束程序 首先,我們回顧一下 C 語言中 continue, break, return 的作用: continue: 結束本次迴圈 break: 跳出整個迴圈,或跳出 switch() 語句 return: 結束當前函式 而我們可以通過 exit() 或 _exit() 來結束當前

linux學習之程序控制

首先交代幾個基本概念 1.程式:程式是一個儲存在磁碟上某個目錄中的可執行檔案 2.程序:程式的執行例項被稱為程序 3.程序ID:每個程序都有一個非負整數型表示的唯一程序ID 除了程序ID,每個程序還有一些其他識別符號,下面是相關函式 #include<un

Linux系統呼叫——程序控制(C/C++)(Linux)

系統呼叫——程序控制 什麼是程序?         程序是資源分配的最小單元,是一個具有一定獨立功能的程式的一次執行活動。每個程序都是一個獨立的執行單元。 程序與程式的區別? (1)程式是放到磁碟的可執行檔案,程序是指程式執行的例項。 (2)程序是動態的,程式是

Linux學習記錄--程序控制相關係統呼叫

系統呼叫:程序控制 fork系統呼叫 函式作用:建立一個子程序 形式:pid_tfork(void);              pid_t vfork(void); 說明:    使用vfork創子程序時,不會程序父程序的上下文 返回值:[返回值=-1]子程序建立失敗

程序控制程式設計----------(Linux---C)

1、為什麼程序間需要通訊?資料傳輸:一個程序需要將它的資料傳送給另一個程序。資源共享:多個程序之間共享同樣的資源通知事件:一個程序需要向另一個或一組程序傳送訊息,通知它們發生了某種事件。程序控制:有些程序希望完全控制另一個程序的執行(如Debug程序),此時控制程序希望能夠攔截另一個程序的所有操作,並能夠及時

PCB(程序控制塊)以及Linux下的程序控制塊task_struct

程序控制塊中的資訊: 1.程序識別符號:程序識別符號是惟一地標識一個程序。一個程序通常有兩種識別符號   (1).內部表示符:在所有的作業系統中,都為每一個程序賦予了一個惟一的數字識別符號,它通常是一個程序的序號。設定內部識別符號主要是為了方便系統使用。   (2).外部識

Linux /var/spool/cups下的檔案是列印快取檔案,由cupsd程序控制列印完後刪除

Linux 資料夾/var/spool/cups下的檔案是列印快取檔案,由cupsd程序控制列印完成後刪除,現在已經做了一個守護程序監控這個資料夾,一有檔案就複製出來,但是發現複製出來的檔案沒有內容,怎麼解決,C程式設計??