1. 程式人生 > >linux計劃任務 進程管理

linux計劃任務 進程管理

linux 計劃任務 進程管理

crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。可以用以下的方法啟動、關閉這個服務:

/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計劃任務 進程管理