#概要
定期的にコマンドを事項してくれるシェルを作ったよというお話
cronのようなものですが、
cronと違うところは、コマンドが終了してから 次回処理をしてくれるので
2プロセス動くということがないというのが特徴
#ソース
10秒ごとに Echoする処理
exec_sleep.sh
#!/bin/bash
#いろいろ定義********************************
endCount=2
sleepTime=10s
#function定義*******************************
#ここにやりたいことかくよろし!
execCommand(){
#実行する処理が自作のプログラムだったりする時はフルパスで書くとかCDするとかする必要あるっぽよ
echo "ECHO"
}
#改行出力処理
printSP(){
#たまに出力結果を改行したくて空白出力処理をしてるわ!
echo " "
}
#******************************************
#以下本処理
count=0
printSP
while :
do
#開始時刻表示
echo $[count+1]"回目Start : "`date +"%Y/%m/%d %p %I:%M:%S"`
printSP
#ループする処理
execCommand
printSP
echo $[count+1]"回目End : "`date +"%Y/%m/%d %p %I:%M:%S"`
count=$[$count+1]
if [ $count -ge $endCount ]; then
echo " "$count"回実行しました"
break
fi
echo " ****** now sleeping ****** "
sleep $sleepTime
done
実行結果
[root@hogehoge ~]# sh exec_sleep.sh
1回目Start : 2021/01/14 AM 08:31:32
ECHO
1回目End : 2021/01/14 AM 08:31:32
****** now sleeping ******
2回目Start : 2021/01/14 AM 08:31:42
ECHO
2回目End : 2021/01/14 AM 08:31:42
2回実行しました
使い方
いろいろ定義部とfunction定義の部分を編集して
$ sh exec_sleep.sh
でOK
いろいろ定義部
定数とか変数を設定
-
endCount
ループする回数を設定。
サンプルは2回実行したいので2と入っている。 -
sleepTime
sleepで寝かす時間。
入力できる値はsleep --help
でご確認を。
function定義
-
execCommand
このfunction内に 実行したい一連の処理を記載する。
複数実行を順番に行うとかも可能。
作成理由
cronを入れていない Docker環境上でバッチを定期実行して様子を見る用に作成
定期的に実行しつつ、実行した時間を取りたかったので半ば無理やり作りました。