進程管理linux
一.進程的基本概念shell
1.進程的定義windows
是指程序關於某個數據集合的一次運行活動安全
2.Linux進程狀態ide
3.進程的類型spa
(1)交互進程:由shell啓動,能夠工做在先後臺命令行
(2)批處理進程:不須要與終端相關,提交在等待隊列的做業orm
(3)守護進程:shell/linux系統自動啓動/用戶手工啓動,工做在後臺,用於監視特定服務blog
4.進程啓動方法隊列
(1)手工啓動
l 前臺:直接輸入程序名(如:#vi)
l 後臺:程序名後加&(如:#vi&)
(2)調度啓動
l 系統在指定時間運行指定的程序(at.batch.cron)
二.進程管理的經常使用命令
1.ps
功能:顯示系統的進程信息
格式:ps [參數]
參數:-a 顯示全部進程(不包括沒有終端的進程)
-u顯示用戶名和啓動時間
-x顯示沒有終端的進程
-e 顯示全部進程(不顯示進程狀態)
-f 全格式
實例:# ps 顯示當前用戶進程
# ps –aux 顯示全部進程信息
USER PID%cpu %mem vsz rss tty stat start time command
Root 10.0 0.3 1096 476 ? s 18:20 0:04 init
USER: 進程的啓動用戶
PID: 進程號(進程的惟一標識)
%CPU: 佔CPU的百分比
%MEM: 佔用內存百分比
VSZ: 虛擬內存大小
RSS: 內存大小(真實)
TTY: 進程的工做終端(?表示沒有終端)
STAT: 進程的狀態(D: 不可中斷的靜止
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時沒法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
<: 高優先級別
Start :啓動時間
Time :佔用的cpu的時間
Command : 運行的程序
2.top
功能:動態顯示系統進程信息
格式:#top [參數]
參數:
d 指定每兩次屏幕信息刷新之間的時間間隔。固然用戶可使用s交互命令來改變之。
q 該選項將使top沒有任何延遲的進行刷新。若是調用程序有超級用戶權限,那麼top將以儘量高的優先級運行。
S 指定累計模式。
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閒置或者僵死進程。
c 顯示整個命令行而不僅是顯示命令名
實例:#top (默認每5秒鐘刷新一次)
top的操做命令:
h/?: 獲取top的幫助
k:PID:殺死指定的進程
q: 退出top
空格:當即刷新
s:改變刷新間隔
3.kill
功能:給進程傳遞信號
格式:kill [信號值] PID
信號值:-24/SIGSTOP:暫停某個進程
-18/SIGCONT:繼續暫停的進程
-1/SIGHUP:掛起一個進程
-15/SIGTERM:軟中斷,正常退出一個軟件
-9/SIGKILL:殺死一個進程
-20/SIGTSTP:鍵盤中止信號,ctrl+z
實例:
#kill -9 3
# kill -9 3,5,8 一次殺死多個程序
# kill - 9 1-8 殺死1到8號進程
# kill -9 0 表示全部後臺進程
4.killall
功能:給指定程序名的進程發送信息
格式:#killall 程序名
實例:#killall -9 vsftpd(殺死全部對應vsftpd程序的進程)
5.設置進程優先級
優先級範圍:-20-19(值越小表示級別越高,默認爲0)
(1) nice(設置程序運行時優先級)
格式:#nice 優先級 命令
實例:# nice –5 ls
#nice --5 vi
(2) renice
格式:#renice 優先級 PID
實例:#renice -6 727
#renice 12 888
6.做業的先後臺操做
(1)jobs
功能:查看後臺做業
實例:# jobs
(2)fg
功能:把後臺的程序調入前臺運行
格式:#fg [做業編號]
實例:#fg(隊首的做爲調入前臺運行,最後入隊列做業處於隊首)
#fg 2(將隊列中的2號調入前臺運行)
(3)bg
功能:將後臺等待程序轉入後臺運行
格式:bg [做業編號](ctrl+z將前臺程序轉入後臺中止運行)
(ctrl+c將終止前臺程序的運行)
實例:#bg (將隊首的做業調入後臺運行,最後入隊列做業處於隊首)
#bg 3 (將3號做業調入後臺運行)
7.pstree
功能:顯示進程樹
格式:#pstree
三.任務的自動化
1.at
功能:安排系統在指定時間運行指定的做業,須要有atd服務的支持
格式:#at [參數] 時間
參數:-m 指任務結束後會發送mail通知用戶
-f 文件名:從指定文件中讀取執行的命令
-g [a-z]:指定使用的隊列
時間的表示方法:
midnight (當天午夜)
noon (當天中午)
teatime (當天下午4點)
hh:mm mm/dd/yy (指定年月日,時分)
now+n minutes (從如今起向後n分鐘)
now+n days (從如今起向後n天)
now+nhours (從如今起向後n小時)
now+n weeks (從如今起向後n周)
實例:# at21:00 3/17/2004
>ls
>cd /etc
>init 0
ctrl+d(結束做業步)
與at相關命令:
(1) atq
功能:查詢at隊列中的做業
實例:#atq
(2) atrm
功能:刪除at隊列中的做業
實例:#atrm 2
2.cron
功能:安排系統在指定時間週期內執行做業
原理:cron進程,每隔一分鐘,檢查/var/spool/cron目錄下用戶提交的做業文件中有無做業須要運行(和windows系統計劃任務差很少)
配置:(1)創建crontab文件
# vi /root/root.cron
格式:分 時 日 月 星期 要運行的程序
0 12 1 1 * /sbin/shutdown–r now
(數字表示具體時間,*表示任什麼時候間)
0 8—12 * * * /sbin/tar –xzfvetc.tar.gz /etc/
(8-12從某時間到某時間)
25 0-23/2 * 12 * rm –f /tmp/*
(0等同於*,*/n:每N時/分/天/月,0-23/2表示每隔2小時,即:0:25,2:25,4:25)
30 * * 1,3,5 * dump
(1,3,5:多種可用「,」隔開)
(2)運行crontab命令
功能:生成用戶的cron文件
格式:crontab [參數] [文件名]
參數:-u 用戶名:指定具體用戶的cron文件
-r 刪除用戶的crontab文件
-l 顯示用戶的cron文件
-e 編輯用戶的cron文件
實例:# crontab /root/root.cron (創建當前標準格式用戶crontab文件)
# crontab –r 刪除當前用戶的cron文件
配置案例:root用戶在每週2,4,6早上3點啓重系統
# vi /root.cron(以root用戶登陸)
0 3 * * 2,4,6 /sbin/shutdown -r now
# crontab /root.cron
注意:/etc/at.deny和etc/at.allow用於控制用戶運行at的任務