2013年から暗号通貨について活動している、とあるモナコイナーのブログである。

2018年7月26日木曜日

systemdを使いOS起動時に自動でスクリプトを動かす方法

こんにちは。
最近仕事で1つ大きな課題をクリアし、社会人になって以来初めての達成感に浸っているLmonaです。



太陽の日差しが照りつける中、麦わら帽子に白いワンピース着てこんなひまわり畑にいってみたいもんです。
夏は暑くて嫌ですが、BBQや花火など楽しそうなイベントがたくさんありますよね!(ただし、企画すればのはなし)めんどくさがってたらあっという間に夏が終わる・・ということで人を誘ってBBQでもしようかねーなんて頭の中で考えてます。
皆さんも夏を満喫してくださいね(^^)/

さて、今日は最近習得したOS起動時に自動でスクリプトが発動するような仕掛けについて伝授いたします!(^^)!



<前提>
・OS:centos7

<目標>
centos7から登場したsystemdを利用して起動したいスクリプトをサービス化することでOSを起動するごとにそのサービスが自動起動されるようにする。

<用意するファイル>
1、○○.service(ユニットファイル)
2、動かしたいスクリプト

<説明>
1、動かしたいスクリプトを配置する
 # vi /opt/hello.sh
      〓スクリプト配置〓
      ・
      ・
      ・
 実行権限を忘れずに与えましょう
 # chmod 755 /opt/hello.sh


2、ユニット定義ファイルをつくる
 # vi /etc/systemd/system/hello.service


[Unit]
Description = hello daemon
After = network.target
[Service]
ExecStart = /opt/hello.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

*Descriptionは自分がわかるような説明をかけばOK!
*ExecStart部分にサービススタート時に動かすスクリプトのフルパスを記載!
*Afterにはこのユニットより先に起動すべきユニットをかく。
 今回だとhello.shを実行するサービスが起動する前にネットワークサービスを起動させてくださいということ。

3、systemdに対して新しいhello.serviceが存在することを通知する
 # systemctl daemon-reload

4、自動起動設定を忘れない
 # systemctl enable hello

5、サービス起動させてステータスもチェック
 # systemctl start hello
 # systemctl status hello

6、再起動させてみてちゃんと自動でスクリプトが実行されたか確認!
 # reboot

*うまく動かないなってときは/var/log/messagesなどからログをみてみてください!



こんな簡単にサービスがつくれてしまいました・・
ただ注意していただきたいのはcentos7からでたsystemdの機能を使っているということです。ほかのバージョンの場合は違うやり方を使うと思われます。


ちなみにOSがシャットダウンする前にスクリプトを実行させることも工夫次第でできますよ(^_-)-☆


みなさんぜひお試しを。

Lmonaでした。