進程:是已經啓動的可執行的運行實例linux
組成web
進程狀態shell
父進程複製本身的地址空間建立一個新的進程結構,每一個新進程分配一個惟一的進程IP(PID),知足跟蹤安全性,
PID和父進程(PPID)是子進程環境的元素,
任何進程均可以建立子進程,每一個進程都是第一個系統進程的後代
殭屍進程vim
比較容易理解的是:
父進程退出了,子進程沒有退出. 這些子進程沒有父進程來管理,就變成了殭屍進程
PS查看進程工具centos
經常使用的參數緩存
a: 顯示跟當前終端關聯的全部進程
u: 基於用戶的格式顯示
x: 顯示全部進程,不以終端機來區分
user:啓動這些進程的用戶 pid:進程的id %cpu:進程佔用cpu百分比 %men:進程佔用內存的百分比 vsz:進程佔用的虛擬內存大小(單位kb) rss進程佔用的物理內存大小(kb)
stat:該進程目前的狀態
R:該程序目前正在運行,或者可被運行
S:該程序目前正在睡眠
T:該程序目前正在偵測或者中止了,
Z:該程序應該已經終止,可是其父進程沒法正常的終止他,形成zombie殭屍程序的狀態
D:不可中斷狀態
五個基本狀態後面還能夠加一些字母
<:表示進程運行在高優先級上
N:表示進程運行在低優先級上
L:表示進程有頁面鎖定在內存中
s:表示進程是控制進程
l:表示進程是多線程的
+:表示當前進程運行在前臺
start:被觸發啓動的時間
time:實際使用cpu運做的時間,有顯示0:00的,耗費cpu資源不到1秒
command:改程序的實際指令
還能夠經過ps -ef來查看進程安全
-e: 顯示全部進程
-f: 顯示完整格式輸出
UID:啓動這些進程的用戶 PID:進程的ID PPID:父進程的ID號 C:進程生命週期的利用率 Stime:啓動啓動時的系統時間 tty:進程在哪一個終端上運行 ?:表示與終端沒有關係,大部分是內核的
tty1-tty6是本機上面的登入者程序,若爲pts/0等等的,則表示由網絡鏈接進主機的程序(是虛擬的) time:運行進程累計須要的cpu時間 cmd:啓動的程序名稱
uptime 查看系統負載服務器
20:25:36 :當前時間 up 4 days: 系統運行時間,說明這臺服務器已經開機4天了 3 user: 當前登陸的用戶數 load average: 0.00, 0.01, 0.05: cpu系統負載,即cpu任務隊列的平均長度,三個數值分別是1分鐘,5分鐘,15分鐘的平均值
互動網絡
互動: 找出當前系統中,cpu負載太高的服務器 服務器:load average 0.15, 0.08, 0.01 1核 服務器:load average 4.15, 6.08, 6.01 1核 服務器:load average 10.15, 10.08, 10.01 4核 答案:4核 經驗:單核心,1分鐘的系統平均負載不差過3,就能夠,這是個經驗值
top命令多線程
第一行,系統負載 第二行,進程信息 tesks(當前任務數) running 運行 sleeping 睡眠 stopped 終止 zombie 殭屍進程 第三行cpu信息 us:用戶佔用cpu的時間 sy:內核佔用cpu ni:用戶進程空間內改變過優先級佔用的cpu id:空閒cpu的百分比 wa:當對磁盤進行大量寫時,發現IO等待會佔用不少cpu,若是正常使用佔用比較多cpu,磁盤性能有問題 hi:硬件中斷佔用的cpu,硬件驅動一般是內核中的一個子進程,而不是一個獨立的進程 si:軟中斷,佔用的cpu百分比,往磁盤寫入數據有個隊列,所佔用的時間 st:虛擬機佔用物理機cpu時間 第四行內存信息 單位kb total 總內存 free 空閒 used 佔用 buff/cache 這裏的緩存是能夠釋放的 第五行 swap total 交換區總量 free 空閒的交換區總量 used 使用的交換區總量 avail Mem 總共的可利用內存是多少 注意:若是swap分區,被使用,那麼你的內存不夠用了
快捷鍵
默認 3s 刷新一次,按s修改刷新時間
按空格當即刷新
按大寫的 C 按照cpu佔用排序
按大寫的 M 安裝內存佔用排序
按數字鍵1,顯示每一個內核的cpu使用頻率
按u: 顯示指定的用戶
h:幫助
top -p 1 經過進程ID查看單個進程
找出系統中佔用系統進程最多的進程
top 後按大寫的P
在linux系統中最多可使用100%CPU嗎
理論上:若是你是4核心的cpu,你能夠運行400%
lsof命令
-p 進程號,列出指定進程號打開的文件
-i 條件:列出符合條件的進程
查看某個進程讀了那些文件,調用了那些東西呢,通常用於木馬進程
lsof -p 進程ID
查看端口,或者看黑客開啓的後門端口是哪一個進程在使用
lsof -i:22
pstree工具
前臺進程:
是在終端中運行的命令,那麼終端就是進程的控制終端
一旦這個終端關閉,這個進程也隨之消失
後臺進程,
也叫守護進程,是運行在後臺的一種特殊進程,不受終端控制,不須要終端的交互,
linux的大多數的服務器就是用守護進程來實現的, 好比web服務器httpd等
前臺後臺進程切換
&用在一個命令的最後,能夠把這個命令放到後臺執行
ctrl + z能夠將一個正在前臺執行的程序放到後臺
jobs查看當前有多少在後臺運行的進程,這是一個做業控制命令
fg命令將後臺中的命令調到前臺繼續運行,
若是後臺中有多個命令能夠用 fg %jobnumber將選中的命令調出,
%jobnumber是經過jobs命令查到的後臺正在執行的命令的序號(不是pid)
bg命令將一個在後臺中暫停的進程,變成繼續執行,
用法同上
關閉進程
kill [信號] [進程ID]
kill -l -->列出指定的信號
經常使用的信號
信號編號 信號名 解釋 1 SIGHUP 從新加載配置 2 SIGINT 鍵盤中斷ctrl+c 3 SIGQUIT 退出 9 SIGKILL 強制退出 15 SIGTERM 終止(正常結束),缺省信號 18 SIGCONT 繼續 19 SIGSTOP 中止 20 SIGTSTP 暫停 ctrl+z
killall 和 pkill 命令經過指定名字來殺死進程
killall sshd
pkill sshd
進程優先級管理
優先級的取值範圍(-20,19),越小優先級越高,默認優先級是0
nice -n
nice -n 5 vim a.txt ctrl+z掛起進程
查看進程的PID
查看PID:ps -axu | grep vim
根據PID查看進程的信息
能夠發現NI優先值是5
實戰:使用screen後臺實行執行命令備份命令
場景:公司晚上須要備份1t數據,我再xshell上直接執行備份腳本back.sh能夠嗎?
或直接運行back.sh&放到後臺運行能夠嗎?
當關了xshell,back.sh&還在後臺執行嗎?
xshell長時間鏈接,若是本地網絡偶爾斷開或者xshell不當心關閉,都會讓後臺運行的備份命令中止運行的
正確作法使用:screen
安裝yum install screen
用法:
執行screen,將打開一個全新的會話運行你的備份任務,或者vim a.txt命令這時能夠鍵入快捷鍵ctrl+a+d 就已經分離出一個單獨的會話screen -ls 查看已經創建的會話idscreen -r 25448 經過PID 從新鏈接會話screen -S text 指定會話名稱當不想使用screen會話了,exit退出