起動時にbashスクリプトを実行する方法


0

私はこの質問が何度も聞かれたことを知っています、しかし私はそれを働かせることができません。

これを機能させるために私が取ったステップは次のとおりです。

  1. として保存されたスクリプトを書いた collection.sh
  2. 動いた collection.sh/etc/init.d
  3. 実行された $ sudo chmod 711 /etc/init.d/collection.sh スクリプトの実行権限を設定する
  4. 実行された $ ln -s /etc/init.d/collection.sh /etc/rc0.d/ シンボリックリンクを作成する /etc/rc0.d
  5. でマシンを再起動しました $ sudo reboot

これらのステップは実行中に失敗しました collection.sh 起動時にそれで、誰が私が間違ったことを指摘することができますか?

シンボリックリンクを間違って作成しているのではないかと思いました rc?.d 0-6とSがあるのでフォルダ rc フォルダもしそうなら、どのフォルダにそれを作るべきですか?


何も知らずに collection.sh やっているべきであるか、あなたがそれがすることを期待していることが失敗している、この質問はそのままで答えることはかなり不可能です。
JakeGould

回答:


0

あなたは私が見ている3つのことを間違ってやっています。

最初:あなたはあなたのソフトリンクを入れたいです。 /etc/rcS.d/ マシンが "シングルユーザー"モード(ネットワークが利用できない状態)に入ったときに実行します。 /etc/rc[2-5].d/ マシンが「マルチユーザー」モードに入ったときに実行する(ランレベル2から5)。ランレベル0 /etc/rc0.d/ マシンがシャットダウンするように指示された場合にのみ入力されます。ランレベル6は「再起動」に使用されます。ウィキペディアのページを見てください UNIXランレベル

2番目:ソフトリンクの名前は collection.sh。それはフォームである必要があります S09collection 「S」は 開始 "09"は 08個のスクリプトがすべて開始された後に開始します 。見る ここに 詳細については。

第三に:initはデーモンサービスを開始するために使われ、collection.shを直接実行するために使われるべきではありません。 collection.shデーモンの起動と停止を処理する実際のinitスクリプトを作成する必要があります。で既存のinitスクリプトを調べてください。 /etc/init.d/ それらがどのように機能するのかを知るために。別の方法として、initスクリプトの書き方についての以下のリンクを見てください。

  • ここに LSBに準拠したinitスクリプトを書く上での方法です。これはLSB準拠のLinuxディストリビューションにお勧めです。あなたがあなたの質問に "ubuntu"とタグ付けしたことに気づいたので、(すべてのDebianベースのディストリビューションと同様に)UbuntuはLSBに準拠していることに言及するべきです。
  • ここに initスクリプトをLSB準拠にするためのDebianウィキガイドです。
  • ここに System Vスタイルのinitスクリプトをどのように使うかについての "Quick and Dirty"です。
  • ここに GithubのSystem Vスタイルのinitスクリプトのテンプレートです。

また、シンボリックリンクを直接作成する必要はありません。 /etc/rc?.d フォルダ主要なディストリビューションはすべてそれをするための自動化されたツールを持っています。見る この記事 詳細については。


0

スクリプトが表示されない限りこれが機能しない理由を知るのは困難ですが、実行した手順は合理的に見えます。

失敗を説明するいくつかの可能性は

  • の最初の行に#!/ bin / bashのようなものはありません。 スクリプト
  • そうでないバイナリへのパスに頼っています 設定されています。
  • あなたのスクリプトはスタートアップスクリプトが渡すことを考慮に入れていません 開始、停止、リロードなどのパラメータ

起動時にスクリプトを実行するもう1つの方法(ほとんどのディストリビューションで)は、単純に/etc/rc.localに追加することです - これは最後に実行するという追加の利点があるため、前提条件が満たされます。


0

シンボリックリンクは、開始のための 'S'またはkill / stopのための 'K'とそれに続く2桁の順序からなる3文字のキーで始まる必要があります。

ほとんどのディストリビューションには、次のようなプログラムが含まれています。 update-rc.d これにより、必要に応じてシンボリックリンクが作成および削除されます。コマンドを試してください man -k rc.d ドキュメントを見つけるために。

あなたの中にテンプレートがあるかもしれません /etc/init.d ディレクトリ。それはrd.d更新プログラムのためのパラメータを提供することを意図した特別にフォーマットされたコメントを含むかもしれません。テンプレートがない場合は、テンプレートとして使用できる簡単なスクリプトがあるはずです。

一部のディストリビューションでは、初期化を実行するための代替方法に移行しています。ディストリビューションのドキュメントを確認してください。

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