Shell control
腳本控制¶
產生信號¶
- 中斷進程
ctrl+C會產生SIGINT信號,並將其發送給當前shell的所有進程,提前終止命令
- 暫停進程
ctrl+Z會生成SIGTSTP訊號,停止shell中運行的所有進程
捕獲信號¶
trap信號可以指定shell需要偵測並攔截的linux信號
任務調度¶
在linux中,任務調度優先級指的為內核對程序分配的CPU時間,從最高優先(-20)到最低優先(19),默認bash以優先度0級啟動所有進程
nice
nice命令允許在啟動時設定其優先度
nice命令會阻止普通用戶提高命令的優先級,只有root或特權用戶才能提高renice
修改系統中已運行命令的優先級,renice可以透過PID進行修改
定時運行作業¶
at
at命令允許Linux系統何時運行腳本,該命令會將作業提交到列隊中,指定shell何時運行
time選項指定了在何時運行該作業,若指定時間已過去,那麼at指令會在第二天同一時刻運行
time可以指定時間如下
* 標準小時與分鐘,例如10:15
* AM/PM指示符,例如10:15PM
* 特定時間,比如 now, noon, midnight或teatime
* 標準日期如MMDDYY、MM/DD/YY
* 文本日期,如Jul 4或Dec 25
* 時間增量如now+25 minutes
atq 列出等待的作業
atrm刪除等待中的作業
需要定期運行的腳本¶
若腳本需要固定在每天,每周或每月的同一時間運行,與其頻繁用at,不如用cron
cron
cron允許使用特定值、取值範圍(1~5)或者通符(*)來指定各個字段
例子:如果想在每天的10:15運行一個命令
cron時間表
每個用戶都可以使用自己的cron時間表,linux提供了crontab命令來處理cron時間表
cron目錄cron的基礎目錄共有四個:hourly, daily, monthly和weekly
anacron
如果運行時間已到,但系統是關閉的,那麼cron便會跳過並不執行,anacron確保系統啟動後作業一定會運行
anacron命令如下
預設shell啟動腳本¶
可以將腳本放在預設目錄,當用戶作登入等動作時會啟動的預設腳本
* $HOME/.bash_profile
* $HOME/.bash_login
* $HOME/.profile
每次啟動新shell,bash shell都會運行.bashrc