天天看點

搞它!!!Linux系統中檢視程序和計劃任務管理一、檢視程序2、檢視靜态的程序統計資訊(top)二、控制程序三、at一次性任務設定四、 crontab周期性任務設定

首先我們了解一下程式和程序的關系:

程式:

儲存在 、CD光牒等媒體中的可執行代碼和資料靜态儲存的代碼

程序:

在CPU及記憶體中運作的程式代碼動态執行的代碼

一、檢視程序

1、檢視靜态的程序統計資訊(ps)

ps指令(檢視靜态的程序統計資訊Processes Statistic)

是Linux系統中最為常用的程序檢視工具,主要用于顯示包含目前運作的各程序完整資訊的靜态快照,通過不同的指令選項,可以有選擇性的檢視程序資訊

ps -aux(将以簡單清單形式顯示出程序資訊):

a:顯示目前終端下所有程序資訊,包含其他使用者程序。與“x”選項結合時顯示系統中所有程序資訊
   u:使用以使用者為主的格式輸出程序資訊
   x:顯示目前使用者在所有終端下的程序資訊

  -e:顯示系統内的所有程序資訊
  -l:使用長格式顯示程序資訊
  -f:使用完整的格式顯示程序資訊           

複制

[root@localhost 桌面]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.3  0.1  19360  1544 ?        Ss   16:29   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    16:29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:29   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    16:29   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    16:29   0:00 [migration/0]           

複制

下面來解釋一下各字段含義

1、USER:使用者
2、PID:程序号(ls -l | grep init可以看到init的軟連結,1程序為init)
3、%CPU:程序的cpu占用率
4、%MEM:程序的記憶體占用率
5、VSZ:虛拟記憶體占用
6、RSS:實體記憶體占用
7、TTY:終端(?代表未知,大多為本地)
8、STAT:目前程序狀态,其中
“S”:可中斷休眠程序
“D”:不可中斷休眠程序
“s”:父程序
“<”:代表優先級高
“N”:代表優先級低
“R”:代表正在運作的程序
“I”:多線性程序
“Z”:僵屍程序
“+”:前台程序
9、START:啟動時間
10、TIME:程序占用cpu的總時間
11、COMMAND:程序的名稱           

複制

ps -elf(将以長格式顯示系統中的程序資訊):

[root@localhost 桌面]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  4840 poll_s 16:29 ?        00:00:02 /sbin/init
1 S root          2      0  0  80   0 -     0 kthrea 16:29 ?        00:00:00 [kthreadd]
1 S root          3      2  0 -40   - -     0 migrat 16:29 ?        00:00:00 [migration/0]
1 S root          4      2  0  80   0 -     0 ksofti 16:29 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0 -40   - -     0 cpu_st 16:29 ?        00:00:00 [migration/0]
5 S root          6      2  0 -40   - -     0 watchd 16:29 ?        00:00:00 [watchdog/0]
1 S root          7      2  0 -40   - -     0 migrat 16:29 ?        00:00:00 [migration/1]
1 S root          8      2  0 -40   - -     0 cpu_st 16:29 ?        00:00:00 [migration/1]
1 S root          9      2  0  80   0 -     0 ksofti 16:29 ?        00:00:00 [ksoftirqd/1]
5 S root         10      2  0 -40   - -     0 watchd 16:29 ?        00:00:00 [watchdog/1]
1 S root         11      2  0  80   0 -     0 worker 16:29 ?        00:00:01 [events/0]
1 S root         12      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [events/1]
1 S root         13      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [cgroup]
1 S root         14      2  0  80   0 -     0 worker 16:29 ?        00:00:00 [khelper]           

複制

了解一下各字段含義

1、PPID:目前程序的父程序
2、PIR:使用者态(人可以進行互動額)優先級
3、NI:核心态優先級(-20~19,數值越低優先級越高)
4、ADDR:-代表正在運作
5、SZ:占用swap交換分區的容量
6、WCHAN:目前程序核心态的名稱
7、CMD:指令名稱           

複制

2、檢視靜态的程序統計資訊(top)

使用ps指令檢視到的是一個靜态的程序資訊,并不能連續的回報出目前程序的運作狀态,若希望以動态重新整理的方式顯示各程序的狀态資訊,可以使用top指令,該指令将會在目前終端全屏互動式的界面顯示程序排名,及時跟蹤包括CUP、記憶體等系統資源占用情況,預設情況下每隔3秒重新整理一次,其作用類似于windows系統中的“任務管理器”。

搞它!!!Linux系統中檢視程式和計劃任務管理一、檢視程式2、檢視靜态的程式統計資訊(top)二、控制程式三、at一次性任務設定四、 crontab周期性任務設定

