CentOSで定期(繰り返し)実行したいさー


どんなことをやりたいのさー?

1日1回とか30分に1回とか定期的にファイルをバックアップしたいさー。

でもCentOSでそんなもん作ったことないから、まず手始めにひたすら繰り返すだけのやつを作ってみるさー。

定期実行 を覚えればバックアップだけじゃなくて、死活監視とか更新通知とか…できることの幅が広がると思うんさー。

どんな方法で定期実行?

systemd を自作します。

そして『いきなり本番!』じゃなくてDocker上のCentOS8で確認します。

ただし、Dockerのコンテナを作る時に一工夫しています。詳細は下記。
Docker上のCentOSだと自作systemdが動かない時の対応方法

テキストファイルとそいつに書き込むシェルスクリプトを作成

まずテキストファイル新規作成。

コマンド
touch /syami.txt

続いてシェルスクリプト新規作成。

コマンド
touch /momo.sh

シェルスクリプトの中身はこう!
(テキストファイルに追記するだけの単純なやつ)

/momo.sh
#!/usr/bin/bash
echo `date` syamikogawaruinndayo >> /syami.txt

シェルスクリプトに実行権限与えてあげる。

コマンド
chmod 755 /momo.sh

serviceを新規作成するさー

『/etc/systemd/system/』に下記ファイル新規作成。
(作ったシェルスクリプトをキックするやつ)

/etc/systemd/system/momo.service
[Unit]
Description=mazokusabisu

[Service]
Type=simple
ExecStart=/momo.sh

[Install]
WantedBy=multi-user.target

timerを新規作成するさー

『/etc/systemd/system/』に下記ファイル新規作成。
(作ったシェルスクリプトをキックするやつを定期実行するやつ)

/etc/systemd/system/momo.timer
[Unit]
Description=mazokutimer

[Timer]
Unit=momo.service
OnUnitActiveSec=1m

[Install]
WantedBy=multi-user.target

定期実行開始するさー

コマンド
systemctl enable momo.service
systemctl enable momo.timer
systemctl start momo.timer

しばらく放置して/syami.txtを開いてみると…
うん、いい感じです。

蛇足

『毎日〇時に』とか『〇曜日の〇時に』って指定方法が実用的かなーって思います。

参考サイトさん

https://qiita.com/narikei/items/ca4823c7f6790f0cbe0b
https://qiita.com/mogya/items/aaee50d41012d202f53c

次の記事

CentOSで日付・曜日・時間を指定して定期実行したいんだよなあ

バージョン

Windows10 Pro バージョン1909 OSビルド19042.630
Docker Desktop:2.5.0.1(49550) Engine:19.03.13 Compose:1.27.4
CentOS Linux release 8.2.2004 (Core)