Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制

Similar presentations


Presentation on theme: "UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制"— Presentation transcript:

1 UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制
at、batch、cron、crontab 參考課本第十七、十六章

2 程序的定義與特性(一) 定義:一個正在執行中的程式實體 程序(process)通常與程式同名,有時一個程式也會引 發多個程序
UNIX 是一個多人多工系統,每一個使用者在同一時間可 以執行多個程序。 核心(kernel)是程序的最終管理員,決定程序執行的時 間與優先權。 Process使用系統記憶體,在記憶體不足或process閒置等 情況下,kernel會把process相關的記憶體空間移往swap。 等到下次得到cpu時間再取回主記憶體中。

3 程序的定義與特性(二) process產生時,kernel會給予每一個程序一個唯 一的識別號碼,稱為Process identifier, PID,程序 識別碼。 kernel還會紀錄程序的其他屬性 真正的使用者id 有效的使用者id 真正的group id 有效的group id 執行優先權 執行時的目錄

4 程序的定義與特性(三) 每個process都有parent(啟動此process的 process)。
每個程序的祖先,可以追溯到系統開機時建立的第 一個程序(PID 0)。 process只有一個parent,但可以有很多child child process完成(死亡)時,會送一個訊號給 parent通知它。控制權就又回到parent上。 通常parent process會比 child process長壽。

5 程序的建立 核心執行程序的程式映像包含 本文區段(程式執行碼)、資料區段(程式中的變數)、使 用者區段(程序相關的屬性)。
fork:對呼叫他的程序建立一個複製的程序,並給予一個新的 PID。 exec:parent會以即將被執行的程式映像來覆寫剛剛的程序內 容(本文區段與資料區段被置換)。 wait:parent等待子程序的完成。 子程序會繼承parent的環境變數,但修改不會影響 parent的環境變數。

6 login shell 使用者的第一個程序:login shell echo $$ 可以印出shell的PID。
init 是系統的第二個程序(PID=1),也是login shell 的parent。 init會在每一個連接埠fork並exec一個 getty (/sbin/mingetty),等待user登入。 shell的內部命令不會產生新程序。

7 ps 指令(一) ps 指令:用來顯示系統中的process與其屬 性。 PID TTY TIME CMD
1070 pts/ :00:00 bash 1200 pts/ :00:00 ps PID 就是程序識別碼、TTY是與該程序相關的 終端機(有些程序並無相關的終端機)、TIME 顯示process使用CPU的時間、CMD顯示程序名 稱。

8 ps 指令(二) 每個系統的 ps 的選項有相當大的差異。 Linux上的常用選項 ps ax 列出所有程序 ps u 列出詳細列表
ps f 顯示process的祖先 ps w 寬輸出 通常用 ps auxw | more 來看系統的process

9 top 指令 top 指令會顯示出相當有用的資料 第一行顯示系統基本資料:時間、上線人數、負載 第二行顯示Process的狀況
第三行顯示CPU的狀況 第四行顯示主記憶體的狀況 第五行顯示swap的使用狀況 接下來顯示負載最重的一些process 如果沒有top,可以使用vmstat來監測系狀況 vmstat 1 每1秒鐘顯示一次系統狀況

10 背景執行 可以用 指令 & 這樣的方式使指令送到背景去執 行(不過使用者不能登出,但bash與csh除外)。
nohup 指令 & 可以保證使用者登出,指令還可 以執行。

11 調整程序優先權 用 nice 指令來調整優先權
nice 的典型值由1~19(Linux是-20~19,一 般程式執行時nice值為0,nice指令預設調整為 10) nice 值越高,優先權越低 可以用 ps -l 或 ps -axl 來看process nice值 一般把把較不重要而需要較長執行時間的程式 設定成優先權較低,以免影響正常作業。 nice 指令 或 nice -n 18 指令 renice 12 pid 可以直接改動 pid 的nice值為12

12 signal與kill(一) 使用者或系統可以送signal(信號)給process,如果該 process沒有設計來處理這個signal,process就會終止。 process可以忽略、補捉(做預先定義好的工作,例如: bbs中的「水球」)或不做任何事(程序會被終止)。 常用的signal編號: 1 掛斷 、2 中斷 3 產生core dump 9 強制殺掉 15 預設的終止信號 24 暫停

13 signal與kill(二) killall 可以殺掉所有某個名字的process 可以用kill 指令送信號給程序 kill PID
kill -9 PID 可以強制殺掉process(砍掉shell process看看) killall 可以殺掉所有某個名字的process

14 工作控制 C shell、Kron shell、bash、tcsh等shell具有工 作控制機制 Ctl-z 用來中斷前景工作
fg 將背景工作移到前景來工作 bg 將工作移到背景 jobs 列出目前的工作 kill 殺掉工作

15 at、batch at :設定某件工作在某一個時間進行 at -q 或 atq 查詢進入排程的工作 atrm 清除工作
batch:在系統負載小於某一個數值(Fedora 內定 是 0.8)就執行某一個工作 也是用 atq 與 atrm 來處理工作。 at 與 batch 的工作都是靠atd來啟動執行 at.allow與at.deny可以控制使用者是否可以執行at 或batch(liunx系統在/etc底下)

16 cron與ctontab(一) 如果要系統規律的執行某些工作,就要使用 cron
crond 用來啟動cron jobs的執行,cron的控制檔 案放在 /var/spool/cron 目錄下 cron 的控制格式如下: 每行控制一個工作,每個工作由六個欄位(由 空白分開)組成 分 時 那一天 月份 星期幾 命令 用 crontab 來載入控制檔 crontab -e 直接編輯 控制檔 crontab -u userid可用來載入userid的 cron 控制檔

17 cron與ctontab(二) cron.allow cron.deny可以用來控制使用者是否能 用cron功能,linux在/etc 底下
Linux的/etc/crontab可以用來控制系統的 cron。 主要是多了run-parts 來include目錄中的可執行 的控制檔案並且可以指定執行者的身份 time 指令:可以用來計算程序執行的時間 寄信指令:mail -s subject < file

18 crontab 範例 # 每天凌晨零點五分做 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # 每月一日晚上2:15分做 * * $HOME/bin/monthly # 沒有放假的日子晚上十點提醒Joe 0 22 * * mail -s "It's 10pm" joe%Joe,%%Where are your kids?% /2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday" 5 4 * * sun echo "run at 5 after 4 every sunday" #每小時的14,48分執行 ls 14,48 * * * ls


Download ppt "UNIX的程序與工作控制 程序的定義與特性 程序的建立 相關指令 背景執行 調整程序優先權 signal與kill 工作控制"

Similar presentations


Ads by Google