在正式開始博客正文以前,這裏先對進程作一個簡單的概述。進程是什麼?
進程實際上只是一段代碼,不過與咱們常常聽到的程序不一樣的是。
程序是保存在介質中的代碼,屬於靜態保存的代碼;
而進程是在CPU及內存中運行的代碼,屬於動態保存的代碼。ide
查看進程咱們一般使用的命令有兩種:PS命令和TOP命令,接下來我就針對這兩個命令分別進行詳細的解釋:3d
PS命令用來列出系統中當前運行的那些進程,但與咱們後面介紹的TOP命令不一樣的是,PS命令所展示的進程相似於快照,屬於靜態的;而TOP命令則屬於動態的。
經常使用命令選項組合:code
[root@localhost ~]# ps aux
其中,ps後面每一個選項的意義分別爲:blog
a————列出系統當前全部進程
u————使用以用戶格式爲主的方式輸出
x————該用戶在終端下的全部進程進程
界面示意截圖:
「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————以完整格式進行顯示登錄
界面示意截圖:
和「ps aux」同樣該命令的表頭一樣有着不一樣的含義(上面介紹過的表頭這裏就不浪費口水複述了):
PPID——該進程的父進程的PID號
C——CPU佔用率
PRI——用戶態的進程優先級(數值越小優先級越高)
NI——內核態的進程優先級(數值越小優先級越高)
ADDR——進程狀態(「-」表示正在運行)
SZ——該進程佔用虛擬交換分區(swap)的容量
WCHAN——該進程在內核中的名稱
TIME——運行時間
和以前的PS命令同樣,TOP也是用來顯示進程表的,不過PS顯示的是靜態的進程表,而TOP則顯示的是動態的進程表(刷新頻率:每3s刷新一次)。
具體界面截圖:
光是瞭解進程還不夠,最主要的仍是可以對進程進行控制,下面的幾個命令就是平常用的最多的控制進程的命令:
經常使用命令選項組合:
[root@localhost ~]# pgrep -l "log"
其中,「log」爲進程關鍵字。具體界面截圖以下:
[root@localhost ~]# pgrep -l -U root -t pts/0
其中,「-U」後面爲用戶,「-t」後面爲終端號:
經常使用命令選項組合:
[root@localhost ~]# pstree -aup
其中,
-a——表示顯示完整信息
-u——表示顯示用戶
-p——表示顯示PID號
具體界面截圖以下:
另外,還有一種組合僅僅只列出某個用戶的進程樹:
[root@localhost ~]# pstree -ap root
「-ap」後面爲相關用戶名
具體界面截圖以下:
雖然這三個命令都是用來終止進程,不過三者之間仍有很大的區別。
kill命令——後面一般跟PID號,意爲「殺死」指定某個進程;
killall命令——後面一般跟進程關鍵字,意爲「殺死」含有關鍵字的全部進程;
pkill命令——後面一般跟「-U/-t」再加上用戶名/終端,意爲「殺死」指定用戶/終端下的全部進程。
但三者均可以使用「-9」,將正在運行的進程「強制」終止。
三者具體界面截圖以下:
控制進程不光是掌控進程的「生死」,而是爲了讓進程可以更好的爲咱們工做,因此調度必不可少。
一般狀況,全部鍵入的指令都會在前臺運行,在運行大容量的複製、移動等操做時,前臺運行會大大增長等待時間,因此咱們能夠在日常的指令後加「&」符號將其移入後臺執行,並用jobs命令查看,例:
[root@localhost ~]# dd if=/dev/zero of=/mnt/aaa.txt bs=1G count=10 & [root@localhost ~]# jobs -l
具體示意截圖:
一樣咱們也能夠用bg命令加序號(上面3987PID的前面就是序號)的方式將後臺的進程調回前臺執行,並使用「ctrl z」的快捷鍵將前臺進程掛起,並以中止的方式調回後臺。
`[root@localhost ~]# fg 1 ^Z
具體示意截圖:
經常使用選項組合:
[root@localhost ~]# at 17:00 2019-08-26
其中
「17:00」——表示一次性計劃執行時間
「2019-08-26」——表示一次性計劃執行日期
具體操做案例:
完成一次性計劃任務後,可使用atq命令進行查看、使用atrm命令進行對應的刪除
[root@localhost ~]# atq [root@localhost ~]# atrm 對應序列
具體操做截圖:
at命令被用於建立一次性計劃任務,那麼相對應的可屢次執行的計劃任務也一樣存在。
Crontab命令
經常使用的選項:
-u——哪一個用戶進行執行
-e——對計劃任務進行編輯
-l——查看全部的計劃任務
-r——刪除對應用戶下全部週期性任務
選項後的格式爲:(分時日月周)
分鐘、小時、日期、月份、星期 命令
具體使用見截圖:
其中各個時間數值的特殊表示方法:
「 * 」 :表示該範圍內的任意時間
「 ,」:表示間隔的多個不連續時間點
「 - 」 :表示一個連續的時間範圍
「 / 」 :指定間隔的時間頻率
具體應用實例截圖: