Windowsには、Windows自体から開始できるすべてのシステムサービスを表示するサービスマネージャーがあり、使用するユーザーを設定し、そこに権限管理があり、変数やその他の情報をサービスに渡すことができます。 、名前を付けることができ、1つのプログラムの複製サービスを作成することもできます。だから私はWindowsにメインの管理ツールを持っています。
Linuxで同じことをするにはどうすればよいですか?起動時に「svnserve」を実行するようにトリガーするにはどうすればよいですか、または特別なコンテキストで実行するようにサービスを構成するにはどうすればよいですか。すべての「プログラムされた」サービスを表示するにはどうすればよいですか?
承認された回答:
現在、Linuxで使用されている主なinitシステムは3つあります。数年前、SysVinitは1つしかありませんでした。ただし、SysVinitにはサービス依存関係のグラフ化などの機能が大幅に不足していたため、現在ではほとんどのディストリビューションで非推奨になっています。現在、ほとんどのディストリビューションはsystemdに切り替えています。新興企業もありますが。
ただし、3つの初期化システムのそれぞれについての質問に対する答えは次のとおりです。
SysVinit
現在DebianとRedHatで使用されているSysVinit。ただし、RedHatの次のバージョン(7)はsystemdを使用します。
起動時にSysVinitサービスを有効にする一般的な方法は、/etc/rc3.d
でそれらをシンボリックリンクすることです。 (または/etc/rc2.d
)。すべてのサービスは/etc/init.d
にあります 。ただし、ディストリビューションにはこれらのファイルを管理するための独自のツールがあることが多く、代わりにそのツールを使用する必要があることに注意してください。 (Fedora/RedHatにはservice
があります およびchkconfig
、ubuntuにはupdate-rc.d
があります )
リストサービス:
ls /etc/init.d/
サービスの開始:
/etc/init.d/{SERVICENAME} start
または
service {SERVICENAME} start
サービスの停止:
/etc/init.d/{SERVICENAME} stop
または
service {SERVICENAME} stop
サービスを有効にする:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
(S95
順序を指定するために使用されます。 S01はS02などの前に開始されます)
サービスを無効にする:
rm /etc/rc3.d/*{SERVICENAME}
Systemd
systemdを使用した最も注目すべきディストリビューションはFedoraです。他にもたくさん使われていますが。さらに、Debianはupstartよりもsystemdを採用することを選択したため、ほとんどのディストリビューションで事実上のupstartシステムになります(ubuntuはsystemdのupstartを削除することをすでに発表しています)。
リストサービス:
systemctl list-unit-files
サービスの開始:
systemctl start {SERVICENAME}
サービスの停止:
systemctl stop {SERVICENAME}
サービスを有効にする:
systemctl enable {SERVICENAME}
サービスを無効にする:
systemctl disable {SERVICENAME}
起動
UpstartはUbuntuの人々によって開発されました。しかし、debianがsystemdを採用することを決定した後、Ubuntuはupstartを削除すると発表しました。
Upstartは、RHEL-6に存在するため、RedHatでも簡単に使用されましたが、一般的には使用されていません。
関連:coreutilの日付はどのようにしてそのような奇妙な結果を得ることができますか?リストサービス:
initctl list
サービスの開始:
initctl start {SERVICENAME}
サービスの停止:
initctl stop {SERVICENAME}
サービスを有効にする:
残念ながら2つの方法:
-
ファイル
/etc/default/{SERVICENAME}
がありますENABLED=...
という行が含まれています 。この行をENABLED=1
に変更します 。 -
ファイル
/etc/init/{SERVICENAME}.override
があります 。start
が含まれていることを確認してください (または完全に存在しない)、manual
ではありません 。
サービスを無効にする:
echo manual > /etc/init/{SERVICENAME}.override
注:Gentooで使用される「OpenRC」initシステムもあります。現在、Gentooはそれを使用する唯一のディストリビューションであり、使用が検討されておらず、他のディストリビューションによってサポートされていません。そのため、その使用法については説明していません(ただし、私がそうしているとの意見がある場合は、追加できます)。