■サービスの管理・設定(Ubuntu)
ここでは、Ubuntu 14.04 でのサービスの管理・設定についてご紹介します。
管理の方法として、System V init と Upstart の2種類があります。
System V init と Upstart
■System V init とは
System V init とは UNIX 系 OS に古くから備わる起動の仕組みです。
設定コマンドとして、 Ubuntu では sysv-rc-conf を使用します。(RedHat 系では chkconfig があります。)
【特徴】
- init プロセスが、各サービスのデーモン(バックグラウンドプロセス)を順に起動する
- /etc/init.d に rc スクリプトを配置し、/etc/rc{ランレベル}.d/ にシンボリックリンクを張ることで管理
■Upstart とは
Upstart とは、 System V init の代わりとなる起動の仕組みです。
デーモン(動作し続けるサービス)だけではなく、タスク(一連の作業を行うプログラム)も起動し、これらをまとめて「ジョブ」と呼びます。
起動/停止はイベントベースです。
ブート時のタスクの起動とシャットダウン時のタスクの停止を非同期に行い、同時にシステム動作中の管理を行います。
System V init との互換性を保ち、移行を容易に行うため、 Upstart のコードは既存の System V init のコードベースに基づいています。
そのため、既存の System V init 用スクリプトをそのまま実行できます。
【特徴】
- イベント駆動型(サービスを順番に起動するのではなく、サービスが起動できる状態になったときに起動する)
- /etc/init でジョブ設定ファイルを配置して管理
サービス自動起動の設定
■System V init 編
System V init は、「sysv-rc-conf」という設定ツールにより管理・設定を行います。
●TUI(テキストユーザインターフェース)で管理する
System V init の設定ツール「sysv-rc-conf(SysV Runlevel Config)」を起動します。
$ sysv-rc-conf
サービス名 : ランレベル の順に表示されます。
[X]は、システム起動時にサービスが自動起動する状態であることを表しています。
【使い方】
矢印キー |
カーソルを移動 |
[Ctrl]キー + [n]キー |
次ページへ移動 |
[Ctrl]キー + [p] キー |
前ページへ移動 |
[-]キー |
すぐにサービスを停止 |
[=] or [+]キー |
すぐにサービスを起動 |
スペースキー |
システム起動時のサービスの ON/OFF を切り替える |
[h]キー |
ヘルプ/ヘルプから戻る |
[q]キー |
設定を保存して終了 |
[r]キー |
設定を変更せずに終了 |
●コマンドで管理する
SysV Runlevel Config は、コマンドで各設定を行うこともできます。
サービスの状態を確認
サービスの状態を確認します。サービス名を指定することもできます。
$ sysv-rc-conf --list (サービス名)
例)全てのサービスを出力する
$ sysv-rc-conf --list
apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
apparmor S:on
apport
・
・
・
speech-dispa 0:off 1:off 2:on 3:on 4:on 5:on 6:off
tomcat7 0:off 1:off 2:on 3:on 4:on 5:on 6:off
例)サービス名「tomcat7」を指定して出力する
$ sysv-rc-conf --list tomcat7
tomcat7 0:off 1:off 2:on 3:on 4:on 5:on 6:off
サービスの自動起動の設定
サービス名を指定して、全てのランレベルでサービスを起動/停止するように設定します。
設定が反映されるのは、次回の起動からになります。
$ sysv-rc-conf サービス名 on/off
例)サービス名「rsync」を指定して、全てのランレベルで起動するように設定する
$ sysv-rc-conf rsync on
例)サービス名を「rsync」指定して、全てのランレベルで停止するように設定する
$ sysv-rc-conf rsync off
サービス名・ランレベルを指定して、サービスを起動/停止するように設定します。
設定が反映されるのは、次回の起動からになります。
$ sysv-rc-conf --level ランレベル サービス名 on/off
例)サービス名「rsync」・ランレベル「2345」を指定して、サービスを起動するように設定する
$ sysv-rc-conf --level 2345 rsync on
■Upstart 編
●ジョブ設定ファイルの編集
ジョブは設定ファイルで管理しています。
Ubuntu 14.04
の場合、/etc/init/以下の「.conf」がついたファイルがジョブの設定ファイルです。
ジョブの名前は、「.conf」を除いたファイル名となります。
例)/etc/init/cups.conf
→ ジョブ名「cups」の設定ファイル
ジョブの設定ファイルを自分で作成することにより、好きなサービスを自動起動させることが可能です。
description "(説明を書く)"
author "自分の名前 <[メールアドレス]>"
start on runlevel [ランレベル]
stop on runlevel [ランレベル]
respawn # 実行中のジョブが異常終了すると再実行するよう指定
expect fork # デーモンの場合は必要
exec 起動コマンド
このほかに、chdir, chroot, setuid, setgid, env, export
など細かな設定が可能です。詳細は下記をご参照ください。
Upstart Intro, Cookbook and Best Practises
例)ccpd.confを作成する
テキストエディタを起動して、設定ファイルを作成します。
$ sudo gedit /etc/init/ccpd.conf
description "Canon Printer Daemon for CUPS (ccpd)"
author "Linuxmania <customer@linuxmania.jp>"
start on (started cups and runlevel [2345])
stop on runlevel [016]
respawn
expect fork
exec /usr/sbin/ccpd
●システムの自動起動を停止させる(ジョブ設定ファイルのリネーム)
システムの自動起動は、 /etc/init/以下の拡張子「.conf」のファイルを読むことで行っています。
あるジョブの自動起動を停止させたい場合、ファイルの拡張子を変更することでそのファイルを読まなくなり、自動起動しなくなります。
ジョブ設定ファイルの名前を変更します。拡張子に「.disable」を付けます。
$ sudo mv ジョブ設定ファイル.conf ジョブ設定ファイル.conf.disable
すぐにサービスを起動/停止する
■System V init 編
●TUI(テキストユーザインターフェース)を利用する
System V init の設定ツール「sysv-rc-conf(SysV Runlevel Config)」を起動します。
$ sysv-rc-conf
[-]キー:すぐにサービスを停止
[=] or [+]キー:すぐにサービスを起動
「sysv-rc-conf(SysV Runlevel Config)」使い方の詳細は
こちらをご参照ください。
●コマンドで行う
以下のコマンドで行います。
$ sudo /etc/init.d/サービス名 start(stop)
【起動】
$ sudo /etc/init.d/サービス名 start
【停止】
$ sudo /etc/init.d/サービス名 stop
■Upstart 編
以下のコマンドで行います。
$sudo initctl オプション ジョブ名
または、単に下記のコマンドでも OK です。
$sudo オプション ジョブ名
【起動】
$sudo initctl start ジョブ名
もしくは、
$sudo start ジョブ名
【停止】
$sudo initctl stop ジョブ名
もしくは、
$sudo stop ジョブ名
【initctl オプション】
start |
ジョブを起動 |
stop |
ジョブを停止 |
restart |
ジョブを再起動 |
reload |
ジョブのプロセスに SIGHUP シグナル(ハングアップによるプロセス終了)を送信 |
status |
ジョブのステータスを出力 |
list |
ジョブのステータスのリストを表示 |