linux計劃任務 進程管理
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
1.linux任務調度的工作主要分為以下兩類:
*系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存
*個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可由每個用戶自行設置。
2.crontab命令選項:
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:/1 * ls >> /tmp/ls.txt
3.cron文件語法
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值範圍,0表示周日一般一行對應一個任務)
4.記住幾個特殊符號的含義:
"*"代表取值範圍內的數字,
"/"代表"每",
"-"代表從某個數字到某個數字,
","分開幾個離散的數字
5.舉幾個例子
5 ls //指定每小時的第5分鐘執行一次ls命令
30 5 * ls //指定每天的 5:30 執行ls命令
30 7 8 ls //指定每月8號的7:30分執行ls命令
30 5 8 6 * ls //指定每年的6月8日5:30執行ls命令
30 6 0 ls //指定每星期日的6:30執行ls命令[註:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 ls //每月10號及20號的3:30執行ls命令[註:”,”用來連接多個不連續的時段]
25 8-11 * ls //每天8-11點的第25分鐘執行ls命令[註:”-”用來連接連續的時段]
/15 * ls //每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]
30 6 /10 * ls //每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]
50 7 * root run-parts /etc/cron.daily //每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件[ 註:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]
6.新增調度任務可用兩種方法:
a.在命令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。
b.直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
二 processes 進程管理
Linux進程調度的目標
1.高效性:高效意味著在相同的時間下要完成更多的任務。調度程序會被頻繁的執行,所以調度程序要盡可能的高效;
2.加強交互性能:在系統相當的負載下,也要保證系統的響應時間;
3.保證公平和避免饑渴;
4.SMP調度:調度程序必須支持多處理系統;
5.軟實時調度:系統必須有效的調用實時進程,但不保證一定滿足其要求;
多任務:
多進程同時運行
搶占式多任務
進程分類:
CPU bound: CPU密集型
I/O bound: IO密集型
進程優先級:
140:0-139
1-99:實時優先級,數字越大優先級越高
100-139:數字越小,優先級越高;
ps查看當前系統執行的線程列表,進行瞬間狀態,不是連續狀態,連續狀態需要使用top名稱查看 更多常用參數請使用 man ps查看
ps
顯示所有進程詳細信息
ps aux
-u 顯示某個用戶的進程列表
ps -f -u www-data
-C 通過名字或者命令搜索進程
ps -C apache2
--sort 根據進程cpu使用率降序排列,查看前5個進程 -pcpu表示降序 pcpu升序
ps aux --sort=-pcpu | head -5
-f 用樹結構顯示進程的層次關系,父子進程情況下
ps -f --forest -C apache2
##顯示一個父進程的所有子進程
ps -o pid,uname,comm -C apache2
ps --ppid 2359
顯示一個進程的所有線程 -L 參數
ps -p 3150 -L
顯示進程的執行時間 -o參數
ps -e -o pid,comm,etime
watch命令可以用來實時捕捉ps顯示進程
watch -n 1 ‘ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15‘
jobs 查看後臺運行的進程 jobs命令執行的結果,+表示是一個當前的作業,減號表是是一個當前作業之後的一個作業,jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated,但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識;也就是說,jobs命令顯示的是當前shell環境中所起的後臺正在運行或者被掛起的任務信息
jobs
查看後臺運營的進程號
jobs -p
查看現在被終止或者退出的進程號
jobs -n
kill命令 終止一個前臺進程可以使用Ctrl+C鍵 kill 通過top或者ps獲取進程id號 kill [-s 信號 | -p ] [ -a ] 進程號 ...
發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。 關閉進程號12的進程
kill 12
等同於在前臺運行PID為123的進程時按下Ctrl+C鍵
kill -2 123
如果任無法終止該程序可用“-KILL” 參數,其發送的信號為SIGKILL(9) ,將強制結束進程
kill -9 123
列出所有信號名稱
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
kill -l
得到指定信號的數值
kill -l KILL
殺死指定用戶所有進程
kill -u peidalinux
kill -9 $(ps -ef | grep peidalinux)
將後臺中的命令調至前臺繼續運行 將進程123調至前臺執行
fg 123
將一個在後臺暫停的命令,變成繼續執行
bg 123
該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。nohup就是不掛起的意思 下面輸出被重定向到myout.file文件中
nohup command > myout.file 2>&1 &
linux計劃任務 進程管理