linux 進程解析

博文介紹了進程信息以及部分進程管理命令

最近想要改變博客風格或者方式,很糾結,不知道怎么想,唉,多看看其他人的再說吧。好了,話不多說,直接進入主題
進程簡介:
我們來一層層分析:之前看到一個感覺比較恰當的比喻,說程序是菜譜,進程是執行程序的過程,就像按照食譜,真正去做菜的過程。計算機根據菜譜做出可口的飯菜。而linux內核的一個重要功能就是為進程提供方便,比如說為進程分配內存空間,管理進程的相關信息等等,就好像是為我們準備好了一個精美的廚房。
所謂的程序(program),就是一系列指令的所構成的集合。所謂指令(instruction)就是比如計算兩個數的和,在內存中尋找地址等這些最基礎的計算機動作。
通過程序,我們可以讓計算機完成復雜的操作。程序大多數時候被存儲為可執行的文件。這樣一個可執行文件就是一個菜譜。
進程(process)是運行中的程序的一個副本,是被載入內存的一個指令集合。
進程的特點:
(1)擁有獨立唯一的進程地址(Process ID ,PID ):用來標記各個進程
(2)存在生命周期,由創建而產生,由調度而運行,由結束而消亡,是一個動態推進、不斷變化的過程。
(3)獨立性:進程是操作系統資源分配、保護和調度的基本單位,每個進程都有其自己的運行數據集,以各自獨立的、不可預知的進度異步運行。進程的運行環境不是封閉的,進程間也可以通過操作系統進行數據共享、通信。
(4)并發性:在同一段時間內.若干個進程可以共享一個CPU。進程的并發性能夠改進系統的資源利用率,提高計算機的效率。進程在單CPU系統中并發執行,在多CPU系統中并行執行。進程的并發執行意味著進程的執行可以被打斷,可能會帶來一些意想不到的結果。
進程知識
(1)進程格式: task struct :Linux 內核存儲進程信息的數據結構格式(略過,有興趣的可以從內核中了解)
(2)進程之間的聯系:task list :多個任務的的 task struct 組成的鏈表
(3)進程都由其父進程創建,(機制 :CoW (Copy on Write 寫時復制)可以點擊此鏈接了解http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.html
那么父父進程又是什么呢,我們可以這樣理解,存在一個上帝進程,是最終極的進程,
在CentOS6:上帝進程也就是第一個進程(PID=1)為:init。CentOS7中上帝進程(PID=1)為:systemd
(4)進程類型:可以分為兩種
守護進程:在系統引導過程中啟動的進程,和終端無關的進程(可以理解為Windows系統中的后臺進程)
前臺進程:通過終端啟動的進程(可以理解為Windows系統中的各種前臺應用進程)
(5)進程狀態:
tai
(6)進程優先級:
系統優先級:數字越小,優先級越高
CentOS4/5中(0-139)
各有140個運行隊列和過期(等待)隊列
CentOS6/7中(0-98)
各有99個運行隊列和過期(等待)隊列
實時(realtime)優先級:99-0 值最大優先級最高
nice優先級值:-20到19,對應系統優先級100-139;nice優先級可以根據具體情況進行動態調整。
youxian
進程管理工具
簡單介紹pstree命令,ps命令,nice/renice命令,pgrep命令,kill命令。
pstree命令:
pstree ?: – display a tree of processes (顯示進程樹)
常用選項:
-p : 顯示進程PID
補充:進程樹中的大括號內容是表示依附于進程的線程(thread)。進程中又分為線程,一個進程至少一個線程,如果是復雜多任務的話可以分多線程,節省內存空間,提高效率。
ps命令:
ps : – report a snapshot of the current processes (報告當前進程的快照即當前進程狀態)
支持三種選項:
UNIX 選項 如-A,-e
BSD 選項 如a
GNU 選項如—help
常用選項:
ps :默認顯示當前終端的前臺進程
僅介紹BSD選項:
a :顯示所有終端的前臺進程
x :顯示終端所有進程(包括守護進程和前臺進程)
u :顯示進程執行者信息(注意:不是顯示進程的發起者信息)
f :層次顯示進程(父子進程)
o :自定義顯示進程的指定屬性(常用屬性:pid,cmd,%cpu,state(狀態),tty,euser(進程生效者),ruser(進程發起者),rss(系統分配的虛擬內存),vsz(實際分配的物理內存),ni(nice優先級),pri(系統優先級),rtprio(realtime優先級),psr(CPU編號))

zhix
k :對指定進程的屬性進行排序

常用搭配:ps aux

head
STAT :表示進程狀態
statte
nice命令:所有用戶都可以以指定的優先級運行命令,這會影響相應進程的調度
選項n:指定優先級(范圍-20到19)
示例:nice -n -10 ping 172.17.0.1 ##以nice優先級為10執行ping命令
renice命令:只有root用戶可以)調整進程優先級
常用選項:
-P :指定需要調整優先級進程的PID(默認)
-n :指定優先級(范圍-20到19)
-u :指定用戶名稱,修改所有隸屬于該用戶的程序的優先權。
-g :指定群組名稱,修改所有隸屬于該群組的程序的優先權
示例:renicepgrep命令:搜索進程,支持模式匹配
pgrep [options] pattern
示例:pgrep -a “^ping” ? ? ?##搜索命令以ping開頭的進程
常用選項:
-u :搜索顯示指定執行者的進程
-U :搜索顯示真正發起運行命令者
-t :搜索顯示指定終端相關的進程
-P PID:搜索顯示指定進程的子進程
-v :顯示與搜索條件不符合的程序
-l :顯示搜索到的進程名
-a :顯示完整格式的進程名
示例:pgrep -au magedu
pgrep -au 1000 (切記:u后面直接跟用戶名或uid 不可再跟選項,o選項也是ruci
補充:pidof命令:(查找正在運行的進程的PID)
示例:pidof bash
? ? ? ? ? ? pidof httpd
kill命令:向進程發送控制信號,以實現對進程管理,每個信號對應一個數字
信號名稱以SIG 開頭(可省略),不區分大小寫
查看當前系統可用信號可用kill -l或者trap –l命令
常用信號:
1) SIGHUP :無須關閉進程而讓其重讀配置文件
2) SIGINT :中止正在運行的進程;相當于Ctrl+c
3) SIGQUIT :相當于ctrl+\
9) SIGKILL :強制殺死正在運行的進程
15) SIGTERM :終止正在運行的進程
18) SIGCONT :繼續運行
19) SIGSTOP :后臺休眠