Linux系統中檢視程序和計劃任務管理

表中的資訊表述含義如下:

1、total:總程序數
2、running:正在運作的程序數
3、sleeping:休眠的程序數、
4、stopped:中止的程序數
5、zombie:僵死無響應的程序數
6、%Cpu(s):CPU占用資訊,其中:
“us”:使用者占用
“sy”:核心占用
“ni”:核心排程優先級
“id”:空閑空間占用
“wa”:IO讀寫占用
“hi”:硬線程占用
“si”:軟線程占用
“st”:虛拟化占用
7、Men:記憶體占用資訊,其中:
“total”:總記憶體空間
“free”:空閑記憶體
“used”:已用記憶體
“buff/cahce”:緩存占用
8、Swap:交換空間占用,其中:
“total”:總交換空間
“free”:空閑交換空間
“used”:已用交換空間
“avail men”:實體占用           

複制

3、pgrep指令(查詢程序資訊)

當使用ps指令查詢某個程序新的PID資訊時,往往需要配合grep指令對輸出結果進行過濾,但這樣使用非常不友善,而pgrep指令則正是用來查詢特定程序資訊的專用工具,使用pgrep指令可以根據程序的名稱、運作該程序的使用者、進城所在的終端等多種屬性查詢特定程序的PID号。

-l:既顯示PID也顯示程序名

-U:檢視指定使用者的程序,此處例如zhangsan           

複制

4、pstree指令(檢視程序樹)

pstree指令可以輸出Linux系統中各程序的樹形結構,更加直覺的判斷出各程序之間的互相關系(父、子程序)。

常用選項:

-p:同時列出相對應的PID号
-u:列出相對應的使用者名
-a:列出完整的指令資訊           

複制

二、控制程序

1、程序的啟動方式

(1)手工啟動

前台啟動:使用者輸入指令,直接執行程式

背景啟動:在指令行尾加入按&符号

[root@localhost~]#cp /dev/cdrom mycd/iso &            

複制

(2)排程啟動

使用at指令,是指一次性計劃任務

使用crontab指令,設定周期性計劃任務

(3)程序的前背景排程

1、Ctrl+Z組合鍵:

當Linux系統中的指令正在前台執行時,按Ctrl+Z組合鍵可以将目前程序挂起(調入背景并停止執行),這種操作在需要暫停目前程序并進行其他操作時特别有用。

2、jobs指令:

需要檢視目前終端中在背景運作的程序任務時,可以使用jobs指令,結合“-l”選項可以同時顯示處該程序對應的PID号,在jobs指令的輸出結果中,每一行記錄對應一個背景程序的狀态資訊,首行的數字表示該程序在背景的任務編号。

3、fg指令:

将背景程序恢複到前台運作,可指定任務序号,示例如下:

[root@localhost~]#jobs
[1]- Stopped cp/dev/cdrom mycd.iso
[2]+ Stopped top
[root@localhost~]#fg 1           

複制

(3)終止程序的運作

1、Ctrl+C組合鍵

中斷正在執行的指令

2、kill、killall指令(跟号碼,具有唯一性)

常用選項:

kill:用于終止指定PID号的程序
killall:用于終止指定名稱的所有程序
-9:選項用于強制終止           

複制

pkill指令

1.根據特定條件終止相應的程序

2.常用選項:

-U:根據程序所屬的使用者名終止相應程序
-t:根據程序所在的終端終止相應程序           

複制

如果此時我們想把張三使用者踢出,使用Xshell界面登入的root賬戶下輸入:pkill -9 -U zhangsan,敲回車,此時系統會自動跳回開機之後的使用者登入界面,zhangsan使用者的所有程序全部被終止

三、at一次性任務設定

格式:at [HH:MM] [yyyy-mm-dd]

具體執行操作如下:

1、[root@localhost~]#date(擷取系統的目前時間)
2、2019年 08月 24日 星期六 16:08:24 CST
3、[root@localhost~]#at 16:12 2019-08-24(計劃性時間要在系統目前時間之後)
4、at>ps aux | wc -l > /opt/ps.txt(确定執行的動作)
5、ctrl+d(送出)
6、atq(檢視計劃任務)
7、atm2删除第二條任務計劃
Linux系統中檢視程序和計劃任務管理
到了計劃時間之後輸入:ls /opt/檢視目錄
此時顯示計劃的檔案ps.txt被寫入
Linux系統中檢視程序和計劃任務管理           

複制

四、 crontab周期性任務設定

crontab(定時任務)

使用crontab指令設定的計劃任務可以按預設的周期重複執行,可以大大減輕重複性系統管理任務的操作

