# Linux 的 Process Management ###### tags: `Linux` ## 一 . Process in Linux ### (一) . Process的概念 - 什麼是Process : 1. 定義 : Program in execute。正在執行的程式。 2. Program的定義:some binary file storage in disk。 3. 兩個重要的不同 : 有沒有執行,在執行的程序還會有多個重要的屬性。 - Process 的屬性 : 大概就是htop或top中可以看到的。 1. 使用者相關id : uid、gid(這個可執行檔的擁有者)。Euid、Guid等等。 2. 程序相關id : pid、ppid。 4. 其他 : nice值、priority值。 - 註 : EUID和GUID 1. EUID : 和setuid有關,可以讓任何可執行此命令的user在執行的時候,都有file owner的權限。 ### (二) . fork and exec Modal ## 二 . Singal 和 Process state ### (一) . Singal - 程序間的溝通 : Singal 1. 目的 : 用於Linux系統中不同程序的溝通。 2. 可能由user或kernal(系統)發出。 - Handler : 程序接收不同singal時所要做出來的行為。 1. 每一個Process都可以設定自己得handler,或系統進行default actions。 2. ```Catch```狀態 : 代表這個時候的process都會接收其他process的singal並處理。 3. ```Block```狀態 : 代表這個時候的process暫時不會接收其他process的singal和處理。通常要保證某些事不被中斷。 - 註 : 在block的process若在block時收到多個同樣的訊號,unblock時只會進行一個。 4. ignore訊號的方法 : 自己寫一個什麼都不做的handler。 - Signal List : Linux 規定的訊號種類  - Kill 指令: 其實就是發出Signal。 1. 指定singal : 可以在kill後面加上``` -signal 參數```,表示要發出哪一個singal。 2. 指定程序 : 不在參數後面加入singal number就是process的pid。 - 注意 : 分清楚哪邊是pid哪邊是singal number。 3. killall : 可以照『程序名稱』(非pid)結束程式。例如結束所有以『bash』開頭的process可以用『killall bash』。 ### (二) . Process State - Process state的查看: 1. ```ps``` 指令 : 一次列出『目前』所有的process的資訊,不是動態的。 2. ```top```指令 : 可以動態列出程序的資訊。 3. 常見的狀態 : 在process state的STAT欄位可以看到。  - NI值和PRI值 : 1. NI值 : 代表process的『nice』值,數值越高代表越可能讓其他程序先使用CPU。 2. PRI值 : 代表process實際的優先序,由kernal決定,使用者無法調整(even root)。 - ```renice```指令 : 可以調整程序的nice值。 1. Nice值 : 可以調整的範圍為-20 到 19。 1. 一般使用者的nice權限 : 只可以調整成高於現在的nice值,且只可以調成0-19。 2. root : 可以調整所有的範圍,所有的process。 - ```nice```指令 : 設定一個初始nice值執行command。 ### (三) . 時間性的程序管理 - 時間性的程序管理 :是什麼?要怎麼設定。 1. 時間性的程序管理 : 代表系統要執行的daily rountine。可能為收一個檔案,或開起或關閉一個服務等等。 2. 設定檔 : 每一個user的home下面都有一個file可以修改設定,但在root下也有一個```/etc/crontab```為全域的設定。 - 檔案格式 : 1. 忽略空白格,可以用『#』註解整行,可以設定key-value值。 2. 格式 : ```分 時 日 月 星期 指定```個格式。注意,星期不可以和日月同時出現。 - 常用的簡寫 - ```matching File``` : 1. 『*』 : 都是。 2. 『-』 : 範圍的聯繫詞。 3. 『,』 : 分格資料的方法。 4. 『/』 : divide by。 - 常見的簡寫 - ```Entry``` :  - 編寫時間性程序的發法 : 1. 使用指令:```crontab -e [-u -user]```。 2. 直接用```sudo vim```更改設定檔。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up