Centos 7之進程的控制與調度

本篇博客將詳細介紹Liunx系統中與進程有關的相關命令,主要能夠分爲如下幾個方面:


目錄:

  • 查看進程
  • 控制進程
  • 一次性任務設置
  • 週期性任務設置

前言:

在正式開始博客正文以前,這裏先對進程作一個簡單的概述。進程是什麼?
進程實際上只是一段代碼,不過與咱們常常聽到的程序不一樣的是。
程序是保存在介質中的代碼,屬於靜態保存的代碼;
而進程是在CPU及內存中運行的代碼,屬於動態保存的代碼。ide

1、查看進程

查看進程咱們一般使用的命令有兩種:PS命令和TOP命令,接下來我就針對這兩個命令分別進行詳細的解釋:3d

一、PS命令

PS命令用來列出系統中當前運行的那些進程,但與咱們後面介紹的TOP命令不一樣的是,PS命令所展示的進程相似於快照,屬於靜態的;而TOP命令則屬於動態的。
經常使用命令選項組合:code

[root@localhost ~]# ps aux

其中,ps後面每一個選項的意義分別爲:blog

a————列出系統當前全部進程
u————使用以用戶格式爲主的方式輸出
x————該用戶在終端下的全部進程進程

界面示意截圖:
Centos 7之進程的控制與調度
「ps aux」所展示的列表的表頭也有着本身不一樣的含義,從左到右分別爲:內存

USER——表明進程在哪一個用戶下
PID——表明進程對應的進程號
%CPU——表明進程的CPU佔用率
%MEM——表明進程的內存佔用率
VSZ——虛擬內存佔用
RSS——物理實際內存佔用
TTY——終端(這裏都是?的緣由是,經過本地登陸通常都是?)
STAT——當前進程所處的狀態(不一樣字符表明不一樣的狀態:S表示可中斷的休眠進程;s表示父進程;<表示優先級高的進程;R表明正在運行的進程;l表明多線性進程;N表明優先級低;Z表明殭屍進程;D表明不可中斷的休眠進程;+表明的是前臺進程)
START——表明進程開始時間
TIME——表明該進程佔用CPU的時間
COMMAND——進程自己名稱博客

關於查看靜態的進程表,還有另一種查看方式it

[root@localhost ~]# ps -elf

其中,ps後面每一個選項的意義分別爲:class

-e————顯示當前系統全部進程
-l————以長格式進行顯示
-f————以完整格式進行顯示登錄

界面示意截圖:
Centos 7之進程的控制與調度
和「ps aux」同樣該命令的表頭一樣有着不一樣的含義(上面介紹過的表頭這裏就不浪費口水複述了):

PPID——該進程的父進程的PID號
C——CPU佔用率
PRI——用戶態的進程優先級(數值越小優先級越高)
NI——內核態的進程優先級(數值越小優先級越高)
ADDR——進程狀態(「-」表示正在運行)
SZ——該進程佔用虛擬交換分區(swap)的容量
WCHAN——該進程在內核中的名稱
TIME——運行時間

二、TOP命令

和以前的PS命令同樣,TOP也是用來顯示進程表的,不過PS顯示的是靜態的進程表,而TOP則顯示的是動態的進程表(刷新頻率:每3s刷新一次)。
具體界面截圖:
Centos 7之進程的控制與調度

2、控制進程

光是瞭解進程還不夠,最主要的仍是可以對進程進行控制,下面的幾個命令就是平常用的最多的控制進程的命令:

(1)pgrep命令——根據特定條件查詢進程PID信息

經常使用命令選項組合:

[root@localhost ~]# pgrep -l "log"

其中,「log」爲進程關鍵字。具體界面截圖以下:
Centos 7之進程的控制與調度

[root@localhost ~]# pgrep -l -U root -t pts/0

其中,「-U」後面爲用戶,「-t」後面爲終端號:
Centos 7之進程的控制與調度

(2)pstree命令——以樹形結構列出進程信息

經常使用命令選項組合:

[root@localhost ~]# pstree -aup

其中,

-a——表示顯示完整信息
-u——表示顯示用戶
-p——表示顯示PID號

具體界面截圖以下:
Centos 7之進程的控制與調度
另外,還有一種組合僅僅只列出某個用戶的進程樹:

[root@localhost ~]# pstree -ap root

「-ap」後面爲相關用戶名
具體界面截圖以下:
Centos 7之進程的控制與調度

(3)kill、killall、pkill命令——終止進程

雖然這三個命令都是用來終止進程,不過三者之間仍有很大的區別。

kill命令——後面一般跟PID號,意爲「殺死」指定某個進程;
killall命令——後面一般跟進程關鍵字,意爲「殺死」含有關鍵字的全部進程;
pkill命令——後面一般跟「-U/-t」再加上用戶名/終端,意爲「殺死」指定用戶/終端下的全部進程。

但三者均可以使用「-9」,將正在運行的進程「強制」終止。
三者具體界面截圖以下:
Centos 7之進程的控制與調度
Centos 7之進程的控制與調度
Centos 7之進程的控制與調度

(4)進程的調度

控制進程不光是掌控進程的「生死」,而是爲了讓進程可以更好的爲咱們工做,因此調度必不可少。
一般狀況,全部鍵入的指令都會在前臺運行,在運行大容量的複製、移動等操做時,前臺運行會大大增長等待時間,因此咱們能夠在日常的指令後加「&」符號將其移入後臺執行,並用jobs命令查看,例:

[root@localhost ~]# dd if=/dev/zero of=/mnt/aaa.txt bs=1G count=10 &
[root@localhost ~]# jobs -l

具體示意截圖:
Centos 7之進程的控制與調度
一樣咱們也能夠用bg命令加序號(上面3987PID的前面就是序號)的方式將後臺的進程調回前臺執行,並使用「ctrl z」的快捷鍵將前臺進程掛起,並以中止的方式調回後臺。

`[root@localhost ~]# fg 1
^Z

具體示意截圖:
Centos 7之進程的控制與調度

3、at命令——一次性任務

經常使用選項組合:

[root@localhost ~]# at 17:00 2019-08-26

其中

「17:00」——表示一次性計劃執行時間
「2019-08-26」——表示一次性計劃執行日期

具體操做案例:
Centos 7之進程的控制與調度
完成一次性計劃任務後,可使用atq命令進行查看、使用atrm命令進行對應的刪除

[root@localhost ~]# atq
[root@localhost ~]# atrm 對應序列

具體操做截圖:
Centos 7之進程的控制與調度

4、Crontab命令——週期性任務

at命令被用於建立一次性計劃任務,那麼相對應的可屢次執行的計劃任務也一樣存在。
Crontab命令
經常使用的選項:

-u——哪一個用戶進行執行
-e——對計劃任務進行編輯
-l——查看全部的計劃任務
-r——刪除對應用戶下全部週期性任務

選項後的格式爲:(分時日月周)
分鐘、小時、日期、月份、星期 命令
具體使用見截圖:
Centos 7之進程的控制與調度
其中各個時間數值的特殊表示方法:

「 * 」 :表示該範圍內的任意時間
「 ,」:表示間隔的多個不連續時間點
「 - 」 :表示一個連續的時間範圍
「 / 」 :指定間隔的時間頻率

具體應用實例截圖:
Centos 7之進程的控制與調度

以上,就是在Liunx系統中經常使用的關於進程方面的各類指令,謝謝各位的閱讀!!讓咱們下篇博客再見。

相關文章
相關標籤/搜索