GNU/Linux >> Linux の 問題 >  >> Linux

Init.dスクリプトが起動時に実行されていませんか?

私のスクリプトは、Ubuntuのvagrantボックスで起動時に実行されていません。

私のスクリプトは次のようになります–

#!/bin/bash
# /etc/init.d/mailcatcher
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
mailcatcher --http-ip 192.168.50.10

ファイルに対する私の権限は次のようになります–

-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh

コマンドを実行します–

sudo update-rc.d "mailcatcher.sh" defaults

スクリプトを手動で実行すると、スクリプトが機能し、mailcatcherが起動します。コンピュータを再起動すると、mailcatcherデーモンが起動しません。何か足りないのですか?

承認された回答:

そしてUbuntuの答えです。

これはUbuntuLinuxの質問であり、バージョン15がリリースされました。 Ubuntuの世界はsystemdになりました。しかし、バージョン15より前でさえ、Ubuntuの世界は新興国でした。 System 5 rcを書く理由は本当にありません スクリプト;そして確かに開始する正当な理由はありません そこから。

upstartとsystemdの両方がすべての「サービス制御」を実行します。あなたがする必要があるのはサービスを説明するだけです 。

systemd

/etc/systemd/system/mailcatcher.serviceに配置されるsystemdサービスユニット 、は

[Unit]
Description=Ruby MailCatcher
Documentation=http://mailcatcher.me/

[Service]
# Ubuntu/Debian convention:
EnvironmentFile=-/etc/default/mailcatcher
Type=simple
ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

[Install]
WantedBy=multi-user.target

これにより、次のようなすべてのsystemdコントロールが自動的に取得されます。

  • systemctl enable mailcatcher.service 起動時にサービスが自動開始されるように設定します。
  • systemctl preset mailcatcher.service ローカルポリシーで許可されている場合は、起動時にサービスが自動開始されるように設定します。
  • systemctl start mailcatcher.service 手動でサービスを開始します。
  • systemctl status mailcatcher.service サービスステータスを確認します。

upstart

Upstartも同様であり、Fideloper LLCのupstartジョブファイルをこの質問に変更すると、/etc/init/mailcatcher.confにこれが与えられます。 :

description "Mailcatcher"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10

これにより、次のようなすべての起動コントロールが自動的に取得されます。

  • initctl start mailcatcher 手動でサービスを開始します。
  • initctl status mailcatcher サービスステータスを確認します。

ボーナスdaemontoolsセクション

キックのために、WWW検索を介してこれに到達するdaemontools-family-usingの人々の娯楽のために、そしてSystem 5 rcから始めないもう一つの理由を示すために スクリプト、noshツールセットのconvert-systemd-unitsを介してそのsystemdサービスユニットを実行しました 次のdaemontools-familyrunスクリプトを生成するコマンド:

#!/bin/nosh
#Run file generated from ./mailcatcher.service
#Ruby MailCatcher
chdir /
read-conf --oknofile /etc/default/mailcatcher
/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

実際、convert-systemd-units コマンドは、noshサービスバンドル全体を生成します ディレクトリ。依存関係と順序情報を指定するそのディレクトリを使用して、/var/sv/mailcatcherとしてインストールします。 nosh service-managerを備えたシステムで 次のようなすべてのnoshコントロールを取得します:

  • system-control enable mailcatcher.service 起動時にサービスが自動開始されるように設定します。
  • system-control start mailcatcher.service 手動でサービスを開始します。
  • system-control status mailcatcher.service サービスステータスを確認します。
  • system-control preset mailcatcher.service ローカル構成(systemdスタイルのプリセットまたは/etc/rc.conf{,.local}の場合、起動時にサービスが自動開始されるように設定します )許可します。
関連:Windows 8でハイブリッドブートを無効にしますか?

始めないでください System 5 rcを使用 ファイル。

SaltStack for System 5 rcで使用されるこのテンプレートを見てください スクリプト。シェルスクリプトコードの59行であるSaltStackのパラメーター化が削除されたとしても、そのほとんどは一般的な定型文であり、再発明して書き直す必要があります。また。そして、Celadaは、あなたがそれをひどく再発明した場所をすでに指摘しています。

systemdユニットファイルの長さは11行です。 upstartジョブファイルは8行です。 nosh run スクリプトは6です。そして、彼らはあなたのためにすべての開始/停止/ステータスの仕組みを行います。 System V rcから始めないでください 、特にUbuntuLinuxではそうではありません。

さらに読む

  • メールキャッチャーの設定 。 2014-10-21。ハッカーのためのサーバー。フィデロパーLLC。
  • ジェームスハントとクリントバイラム(2014)。 「ユーティリティ」。 Upstart Cookbook
  • ジョナサンデボインポラード(2014)。 実行スクリプトとサービスユニットを並べて表示します。 。頻繁に与えられる回答。

Linux
  1. utorrent起動スクリプト/起動時にutorrentを実行– Ubuntu 14.04 / 14.10

  2. シェルスクリプト:「ファイルが使用されていない場合」の状態?

  3. Linux OS サービス「scsi_reserve」

  1. Linux で Python スクリプトをサービスまたはデーモンのように実行する方法

  2. PHPスクリプトをデーモンプロセスとして実行

  3. サービスとしての Ruby スクリプト

  1. rc.local でスクリプトを実行します:スクリプトは機能しますが、起動時には機能しません

  2. initスクリプトで特定のユーザーとしてコマンドを実行する方法は?

  3. EC2 インスタンスの起動後に bash スクリプトを実行する