指定信號的方法:
(1) 信號的數字標識:1, 2, 9
(2) 信號完整名稱:SIGHUP可簡寫名稱為:HUP

kill命令用法:
按PID :kill [-SIGNAL] pid …
示例:kill PID ? ?##“殺死”指定PID的進程
kill -n [SIGNAL] PID ? ##向指定PID的進程發送某一信號
按名稱:killall [-SIGNAL] comm…
示例:killall ping ? ##“殺死”命令ping的進程
kill vim ?##“殺死”命令vim的進程
按模式:pkill [options] pattern (pgrep 與 kill的結合,選項與pgrep相似)
示例:pkill -t pts/2 ? ?##“殺死”終端為pts/2的所有進程
pkill “^ping” ?##“殺死”命令以ping開頭的進程

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86695

(2)
MozartMozart
上一篇 2017-09-09 18:22
下一篇 2017-09-09 19:28

相關推薦

  • Linux網絡屬性配置

      如何將linux主機接入到TCP/IP網絡中:     第一步:         配置IP/NETMASK(ip地址、子網掩碼):本地通信     第二步:   &n…

    Linux干貨 2016-12-16
  • history命令詳解,銘記歷史,圓夢中華。

        銘記歷史,圓夢中華。在Linux操作系統中,對于管理員操作的命令進行查詢也是非常重要,而且熟練掌握調用命令歷史能提高管理員管理系統的效率。     history的命令緩存數目是由一個在/etc/profile文件名為HISTSIZE的變量決定,可以通過env命令查看當前設定的數目,也可以通…

    Linux干貨 2016-07-26
  • N26-第五周博客

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@localhost ~]# grep "^[[:space:]].*$" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; [root…

    系統運維 2017-02-10
  • LAMP系列之(php-fpm模式)分布三臺機器部署

    LAMP系列之(php-fpm模式)分布三臺機器部署 現在我們需要做一個實驗,就是把apache , php-fpm , mariadb ,分別安裝在3臺機器上,協同工作具體如下: 192.168.42.150 apache 192.168.42.151 php-fpm 192.168.42.152 mariadb 關閉防火墻 關閉selinux 分別給這3…

    Linux干貨 2017-06-03
  • http2.4版本基本配置應用

    練習題:分別使用httpd-2.2和httpd-2.4實現; 1、建立httpd服務,要求: (1) 提供兩個基于名稱的虛擬主機: www1.stuX.com,頁面文件目錄為/web/vhosts/www1;錯誤日志為/var/log/httpd/www1/error_log,訪問日志為/var/log/httpd/www1/access_log; www2…

    2017-06-05
  • Linux的用戶組和權限管理之特殊權限及ACL的使用

    用戶組和權限管理 一、了解和使用批量新建用戶和批量修改用戶密碼: ##用戶創建的模板和配置文件的存放位置:/etc/default/useradd;/etc/skel/* ;/etc/login.defs## 批量新建用戶(newusers):適合用于新老機器轉換時,遷移系統上的用戶。 使用格式: newusers  passwd  fi…

    Linux干貨 2016-08-04
欧美性久久久久