一、進程管理
1.1、程序、進程和線程的關系
程序:存放在磁盤上靜態代碼
進程:
1、用戶角度:進程是程序的一次動態執行過程。
2操作系統:進程是操作系統分配資源(CPU、內存、硬盤)的最小單位
線程是CPU執行任務的最小單位。
線程存在進程中,進程中資源共享。
多任務:同時運行多個進程,
單核CPU的主機,如何實現並發運行進程? 時間片
1.2、ps命
查看靜態的進程統計信息(report a snapshot of the current processes)
ps命令是Linux系統中最為常用的進程查看工具,主要用於顯示包含當前運行的各進程完整信息的靜態快照。通過不同的命令選項,可以選擇性的查看進程信息。
a:顯示當前終端下的所有進程信息,包括其他用戶的進程。 u:用戶信息。
x;顯示當前用戶在所有終端下的進程詳細信息。 -e:顯示系統內的所有進程信息。。 -1:使用長格式顯示進程信息。
-f:使用完整的格式顯示進程信息(顯示父進程)。。 -F:顯示更完整格式的進程信息
-H:以進程層級格式顯示進程相關信息。
執行“psaux”命令后,將以簡單列表的形式顯示出進程信息。
[root@localhost~]#ps aux
USER:啟動該進程的用戶賬號的名稱。
PID:該進程在系統中的PID號,在當前系統中是唯一的。
%CPU:CPU占用的百分比。
%MEM:內存占用的白分比。
vsz:占用虛擬內存swap空問的大小。
RSS:占用常駐內存物理內存的大小。。
TTY:表明該進程在哪個終端上運行。“?”表示未知或不需要終端
STAT:顯示了進程當前的狀態:
D:不可中斷睡眠
s:可中斷的睡眠
R:就緒或運行狀態
T:中止狀態或未跟蹤未停止等待。
Z:僵死狀態
<:高優先級進程
N:低優先級進程
+:前台進程組中的進程(進程的領導者)
l:多線程的進程。
s:會話進程的首進程
START:啟動該進程的時問。
TIME:該進程占用的CPU時問。
COMMAND:啟動該進程的命今的名稱。
若執行“ps-e1f”命令,則將以長格式顯示系統中的進程信息,並且顯示內容較多。輸出信息中還包括PPID列(表小對應進程的父進程的PID號)。
[root@localhost ~]# ps-elf
1.3、top命令
查看進程動態信息。
top命令將會在當前終端以全屏交互式的界面顯示進程排名,及時跟蹤包括CPU、內存等系統資源占用情況,默認情況下每三秒刷新一次。
上述輸出信息中,開頭的部分顯示了系統任務Tasks、CPU占用、內存占用Mem交換空間Swan等信息,下方將依次顯示當前進程的排名情況。。
top-16:58:24當前系統時間;1:54:系統已經運行1小時54分鍾:2users當前登錄2個用戶:loadaverage:0.00,0.00,0.00:系統平均負載:(1分鍾的,5分鍾的,15分鍾的)狀態。
系統任務Tasks信息:total:總進程數;running:正在運行的進程數;sleeping:休眠的進程數;stopped:中止的進程數;zomibe:僵死無響應的進程數。
CPU占用信息:us:用戶占用:sy:內核占用:ni:優先級調度占用:id:空閑CPU:wa:1/0等待占用:hi:硬件中所占用:si:軟件中斷占用:st;虛擬化占用。Rt:實時變化。
內存占用Mem信息:total,總內存空間:used,已用內存;free,空閑內存:buffers.緩沖區域。
交換空問swap占用:total,總交換空問:used,已用交換空間:free,空閑交換空間: cached,緩存空間。
PID:進程號
USER:進程所有者的用戶名
PR:優先級
N:nice值。負值表示高優先級,正值表示低優先級
VIRT:進程使用的虛擬內存總量,單位kb.
RES:進程使用的、未被換出的物理內存大小,單位kb
SHR:共享內存大小,單位kb。
s:進程狀態。
COMMAND: 命令
常用選項:
-d:指定刷新的間隔時間,單位秒
-b:以批量處理模式操作(非交互),一般與n同時使用。
-n:指定循環顯示的次數 u:指定用戶名
-p:指定進程號
各選項的使用示例:
(1) top-d 指定刷新的間隔時間。
[root@localhost~]#top-d5
(2) topbn以批量處理模式操作同時指定循環顯示的次數。
[root@localhost~]#top-b-n2
注意:當CPU占用率過高時,不應再直接執行1op 命令查看,可以將信息存入一個文件內查看,以免CPU占用率過高導致崩潰。操作如下,
[root@localhost~]#topb-n1>/top.txt
[root@localhost ~]# cat/top.txt
(3)top-u指定用戶名
[root@lacalhost ~]# top -u lisa
(4)topp指定進程號
[root@localhost ~]# top -p 7767
在top命令的全研操作界面中,可以按P健根據CPU占用情況對進程列表進行排序,或按M鍵根據內存占用情況進行排序,按N鍵根據啟動時間進行排序。按h鍵可以獲得 lop程序的在線幫助信息,按q鍵可以正常退出top程序。
常用交互命令
P:根據CPU使用自分比大小進行排序(默認進入時即為此排序)
M:根據駐留內存大小進行排序。
T:根據累積時間進行排序。
k:終止一個進程。
q:退出程序。
r:重新安排一個進程的優先級別
1.4、pgrep命令(大致了解)
查詢特定進程信息
pgrop命令止是用來查詢特定進程信息的專用工具。使用pgrcp命令可以根據進程的名稱、運行該進程的用戶、進程所在的終端等多種屬性查詢特定進程的PID號。
-l:顯示進程名。
-u指定特定用戶
t:指定終端
a:顯示完整格式的進程名
-P pid:顯示指定進程的子進程
[root@localhost ~]# pgrep-1"log
1.5、pstree命令
pstree命令可以輸出Linux系統中各進程的樹形結構,判斷出各進程之間的相互關系(父、子進程)。pstree命令默認情況下只顯示各進程的名稱。
-p:選項使用時可以同時列出對應的P1D號。
-u:選項可以列出對應的用戶名。
-a:選項可以列出完整的命令信息。
顯示當前系統可用信號:kill l trap
l:列出當前kill能夠使用的信號(注意是小寫L)。
[root@localhost ~]# kill -1
常用信號:man 7 signal
1) SIGUUP:無須關閉進程而讓其重讀配置文件。
2)STGTNT:終止正在運行的進程;相當於Ctr1+c.
9)SIGKILL:殺死正在運行的進程(強制立刻殺死進程)。
15)SICTERM:終止正在運行的進程(可能不會立即生效,會等進程保存完所有數據才正常退出)。
指定信虧的方法:*
(1) 信號的數字標識:1,2 ,9
(2)信號完整名稱:SIGLIUP
(3)信號的簡寫名稱:IIUP
顯示當前系統可用信號:kill l trap
l:列出當前kill能夠使用的信號(注意是小寫L。[root@localhost ~]# kill -1
顯示當前系統可用信號:kill l trap
l:列出當前kill能夠使用的信號(注意是小寫L。[root@localhost ~]# kill -1
1.6、終止進程
Ctr1+C中斷正在執行的命令。
Kill,killall命令
kill:向進程發送控制信號,以實現對進程管理。
顯示當前系統可用信號:ki11 -1 trap -1.
-l:列出當前kill能夠使用的信號(注意是小寫L)
[root@localhost ~]# kill -I
常用信號:man7signal
1) SIGHUP:無須關閉進程而讓其重讀配置文件。
2)SIGINT:終止正在運行的進程:相當於Ctrltc
9)SIGKILL:殺死正在運行的進程(強制立刻殺死進程)
執行“pstree-aup”命令可以查看當前系統的進程樹,包括各進程對應的PID號、用戶名、完整命令等信息。
[root@localhost~]#pstree -aup
1.7、pkill命令
作用:根據特定條件終止相應的進程。
常用選項:
-u:根據進程所屬的用戶名終止相應進程
-t:根據進程所在的終端終止相應進程。
二、任務管理
2.1、基本概念
任務
登錄系統取得shell之后,在單一終端接口下啟動的進程。
前台
在終端接口上,可以在提示符上用戶操作的環境。
后分
不顯示在終端接口的環境-
2.2、於工啟動
(1)前台啟動:用戶輸入命令,直接執行程序
[root@localhost~]#ping127.0.0.1
(2)后台啟動:在命令行尾加入“&”符號。
[root@localhost~]#ddif=/dev/zeroof=/testfilebs=1M count=2048&
[1]11437
(3)nohup是使程序永久執行的方式
Rm COMMAND ignoringhangupsignals可以看到是“運行命令,忽略掛起信號”就是指,用nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關系,例如我們斷開SSH連接都不會。
&是指在后台運行,但當用戶退出(掛起)的時候,命令自動也跟着退出.
那么,我們可以巧妙的吧他們結合起來用就是
nohup COMMAND &
這樣就能使命令永久的在后台執行
[root@localhost~]# nohup tail-f/var/log/messages&
另外,nohup執行后,會產生子文件,把命令的執行中的消息保存到這個文件中,一般在當前目錄下,如果當前目錄不可寫,那么自動保存到執行這個命令的用戶的home目錄下,例如root的話就保存在/root/下這個我們常在運行命令和腳本中常用到的。
2.3、進程的前后台調度
ctr1+%:將正在前台運行的任務放入后台暫停。
jobs:查看處於后台的任務列表
-l 列山進程 ID) 及其它信息。
-p僅列出進程TD。
-n僅列出自從上次輸出了狀態變化提示(比如顯示有進程退出)后的發生了狀態變化的進程。
-r僅顯示運行中的作業。
-s僅顯小停止的作業。
-x運行命令及其參數,並用新的命令的進程ID替代所匹配的原有作業的進程組
fg:將后台進程恢復到前台運行,可指定任務程序號。
bg:將后台暫停的進程調至后台運行。
at:管理一次性任務計划。
crontab:管理周期任務計划。
[root@localhost ~]# dd if=/dev/zero of=/testfile bs=1M count=2048
2.4、at一次性任務設置
at命令設置的計划任務只在指定的時間點執行一次,前提是對應的系統服務atd必須已經運行。需要注意的是,計划執行任務的時間、日期必須安排在當前系統的時刻之后,否則將無法正確設置計划任務.
設置一次性計划任務時,在at命令行中依次指定計划執行任務的時間、日期作為參數(若只指定時間則表示當天的該時間,若只指定日期則表示該日期的當前時問),確認后將進入帶“at>”提示符的任務編輯界面,每行設置一條執行命令,可以依次設置多條語句,最后按Ctrl+D組合鍵提交任務即可。所設置的命令操作將在計划的時問點被依次執行。
at命令使用方法:
At HH:MM今天的HHMM時問執行,若是時問已經超過,則明天的H:MM時問執行
at hh:MM YYYY-MM-DD指定具體的執行口期和時間
at HH:MM+number minutes hours daysweeks)某個時間點+分鍾|小時天星期執行
基本操作:
Curl+D保存退出
alq查詢現有的一次性任務計划 atrm[任務序號]刪除第幾項任務
2.5、crontab周期性任務設置
使用crontab命令設置的計划任務可以按預設的周期重復執行,可以大大減輕設置重復性系統管理任務的操作。啟用周期性任務也有一個的前提條件,即對應的系統服務crond必須已經運行。
[root@localhost ~]# systemctl
crontab的配置文件和目錄
crond通過多個月錄和文件設置計划任務不同類型的任務由不同的配置文件來設置。[root@localhost~]#Is/etc/cron.兩次tab鍵
cron.d/cron.daily/cron.deny cron.hourly/ cron.monthly/ cron.weekly/
/etc/crontab文件中設置的是維護Linux系統所需的任務,由Linux系統及相關程序在安裝時自動設置,不建議用戶手動修改此文件。該文件包括了設置shel1環境、可執行路徑等變量的操作,以及每小時、每大、每周、每月需要執行的任務月錄。
[root@localhost ~]#cat/etc/crontab
SHELL=/bin/bash 設置執行計划任務的shell環境
PATH=/sbin:/bin:/usr/sbin:/usr/bin 定義可執行命令及程序的路徑
MAILTO=root 將任務輸出信息發送到指定用戶的郵箱
HOME=/ 執行計划任務時使用的主目錄
crond守護進程會自動檢查/etc/crontab文件、/etc/cron.d/日錄及/var/spool/cron目錄中的改變,如果發現有配置更改,就會被載入內存,所以當某個crontab文件改變后並不需要重新啟動erond守護進程就可以使設置生效。
使用crontab命令管理用戶的計划任務
設置用戶的周期性計划任務列表主要通過crontab命令進行,結合不同的選項可以完成不同的計划任務管理操作。
-e:編輯計划任務列表。
-u:指定所管理的計划任務屬於哪個用戶,默認時針對當前登錄用戶,一般只有root用戶有權限使用此選項用戶編輯、刪除其他用戶的計划任務。
-l:列表顯小計划任務。
-r:清空計划任務列表。
crontab-r命令:可以刪除用戶的計划任務列表
[root@localhost ~]# crontab -r
[root@localhost~]#crontab-l
no crontab for root
注意:
1、配置完計划任務后建議重啟計划任務服務。
2、計划任務信息要定時備份。
TYPE=Ethernet 顯示使用以太網類型
BOOTPROTO=static 網絡類型 DHCP
DEFROUTE=yes
NAME=ens33
DEVICE-ens33
ONBOOT=yes
IPADDR=192.168.1.25
NETMASK=255255.255.0
GAETWAY=192.168.1.1
9.24進程管理和周期性計划任務
程序:保存在硬盤上的靜態代碼
進程:
用戶角度:操作系統:父進程子進程
zombie僵屍進程
1、重啟系統生產環境一般不重啟
2、把僵屍進程變成孤兒進程,systemd
50.ps aux
-elf
51 . top