質問: ubuntu9.10でxが起動する前に起動時にスクリプトを実行する 起動時に実行して場所に応じてx構成を切り替えるスクリプトがありますが、xが起動する前に実行するためにどこに配置するかがわからないようです。その結果、xを再起動して、正しい構成を実行する必要があります。現在、私のスクリプトは/etc/init.d/whereamiにあり、シンボリックリンクは/etc/rc[2-5].d/s25whereamiにあります。問題が単に25である場合に備えて、xがいつ開始されるかを調べようとしていましたが、答えが見つからないようです...どんな助けでも大歓迎です。
回答: ubuntuは、gdm(標準ubuntu-desktopを使用するシステムの場合)またはkdm(kubuntu-desktopを使用するシステムの場合)からx-windowsを起動します))。gdm/kdmの起動前にスクリプトを実行するには、次のいずれかを実行できます。 gdmの前に実行する独自のupstartスクリプトを作成します。または システムgdmスクリプトを変更して、カスタム外部スクリプト(たとえば、/ etc/init.d/whereamiスクリプト)を初期タスクの1つとして実行します。 ubuntuはdebianスタイルのランレベルを使用します:ランレベル1はシングルユーザーのリカバリモードです。 ランレベル2-5はすべて同じです(guiマルチユーザー);デフォルトでは、システムはランレベル2で起動します。ubuntu 9.10はupstartを使用します。これは、/ etc/initでサービス起動スクリプトを提供します。 / etc/init.dおよび/ etc/rc.dにある従来のinitスクリプトは、 upstartスタイルのinitスクリプトには移植されていませんが、gdmには移植されています。 (ubuntu 9.10は/ etc/init.d/gdmを提供しますが、/ etc/rcx.dシンボリックリンクを作成しないことに注意してくださいそれのための。)gdmの起動は、/ etc/init/gdmによって制御されます。スクリプトの上部にあるこれらの行は、gdmをいつ開始および停止するかを指定します。 gdmを開始するためのrunlevel仕様がないことに注意してください。最初に開始する必要があるサービスのみです。start on (filesystem and started hal and tty-device-added kernel=tty7 and (graphics-device-added or stopped udevtrigger)) stop on runlevel [0156] emits starting-dm upstartスクリプトのドキュメントについては、 man 5 init を参照し、システムの /etc/init/*.conf いくつかの例のファイル。 startingevent のマンページも参照してください。 例 別のサービスが実行され、開始前および停止後になるたびに実行を希望するサービス、使用する可能性があります: start on starting apache stop on stopped apache 別のタスクまたはサービスを開始する前に実行する必要があるタスクは、次のものを使用する場合があります。 start on starting postgresql また、gdm/kdm upstartスクリプトがシグナルstarting-dmを発行することにも注意してください。便利である。したがって、gdmの前に実行するように設計されたupstartスクリプトは、次のstart on句のいずれかを使用する必要があります。# run only when starting gdm start on starting gdm # run when starting gdm or kdm start on (starting gdm or starting kdm) # run when starting any dm # starting-dm is a custom event emitted by the gdm/kdm/etc scripts start on starting-dm