2015/03/31 少しだけ補強しました。
-----
CentOS6のマシンで起動時にプログラムを実行するよう、rc.localに登録していましたが、CentOS7からsystemdに置き換わったため、さてどうやれば良いのかと調べました。
手法は2つあります。
rc.localをそのまま使うのであれば、rc.localに実行権限をつけるとブート時に実行されますよということですね。おすすめは、自分でsystemdのサービスとして定義してあげましょうという内容です。
1. /etc/systemd/systemの下に、拡張子が .serviceのテキストファイルを作る。(nantoka.serviceのような)
中身はこんなかんじです:
-----
手法は2つあります。
- rc.localを使い続ける
- systemdのやり方に置き換える
/etc/rc.d/rc.localをcatすると、こんなコメントが記載されています。
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In constrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
rc.localをそのまま使うのであれば、rc.localに実行権限をつけるとブート時に実行されますよということですね。おすすめは、自分でsystemdのサービスとして定義してあげましょうという内容です。
1. /etc/systemd/systemの下に、拡張子が .serviceのテキストファイルを作る。(nantoka.serviceのような)
中身はこんなかんじです:
[Unit]
Type=simple ←プロセスの起動タイプ。
Description=nantoka shell ←サービスの説明。
Description=nantoka shell ←サービスの説明。
After=postgresql.service ←自分が起動する前に起動しててほしいサービスを書く。network.targetなど
[Service]
ExecStart=/bin/bash /nantoka.sh ←実行したいプログラム
[Install]
WantedBy=multi-user.target ←どのターゲットで動かすか(マルチユーザー)
nantoka.shは、起動したら常駐するようなタイプのシェルを想定しています。
2. systemdをリロードして変更を適用する
2. systemdをリロードして変更を適用する
# systemctl reload-daemon
3. OS起動時に自動起動する
# systemctl enable nantoka.service
4. サービスを開始する
# systemctl start nantoka.service
ユニット設定のサンプルはこちら
3. OS起動時に自動起動する
# systemctl enable nantoka.service
4. サービスを開始する
# systemctl start nantoka.service
ユニット設定のサンプルはこちら
コメント
コメントを投稿