init.dのサービススクリプトを起動および終了時に呼び出すことはできますか?

init.dのサービススクリプトを起動および終了時に呼び出すことはできますか?

私はRed Hat 5.1を実行しています。 chkconfig --add sysinitを使用してサービスとして追加したsysinitというスクリプトがあります。ファイルに以下を設定しました。

#chkconfig 4 01 01

これにより、rc4.d ディレクトリに S01sysinit へのシンボリックリンクが生成されます。ただし、起動時と終了時にスクリプトを実行したいです。何をしても、終了時にカスタムスクリプト(サービス)を実行することはできません。私の機能をS01で実行されているスクリプトとK01で実行されている2つのスクリプトに分割しようとしましたが、うまくいきませんでした。私のスクリプトがしなければならないことをするためにrc.sysinitファイルを変更したくありません(手をつけてはいけません)。私がこれを行う必要があるのは、rc.sysinitファイルが/ optディレクトリをアンマウントしようとする前に/ optディレクトリ内のsamba共有をアンマウントする必要があるためです(今は「デバイスが使用中です」というエラーが発生しました)なぜなら、cifsマウントはまだ存在します)。

起動、終了、および再起動時にスクリプトを実行できるように特別に実行する必要がある作業はありますか?同じ実行レベルでK01sysinitとS01sysinitを使用できますか?それとも、ランレベルがどのように機能するのか誤解していますか?

私のスクリプトにはすでに)startと)stopセクションがあります。

答え1

はい、SとKの両方が必要です。 Kスクリプトは、次の状況で実行する必要があります。去るレベルだと言いましたね。利用可能なクエリは 'システムV初期化「または」三位一体」。

chkconfigシンボリックリンクは期待どおりにインストールされていますか?

答え2

私が見つけた解決策は、次のコードを追加することでした。

    touch /var/lock/subsys/<scriptname> 

etc / rc.d / rcファイルがK *でマークされたシンボリックリンクからスクリプトを実行しようとすると、ロックファイルを見つけます。このファイルがないと、システムは「サービス」が「実行中」であるかどうかはまったくわかりません。

関連情報