shell指令碼超時控制
寫指令碼的時候,經常需要用到超時控制。看《shell專家程式設計》時看到一個好例:修改了一下,
1.超過timeout時間還沒執行完,則kill程序,發郵件告警:
set-x mailSend() { mailContent="xxxx Web response time over 5 seconds" echo $mailContent | mail -s "xxxxxx Web TimeOut"[email protected].cion } timeout() { waitfor=3 command=$* $command
( sleep $waitfor ; kill -9 $commandpid >/dev/null2>&1&& mailSend )&
watchdog=$! sleeppid=$PPID wait $commandpid >/dev/null2>&1
kill $sleeppid >/dev/null2>&1 }
#測試的函式
test123() { sleep 20 }
timeout test123
2.超過timeout時間還沒執行完,只發郵件告警,程式正常執行:
mailSend() { mailContent="xxxxe Web response time over 5 seconds,Please have a check !" echo $mailContent | mail -s "xxxxx WEB response time over 5 senconds" $mailTo } timeout() { waitfor=6 command=$* $command & commandpid
( sleep $waitfor ; mailSend )&
watchdog=$! sleeppid=$PPID wait $commandpid >/dev/null2>&1 kill -9 $watchdog >/dev/null2>&1 kill $sleeppid >/dev/null2>&1 }
相關推薦
shell指令碼超時控制
寫指令碼的時候,經常需要用到超時控制。看《shell專家程式設計》時看到一個好例:修改了一下, 1.超過timeout時間還沒執行完,則kill程序,發郵件告警: set-x mailSend() { mailContent="xxxx Web resp
Java執行Shell指令碼超時控制
Java的Runtime可以執行命令列指令碼,某些特定場合需要對指令碼的執行時間進行控制,防止指令碼某些異常情況下,一直未能正確結束,導致Java主程序掛起。本文的程式對這一過程進行了控制 Java程式碼 import org.slf4j.Logger; import org.slf4j.Log
Shell指令碼併發池控制
控制個數為10個 dbname=$1 tempfifo=$$.fifo # $$表示當前執行檔案的PID mkfifo $tempfifo exec 10<>$tempfifo rm -rf $tempfifo for ((i=1; i<=10; i++)
shell指令碼:流程控制語句
if/else 命令連線符: 單個分支if條件語句 if[ 條件判斷 ] then <程式> fi 或者 if[ 條件判斷 ]; then <程式> fi 多分支 if[ 條件判斷 ]; then <程式> el
Shell指令碼併發及併發數的控制
https://www.jianshu.com/p/701952ffb755 正常情況下,Shell指令碼是序列執行的,一條命令執行完才會執行接下來的命令。如下程式碼: !/bin/bash for i in seq 1 10 do echo $i done echo “----
Shell指令碼中併發執行緒以及併發數的控制
http://blog.chinaunix.net/uid-8478094-id-3995108.html Shell指令碼中併發執行緒以及併發數的控制 主要記錄一下Shell指令碼中的命令的併發和序列執行。 預設的情況下,Shell指令碼中的命令是序列執行的,必須等到前一條命令
linux Vim編輯器、shell指令碼、流程控制語句和計劃任務
本章主要講解shell指令碼,vim編輯器 1. 強制儲存退出 wq! 2. 查詢主機名稱 hostname 3. 在vim中常用的命令 dd刪除游標所在行;5dd刪除自游標所在行開始往下數五行;yy複製游標所在行;5yy複製自游標所在行開始往下數5行內容;n顯示搜尋命令定位到下一個字串
Shell指令碼學習 - 流程控制和函式
繼續Shell的學習 流程控制 if else 流程控制不可為空,如果else沒有語句執行,就不要寫else if: if condition then command1 command2 .
Shell指令碼執行超時怎麼辦?
在Shell裡會有一種不太常見的情況,就是指令碼有時候會出現超時的現象。一般來說遇到這種問題,我們都會簡單粗暴的採用下面這種指令碼來當“超時看門狗“: 這個指令碼搭配兩個變數使用的話,監控一點小程式碼還算OK,但是它的邏輯還是比較粗糙,比如如果在這個指令碼執行的時候,又有了一個新的process
Shell指令碼:程式控制
條件測試的表示式: [ expression ] 括號兩端必須要有空格 [[ expression ]] 括號兩端必須要有空格 test expression組合測試條件: -a: and -o: or !: 非 整數比較: -eq 測試
shell指令碼read -t 超時輸入測試
[[email protected] shellStudy]# cat timeout.sh #!/bin/bash TIMEOUT=3 #超時間隔 echo "What is your name?" echo "Quickly now, you only have $ITMEOUT secco
控制shell指令碼執行頻率、解決shell指令碼不能修改環境變數等問題
問題描述:這幾天室友遇到一個麻煩,他寫的一個shell指令碼在事件觸發時總是被執行多次而出錯,他想要控制指令碼的執行次數,即每次觸發僅執行一次就行了。懶得去研究為什麼被多次觸發,希望僅僅在指令碼內部寫幾行程式碼便解決這個問題。下面我向大家介紹一下我想的一種解決辦法。 解決辦
shell指令碼--流控制
if 變數賦值,等號之間不能有空格 條件判斷是中括號要留有空格 #語法結構 #如果if條件判斷中有多條命令,則根據最後一條命令的執行結果進行評估 if command;then
Linux命令列與shell指令碼(12)--控制指令碼
處理訊號 Ctrl+C組合鍵會產生SIGINT訊號,會停止shell中當前執行的程序 Crtl+Z組建鍵會產生SIGTSTP訊號,停止shell中執行的任何程序,停止程序會讓程式繼續保留在記憶體中,
(十五)、shell指令碼之簡單控制流結構
一、基本的控制結構 1、控制流 常見的控制流就是if、then、else語句提供測試條件,測試條件可以基於各種條件。例如建立檔案是否成功、是否有讀寫許可權等,凡是執行的操作有失敗的可能就可以用控制流,注意控制流的真為0,假為1。 單層if語句 if 條件;then &nbs
Shell指令碼控制docker容器啟動順序
## 1.遇到的問題 在分散式專案部署的過程中,經常要求伺服器重啟之後,應用(包括資料庫)能夠自動恢復使用.雖然使用`docker update --restart=always containerid`能夠讓容器自動隨docker啟動,但是並不能保證是在資料庫啟動之後啟動,如果資料庫未啟動,那麼將導致應用
解決:Linux SSH Secure Shell(ssh) 超時斷開的解決方法
sshd 使用 指定 fig 客戶 art service 連接 logs 轉載:http://www.cnblogs.com/jifeng/archive/2011/06/25/2090118.html 修改/etc/ssh/sshd_config文件,找到 Client
Shell 腳本控制語句
cond ase div 控制語句 pattern att mman class clas 1、if 語句 if condition1;then command1 elif condition2;then command2 else comman
shell的流程控制介紹
shell、流程控制Lnux shell和Java、PHP等語言不一樣,它有一套自己的流程控制語句,其中包括條件語句(if,case),循環語句(for,while,until),循環控制語句(continue,break,shift)。下面我會通過一些簡單明了的例子來介紹下各個語句的使用方法。一、條件語句
shell程序設計-控制結構
rm命令 可執行 等於 取反 done class nts 設計 不同 1.shell 條件判斷 命令:test 或 [ 使用“[”時,需使用“]”結尾,和判斷語句之間需要空格 如:判斷demo.c文件是否存在 if [ -f demo.c ] then … fi 或 if