天天看點

Shell腳本學習筆記(八)--程序管理和工作控制

程序管理和工作控制

ps,top,htop指令的使用

傳送信号

使用kill指令可以對程序傳送信号進行管理。管理程序時的基本原則是

1 先禮後兵。先發送信号給程序,讓程序自己完成該做的事,若程序已不聽指揮,或失去控制,再發出強制性的信号。這樣的好處是,讓程序在結束前有緩沖的時間做好收尾工作,如清除存盤、鎖定檔案、程序編号記錄檔案等,否則當程序不正常結束時,若在主機中殘留這些檔案,而下次要再執行程式時,可能會出現無法啟動的現象。

2 各得其所。調整程序的優先級,使得每個程序都得到适當的安排,各項工作能如期完成。程序進入執行排程(schedule)的優先級,成為nice值。通常nice值介于-20~20之間。nice值越少,優先級越高。隻有root權限者才能調整介于-20~0的nice值;一般權限的使用者,隻能調整其擁有的程序的nice值在0~20之間.換言之,隻有root才能調高程序的優先級,一般使用者隻能降低其程序的優先級。nice指令和renice指令。nice運用于尚未執行的程式,renice運用在已執行的程序。

nice -n nice值 程式   指定程式執行時的優先級為某一nice值。-20~19,但隻有root可以用-20~0這個區段。若省略-n不指定nice值,則使用預設值10

renice nice值 -p PID -g 群組 -u 使用者名稱   -p -g -u三個選項,可單獨使用也可以組合使用

PRI也是程序優先級的一種表示法,和nice值(NI)不同的是,PRI永遠以0或正數表示:PRI=NI+20

工作控制

bash的互動模式下,允許使用者暫停某一程序,稍後再恢複執行該程序。這種賦予使用者操控程序的機制,成為工作控制(jobs control)

例子

#!/bin/bash

for ((;1;))

do

sleep 10

done

Shell腳本學習筆記(八)--程式管理和工作控制
Shell腳本學習筆記(八)--程式管理和工作控制

整理

Shell腳本學習筆記(八)--程式管理和工作控制

常用的工作控制指令

& 将指令丢到背景執行

bg 将暫停的工作丢到背景 使用ctrl+z組合鍵暫停程序,然後配合bg指令把工作丢到背景,和執行"指令 &"的效果是一樣的

fg 将暫停的工作拉回到前台執行

jobs 列出工作 或jobs -l

disown 移除工作

kill 傳送信号給程序或工作

wait 等待子程序結束,傳回最後一個指令的執行狀态

suspend 暫停目前的shell。suspend 暫停一個非login的shell,suspend -f 暫停目前的login shell。當暫停的shell收到CONT信号時才會繼續運作。

程序替換

程序替換可以讓我們把标準輸出,一次倒給許多程序作為輸入;或者由多個程序取得其輸出,然後倒給某個程式去處理。

進行替換的用法:

1 指令< (指令行)  通過裝置檔案/dev/fd/n或緩存檔案,把程序的輸出倒給<左方的指令來讀取

2 > (指令行)  這是通過裝置檔案/dev/fd/n或緩存盤,把資料提供給()中的程序去讀取

繼續閱讀