systemctl startを実行するshellを書いてcronで実行する

まず、hello deamonはdeactiveの状態
$ sudo systemctl status hello

### shellを書く
exe.sh

#!/bin/sh
 
LOG=`sudo systemctl start hello`

$ sudo chmod 0755 exe.sh

### shell実行
$ sh exe.sh

$ sudo systemctl status hello
● hello.service – hello daemon
Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2021-01-20 10:58:55 JST; 21s ago
Main PID: 7450 (hello.sh)
CGroup: /system.slice/hello.service
├─7450 /bin/bash /home/vagrant/dev/test3/hello.sh
└─7472 sleep 1

1月 20 10:58:55 localhost systemd[1]: Started hello daemon.
1月 20 10:58:55 localhost systemd[1]: Starting hello daemon…

### crontabでshellを実行
$ sudo vi /etc/crontab

* * * * * /bin/sh /home/vagrant/dev/test3/exe.sh

$ sudo systemctl status hello
● hello.service – hello daemon
Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2021-01-20 11:10:01 JST; 27s ago
Main PID: 7625 (hello.sh)
CGroup: /system.slice/hello.service
├─7625 /bin/bash /home/vagrant/dev/test3/hello.sh
└─7654 sleep 1

お、シェルで”sudo systemctl start”の実行までできました。
あとは、シェルをmysqldのプロセスが止まっていたらsudo systemctl restart mysqld.serviceにして、ec2にデプロイするだけですね。なるほど、シェルってなかなかとっつきにくいと思ってたけど、意外と便利やな。