16 控制指令碼

2021-09-26 03:12:01 字數 2555 閱讀 2520

處理訊號

以後臺模式執行指令碼

禁止掛起

作業控制修改指令碼優先順序

指令碼執行自動化

linux利用訊號與執行在系統中的程序進行通訊

停止程序會讓程序繼續保留在記憶體中

shell將shell中每個執行的程序稱為作業,並為作業分配唯一的作業號

linux訊號

1  sighup	      掛起程序

2 sigint 終止程序

3 sigquit 停止程序

9 sigkill 無條件終止程序

15 sigterm 盡可能終止程序

17 sigstop 無條件停止程序,但不是終止程序

18 sigtstp 停止或暫停程序,但不終止程序

19 sigcont 繼續執行停止的程序

捕獲訊號

trap 命令允許你來指定shell指令碼要監看並從shell中攔截的linux訊號

trap cpmmands signals

trap "echo 'aaaaaaa'" sigint 

trap "echo goodbye..." exit

count=1

while [ $count -le 10 ]

do echo "loop #$count"

sleep 2

count=$[ $count+1 ]

done

#刪除已設定好的捕獲

trap -- siginet

shell會執行在 trap 命令列指定的命令

刪除已設定好的捕獲

trap – siginet

後台模式執行shell指令碼,在命令後加個 & 符就行了

nohup 指令碼一直以後臺模式執行到結束,即使你退出了終端會話

cat nohup.out

作業控制

jobs -l 列出程序的pid以及作業號

bgfg

調整謙讓度

nice命令

nice -n 10 ./test4.sh > test4.out &

ps -p 4973 -o pid,ppid,ni,cmd

renice 命令你指定執行程序的pid來改變它的優先順序。

renice -n 10 -p 5055

定時執行作業

at 命令和 cron 表

atd 守護程序會檢查系統上的乙個特殊目錄(通常位於/var/spool/at),預設情況下, atd 守護程序會每60秒檢查一下這個目錄

at [-f filename] time
10:15 pm。

10:15。

now noon midnight

標準日期格式,比如mmddyy、mm/dd/yy或dd.mm.yy。

文字日期,比如jul 4或dec 25,

當前時間+25 min

明天10:15 pm

10:15+7天

當你使用at命令時,該作業會被提交到作業佇列,作業佇列通常用小寫字母a~z

和大寫字母a~z來指代。作業佇列的字母排序越高,作業執行的優先順序就越低(更高的 nice 值)

at -f test13.sh now

job 7 at 2015-07-14 12:38

tomorrow

at 命令會顯示分配給作業的作業號以及為作業安排的執行時間。 -f 選項指明使用哪個指令碼

檔案, now 指示 at 命令立刻執行該指令碼。

cat /var/spool/mail/phy
atq命令可以檢視系統中有哪些作業在等待

atrm n 刪除作業

安排需要定期執行的指令碼

cron時間表

min hour dayofmonth month dayofweek command
cron時間表允許你用特定值、取值範圍(比如1~5)或者是萬用字元(星號)來指定條目

15 10 * * 1 command

mon tue wed thu fri sat sun

0-6 7

命令列表必須指定要執行的命令或指令碼的全路徑名

15 10 * * * /home/rich/test4.sh > test4out

構建cron時間表

crontab -l

列出已有時間表

crontab -e 新增條目

cron目錄

ls /etc/cron.*

如果指令碼需要每天執行一次,只要將指令碼複製到daily目錄,cron就會每天執行它。

cat /var/spool/anacron/cron.monthly

anacron程式使用自己的時間表(通常位於/etc/anacrontab)來檢查作業目錄

1 6 服務控制

2.使用systemctl管理服務 配置檔案 etc inittab upstart風格 init centos6版本 由ubuntu研發,通過匯流排形式以接近並行的方式工作,效率比sysv高 配置檔案 etc inittab etc init conf systemd風格 systemd cent...

linux shell 控制指令碼

常用訊號 1,sighup 掛起程序 2,sigint 終止程序 3,sigout 停止程序 9,sigquit 無條件終止程序 15,sigterm 可能的話終止程序 17,sigstop 無條件停止程序,但不是終止程序 18,sigtstp 停止或暫停程序,但不終止程序 19,sigcont 繼...

第16章 Debug Shell指令碼

本章主要介紹一些方便的 有效的 更好的輸出除錯資訊的方法。本章要學習的知識點 1 看懂指令碼輸出的錯誤資訊,並逐步定位到真正的錯誤 2 如何堅持shell指令碼的語法是否有錯誤 3 如何通過track模式找到程式的錯誤 4 分析指令碼錯誤的一般步驟 5 如何在指令碼程式中新增debug支援。當我們執...