秒級別執行指令碼的方法

2022-01-26 13:17:45 字數 1298 閱讀 1060

前言:

crond服務提供分鐘級的定時任務,但有的應用場景需要秒級的執行指令碼,比如不穩定的應用程式,或者需要高可用的服務等等,整理測試後,有兩種辦法:1.使用while寫乙個死迴圈,並將指令碼放入後台執行。2.使用sleep,根據指令碼的需求來進行crontab的修改。

第一種辦法:

#!/bin/bash

while

true;do

echo

"hahaha

"sleep

1done

放入後台執行的方法為,在執行指令碼的命令後面加上&符號就行

第二種辦法:

使用sleep與crontab結合起來:

*/1 * * * * root /script/mstest.sh

*/1 * * * * root sleep 5;/script/mstest.sh

*/1 * * * * root sleep 10;/script/mstest.sh

*/1 * * * * root sleep 15;/script/mstest.sh

*/1 * * * * root sleep 20;/script/mstest.sh

*/1 * * * * root sleep 25;/script/mstest.sh

*/1 * * * * root sleep 30;/script/mstest.sh

*/1 * * * * root sleep 35;/script/mstest.sh

*/1 * * * * root sleep 40;/script/mstest.sh

*/1 * * * * root sleep 45;/script/mstest.sh

*/1 * * * * root sleep 50;/script/mstest.sh

*/1 * * * * root sleep 55;/script/mstest.sh

如上所示,每5s執行一次。需要注意的是,上面的配置是修改/etc/crontab檔案的,使用/etc/crontab需要使用加上使用者名稱,而crontab –e 則不需要,redhat系統每分鐘定時設定為 * * * * * 而ubuntu為*/1 * * * *

總結:

相對來說還是第二種方法比較可靠,crontab服務在每次系統重新啟動的時候都會自動載入配置檔案,而第一種辦法需要手動啟動,並且不好檢查,當然,這種方式對需要暫停指令碼的情況來說又不友好了,想了乙個辦法:修改指令碼的名稱,而後需要啟動指令碼的時候,將指令碼的名稱可以改回來。

自動執行指令碼

乙個偶然的機會,發現了自動執行指令碼的東東,真是神奇啊,可以執行sql 控制台命令等。由於研究的時間有限,所以知之甚少 先和大家分享下,哈 dim consoleprocess as new system.diagnostics.process consoleprocess.startinfo.fi...

C MFC ShellExecute執行指令碼

目前知道三種方式 winexec,shellexecute createprocess。1.阻塞式呼叫,呼叫時程序阻塞 void cmfccodedlg callshellscript cstring path,cstring fbat,cstring param shexecinfo.cbsize...

Mac執行指令碼

由於iphone的成功,用mac os的朋友也越來越多,建立批處理指令碼檔案還是非常重要的。由於在mac下面建立指令碼檔案和windows下面大不一樣,於是寫篇博文紀錄一下。plain view plain copy 1.bin bash 2.echo abc plain view plain co...