LoginSignup
1
1

More than 3 years have passed since last update.

cronの代わりに定期実行してくれるバッチくん作成

Last updated at Posted at 2021-01-14

概要

定期的にコマンドを事項してくれるシェルを作ったよというお話

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環境上でバッチを定期実行して様子を見る用に作成
定期的に実行しつつ、実行した時間を取りたかったので半ば無理やり作りました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1