現在、Ubuntuでソフトウェアをサービスとして開始するには、実際には3つの異なる方法があります, SysV, Upstart(アップスタート) と systemd. サービスは、ユーザーが直接起動して実行するのではなく、バックグラウンドでシステムによって実行されるプログラムとしてここで定義されます。
SysV
Linuxでサービスを開始する従来の方法は、スクリプトを次の場所に配置することでした /etc/init.d
を使用して、 update-rc.d
コマンド(またはRedHatベースのディストリビューション, chkconfig
)を有効または無効にします。
このコマンドは、いくつかの軽度に複雑なロジックを使用してシンボリックリンクを作成します /etc/rc#.d
サービスを開始する順序を制御する。 あなたが実行した場合 ls /etc/rc2.d
次のようなファイル名でサービスが強制終了される順序を見ることができます K##xxxx
ファイル名から始めて S##xxxx
. その ##
で S##xxxx
サービスのための"開始順序"を意味します xxxx
. 逆に、 ##
で K##xxxx
サービスのためのキル順序を意味します xxxx
.
一つの主要な問題と SysV システムを起動するときに, すべてがシリアルで行われなければならず、次々とシステムの起動時間が本当に遅くなりました. これを並列化する試みが行われましたが、それらは行き当たりばったりであり、最大限に活用するのは難しかったです。 これが主な理由でした Upstart(アップスタート) 作成されました。
Upstart(アップスタート)
Upstartは、ジョブ定義ファイルを使用します /etc/init
サービスを開始する必要があるイベントを定義します。 したがって、システムの起動中に、upstartはさまざまなイベントを処理し、複数のサービスを並行して開始できます。 これにより、たとえば、別のCPUバインドされたサービスが実行されている間、またはネットワークが動的IPアドレスが割り当てられるのを待っている間に、
次のコマンドを実行すると、すべてのupstartジョブファイルを表示できます ls /etc/init/*.conf
私はちょうどここで停止し、あなたがサービスが何であるか、またはそれが何をしているかわからない場合は、それを無効にしないでくださいと言
すべてのサービスがupstartに変換されているわけではありません。 ここ数ヶ月Canonicalのサーバーチームで作業している間、私は変換されたジョブファイルの数に取り組んできましたが、最も素敵な部分は、すべてのスクリプト"魔法" しかし、今のところ、伝統的なネットワークサービスのほんの一握り、のような イカ と サンバ、変換されています。
サービスは新興企業に基づいていますか?
サービスがupstartベースであるかどうかを判断するには、statusコマンドを実行します:
status servicename
それがあれば upstart(アップスタート) ジョブ、それはこれを表示します:
$ status statdstatd start/running, process 942
しかし、そうでない場合は、このようなものが表示されます:
$ status apache2status: Unknown job: apache2
この場合, apache2
に変換されていない upstart(アップスタート). だから、無効にするには apache2
あなたはちょうど実行します
sudo update-rc.d apache2 disablesudo service apache2 stop
Upstartでのサービス(ジョブ)の無効化
Upstartジョブ定義には、次のものはありません。 update-rc.d
コマンド。 ジョブを無効にするには、ジョブファイルを直接編集して無効にする必要があります。 これを行うには2つの方法があります。
それでも手動で起動できるようにしたい場合は、コメントアウトする必要があります start on
条件。 インストールしたいとします サンバ、しかし、それは自動的に起動していません。 ここにジョブファイルがあります(natty):
description "SMB/CIFS File Server"author "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-start script RUN_MODE="daemons" [ -r /etc/default/samba ] && . /etc/default/samba [ "$RUN_MODE" = inetd ] && { stop; exit 0; } install -o root -g root -m 755 -d /var/run/sambaend scriptexec smbd -F
無効にするには サンバ、あなただけの置くことができます #
の前に"start on local-filesystems
". 起動時にバックアップを開始しませんが、今回はそれを停止する必要があります
sudo service smbd stop
しかし、あなたが望んでいない場合 サンバ 開始するには、実際にパッケージを削除することをお勧めします。 ただし、インストールしたいが起動できない場合は、次のようにすることもできます:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
Start/stopスタンザを使用してサービスを無効にする(11.04時点)
11.04に含まれるupstartのバージョンから、新しいキーワードがあります。 start on
と stop on
スタンザ: manual
. そのため、11.04の時点でサービスを無効にする別の方法は次のとおりです:
echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override
を作成することができます。 override
ジョブ定義をまったく編集せずにサービスを無効にするファイル。 manual
その中のキーワード。