にファイルを作成し、/etc/rc0.d
名前をrc.local
。
このファイルには、私が入れた他のファイルを実行する行を追加しましたDesktop
。起動時にコマンドが実行されるように、これらすべてを実行しました。フォローするこの文書の指示(最初の方法)しかし、何も動作しないようです。
なぜこれがうまくいかないのですか?
答え1
/etc/rc.d/
あなたがリンクした説明には、かつてすべての起動スクリプトディレクトリをグループ化するために使用されたほとんどの歴史的なディレクトリが含まれています。 、などがあり/etc/rc.d/init.d/
ます/etc/rc.d/rc0.d/
。/etc/rc.d/rc1.d
ほとんどの最新のディストリビューションでは、長い間このrc.d
ディレクトリを省略し、他のディレクトリを/etc/
。
/etc/rc0.d/
スクリプトへのシンボリックリンクを含める必要があります(スクリプトの実際の場所はでなければなりません/etc/init.d/
)。システムがシャットダウンするか、電源が切れます。。
/etc/rc6.d/
実行する必要があるスクリプトに接続するために使用されます。再起動(例:カーネルアップデートのインストール後にシステムをシャットダウンしてすぐに再起動したい場合)
スクリプト接続に最適なディレクトリは、システム構成とシステムのデフォルト実行レベル(SysVinitを使用している場合)によって、または/etc/rc3.d/
です/etc/rc5.d/
。 Debian ベースの Linux ディストリビューションは通常、通常のマルチユーザー状態 (クラシック SysVinit を想定) にランレベル 3 を使用しますが、RedHat/Fedora ベースのディストリビューションは GUI ログインが有効なマルチユーザー状態にランレベル 5 を使用し、マルチユーザー状態を達成するにはランレベル3を使用してください。ローカルX11 GUIサブシステムを無効にすることによるユーザーの状態。
すべてのディレクトリのシンボリックリンク名は、大文字の/etc/rc?.d/
Sまたは大文字のKで始まり、その後に(通常は)そのディレクトリのリンクの先頭からスクリプトの相対位置を識別する2桁の数字が続く必要があります。大文字のSを使用すると、システムはコマンドライン引数を使用してリンカスクリプトを実行しstart
、Kを使用するとシステムはstop
その引数を使用します。
したがって、スクリプトを配置して/etc/init.d/rc.local
から、次のように1つまたは2つのシンボリックリンクを作成する必要があります。
ln -s /etc/init.d/rc.local /etc/rc3.d/S99rc.local
ln -s /etc/init.d/rc.local /etc/rc5.d/S99rc.local
しかし、それはすべてではありません!
最新のLinuxディストリビューションは、クラシックSysVinitを使用するディストリビューションでも、systemd
厳密に1つずつ実行するのではなく、さまざまなシステム起動タスクを並列に実行するためにさまざまなソリューションを使用する傾向があります。これは、最新のマルチコアCPUでの並列化により、起動プロセスが高速化されるためです。この場合、スクリプトの先頭に特別な形式のコメントブロックを追加して、スクリプトが依存するシステムサービスを定義する必要があります。それ以外の場合、並列ロジックはスクリプトを実行できます。早すぎる、必要なシステムサービスを最初に開始する前に。
これは、ディストリビューションが「systemd
工場出荷時設定」を使用する場合に特に重要です。一部のディストリビューションの「工場出荷時のデフォルト」も、rc.local
適切な依存関係定義を追加しない限り、ブートプロセスの最初に実行されるためです。
バラよりhttp://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.htmlSysVinitスタイルの起動/終了スクリプトに推奨されるコメントブロックの現在の仕様。
つまり、スクリプトの先頭に次の内容を追加できますrc.local
。
### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: run locally-configured start-up commands
### END INIT INFO
私の考えには方法1リンクの説明不完全で古いアドバイスが含まれています。他の 2 つの方法は新しいユーザーにとって簡単になりますが、これらの方法が特定のディストリビューションで動作するかどうかを確認する方法については説明がありません。