軟體包cronie 提供crontab工具,系統服務crond和配置檔案 /etc/crontab。

開啟系統服務crond 是啟動周期性任務的前提條件

1、crontab的配置檔案和目錄

crond通過多個目錄和檔案設定計劃任務,不同類型的任務由不同的配置檔案來配置

(1) /etc/crontab 全局配置檔案

全局配置檔案

/etc/crontab 檔案中設定的是維護Linux系統所需的任務

Linux系統及相關程式在安裝時自動設定

不建議使用者手動修改此檔案

[root@localhost ~]# cat /etc/crontab		'//檢視系統任務配置檔案'
SHELL=/bin/bash				'//設定執行計劃任務的Shell環境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定義可執行指令及程式的路徑'
MAILTO=root				'//将任務輸出資訊發送到指定使用者的郵箱'
HOME=/ 			'//執行計劃任務時使用的主目錄'

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)		'//分鐘範圍:0-59'
# |  .------------- hour (0 - 23)		'//小時範圍:0-23'
# |  |  .---------- day of month (1 - 31)		'//一個月的天數範圍:1-31'
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月數範圍:1-12'
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一周的天數範圍: 0-6(周日用0或者7表示)'
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed           

複制

2、/etc/cron.*/ 系統預設設定

系統預設設定cron任務的配置檔案存放目錄

軟體包crontabs安裝後,會在/etc/cron.*/目錄下生成存放一些系統預設設定的計劃任務目錄,設定了系統每個小時,每一天做些什麼任務

例如:

/etc/cron.hourly/ 目錄下存放的是系統每小時要做的任務可執行腳本

/etc/cron.daily/ 目錄下存放的是系統每天要做的任務可執行腳本

/etc/cron.weekly/ 目錄下存放的是系統每周要做的任務可執行腳本

/etc/cron.monthly/ 目錄下存放的是系統每月要做的任務可執行腳本

這些是可執行腳本,不是cron配置檔案,crond服務通過run-parts 工具調用執行這些腳本

3、/var/spool/cron/使用者名 使用者定義的位置

使用者自行設定的cron計劃任務将被儲存到目錄/var/spool/cron/中

使用者使用crontab指令建立計劃任務,就會在/var/spool/cron/目錄下生産一個與使用者名相同的檔案

例如:root使用者的cron計劃任務儲存在配置檔案/var/spool/cron/root中

crond守護程序會自動檢查上述三個檔案,若有配置更改,就會載入記憶體,不需重新開機crond守護程序就可以使設定生效

[root@localhost ~]# ls -l /var/spool/cron/*
ls: 無法通路/var/spool/cron/*: 沒有那個檔案或目錄		'//沒有建立任務'           

複制

2、使用crontab指令管理使用者的計劃任務

常用選項
crontab -e [-u 使用者名]  		'//編輯計劃任務  e:edit,編輯,使用方式同Vim編輯器。'
crontab -l [-u 使用者名] 		'//檢視計劃任務  l:list,清單'
crontab -r [-u 使用者名]  		'//删除計劃任務  r:remove,移除'

crontab -l 		'//檢視目前使用者的計劃清單'
crontab -l -u lisi 		 '//檢視lisi使用者的計劃任務'

crontab -e 		'//可以操作删除一條計劃任務'
crontab -r 		'//删除使用者所有的計劃任務'           

複制

指令格式: 時間周期設定 + 任務内容設定

搞它!!!Linux系統中檢視程式和計劃任務管理一、檢視程式2、檢視靜态的程式統計資訊(top)二、控制程式三、at一次性任務設定四、 crontab周期性任務設定
時間數值的特殊表示方法
*  表示該範圍内的任意時間
,  表示間隔的多個不連續的時間點
-  表示一個連續的時間範圍
/  指定間隔的時間頻率
例如:
0 17 * * 1-5  		 '//表示周一到周五每天17:00'
30 8 * * 1,3,5 		'// 表示每周一,三,五的8點30分'
0 8-18/2 * * * 		'// 表示8點到18點之間每2小時'
0 * */3 * *  		'//表示每3天'           

複制

分鐘字段應該填寫一個具體的時間數值,不可是“*”,否則将會每一分鐘都執行一次任務

執行個體

如:每天15:30将/home/中zhangsan目錄複制到/opt/中
[root@localhost ~]# crontab -e		'//編輯計劃任務'
進入編輯清單開始編輯,操作類似vim 編輯器
30 15 * * * /usr/bin/cp -r /home/zhangsan /opt/		'//在其中編輯好任務,wq儲存退出'           

複制