Linuxサービスの起動/起動順序を変更するにはどうすればよいですか?


回答:


11

/etc/rcX.d/の下にあるシンボリックリンクの名前を変更することで順序を変更できます。xは実行レベルです。

SxxまたはKxxで始まるファイルの束が表示されます。Sリンクは起動時にトレースされ、Kリンクはシャットダウンのために解析されます。ここで、xxは順序を表します。

しかし、この順序は理由のために設定されているため、それらを変更するときは注意してください。ntpdは、ネットワークサブシステムが初期化された後にのみ起動します。


21

他の回答で提案されているように、手動で行う代わりに、initスクリプトを変更することもできます。そのような行をヘッダーに追加するだけです:

# chkconfig: 35 90 10

これchkconfigにより、サービスをランレベル3および5に追加し、開始位置を90、終了位置を10に設定します。


この。絶対これ。手動でシンボリックリンクの名前を変更した場合、誰かが一緒に来て実行すると驚かれますchkconfig off servicename && chkconfig on servicename
-batfastad

魅力のように働いた。mysqldとサーブレットコンテナ間の依存関係を構成する必要がありました。mysqldの開始位置がわからなかったため、サーブレットコンテナの開始位置を99に設定しましたが、うまく動作し、mysqldが最初に開始されます。ありがとう。
-jpangamarca

7

ランレベルとrc.dディレクトリについて少し読んでください。rc.dディレクトリ内には、S20apache K10apacheなどのSおよびKリンクがあります。これは、基本的にスクリプトの起動/シャットダウンを指示するものです。

このアーキテクチャにはいくつかの変更が加えられていますが、ほとんどのLinuxがまだ使用しています。


ほとんどのディストリビューションがまだこのシステムを使用していることに驚いています。のような優れたシステムrcorderはしばらくの間存在していました。
クリスS

solaris svcがうらやましいですが、xmlなしでもでき
ます-coredump

これはスポットです。ただし、ディストリビューションによっては、この値を変更する方法が異なる場合があります。そのため、ディストリビューションの特定のドキュメントを参照してください。
アンドリューM.

1
Ubuntuなどの一部のディストリビューションでは、UpstartWikipedia)を使用しています。
追って通知があるまで一時停止します。

7

ここに到着した場合、2つのサービスがあり、一方が他方に依存している可能性がありますが、それらは間違った順序で開始しているため、依存関係のあるサービスは開始できません。シンボリックリンクの編集に関する提案は、スタートアップシーケンスの実行方法を説明する点で有益であり、サービスで「chkconfig on」を実行してシンボリックリンクが元の状態に再作成されるまで正常に機能します。本当に、initスクリプトレベルで問題に対処したいのですが、とにかく面倒ではありません。また、異なるランレベルで一貫性があります。おそらく回答4で提案されているように、「#chkconfig」行を追加する必要はおそらくないでしょう。おそらく同様の行が既にあるからです。

MySQLデータベースバックエンド(mysqld)でOpenldap(slapd)を実行しているサーバーの例を使用します。そのペアを構成することと、なぜそうするかは、まったく別の話です。

起動時にOpenldapがMySQLに依存し、起動シーケンスがそれより前に起動しようとするため、OpenLDAPの起動に失敗します-slapdの位置は27、mysqldの位置は64

/etc/rc3.d/の関連するシンボリックリンクは

S27slapd -> ../init.d/slapd 
and
S64mysqld -> ../init.d/mysqld

2つのinitスクリプトで設定された値を探します。

[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73 

/etc/rc.d/init.d/slapdのchkconfig行を編集して、/ etc / rc.d / init.d / mysqldの開始位置よりも高い開始位置を設定します(85を選択しました)

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73

「chkconfig slapd on」を実行し、シンボリックリンクを再確認します

[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx  1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx  1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd

さて、このサーバーが起動すると、slapdの前にmysqldが起動し、すべてが正しい状態になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.