1. 程式人生 > >shell指令碼超時控制

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

&         commandpid=$!

( 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