このエントリーをはてなブックマークに追加

CentOS 7 で起動時と終了時にそれぞれ1回だけ実行するスクリプトを作成する

CentOS 7 で起動時と終了時にそれぞれ1回だけ実行するスクリプトを作成する方法を紹介したと思います。
次のような systemd スクリプトを作成します。


cat << EOF > /usr/lib/systemd/system/my-oneshot.service

[Unit]
Description=my-oneshot
After=network.service
Before=shutdown.target
Requires=network.service

[Service]
Type=oneshot
ExecStart=/bin/bash -v ‘/usr/local/bin/my-up.sh’
ExecStop=/bin/bash -v ‘/usr/local/bin/my-down.sh’
RemainAfterExit=true

[Install]
WantedBy=multi-user.target
EOF

次に systemd をリロードして、サービスを有効・開始します。


$ sudo systemctl daemon-reload
$ sudo systemctl enable my-oneshot
$ sudo systemctl start my-oneshot

これで、起動時には /usr/local/bin/my-up.sh が実行されて、終了時には /usr/local/bin/my-down.sh が実行されます。
もちろん、EC2 上でも利用可能ので、AutoScaling 時などに起動あるいは終了時に実行したいコマンドがあるときに設定すると便利ですよね。