web-dev-qa-db-ja.com

アップスタートスクリプトが起動しない

Ubuntu 10.04

このスタートアップスクリプトを作成しました(/ etc/init/pure-ftpd.conf):

# pure-ftpd - FTP server

description "Pure-FTPd server"

start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
console output

pre-start script
    test -x /usr/local/sbin/pure-ftpd || { stop; exit 0; }
end script

exec /usr/local/sbin/pure-ftpd --maxclientsnumber 2 --maxclientsperip 10 --prohibitdotfileswrite --prohibitdotfilesread --noanonymous --chrooteveryone --dontresolve --nochmod --pidfile /var/run/pure-ftpd.pid

しかし...

# start pure-ftpd
start: Unknown job: pure-ftpd

そして

# service pure-ftpd start
start: Unknown job: pure-ftpd


どうしたの?
さらに何かする必要がありますか?
/etc/init.dにも1つのスクリプトを作成する必要がありますか?

33
Juan Simón

通常、.confファイルにエラーがあることを意味します。たとえば、pidスタンザが10.04でサポートされているかどうかわかりません。stopはスクリプトなどで使用できません。

ファイルを最初から(startstopなどのみで)始めてから、さらに行を追加し、start pure-ftpdでテストして、ゆっくりとビルドしてみます。

例えば:

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5

# start pure-ftpd
pure-ftpd start/running

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid

# start pure-ftpd
start: Unknown job: pure-ftpd
25
arrange

init-checkconfを実行して構文を確認することもできます

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok
46

まず、ジョブが実際に起動することがわかっていることを確認できます。

Sudo initctl list | grep your_job_name

...ここでyour_job_nameは、.conf拡張子を除いたupstartスクリプトの名前です。

見つからない場合は、設定をリロードしてから再確認してください:

Sudo initctl reload-configuration

# re-check
Sudo initctl list | grep your_job_name

その後、もう一度ジョブを開始してください:

Sudo start your_job_name

以前に/var/log/daemon.logまたは/var/log/syslogでログを取得していなかった場合は、いくつかのログを取得できます。

26
Mark Stosberg

コマンドを実行すると、ジョブファイルの構文に最も関連するリファレンスを利用できます。

man 5 init

システム上で。 Ubuntu 10.04の場合、前の回答で見つけたように、pidファイルの構文は正しくありません。

「不明なジョブ」エラーが戻った場合はいつでも、ログ(11.04以前、/ var/log/daemon.log、11.04以降)をチェックすることをお勧めします。すべてが/ var/log/syslogに記録されます

次のようなエラーが表示される場合があります。

init: /etc/init/test.conf:2: Unknown stanza
6
SpamapS

とにかく私は同じ問題を抱えていたのでここにいますが、私の構文は100%正しかったです。

いくつかのデバッグの後、この「不明なジョブ」エラーを引き起こす可能性のある別の問題を発見しました。

pstartsinotifyを使用して.confファイルの変更と自動インストールジョブを監視します。これは非常にクールです(このために必要なものはありませんupdate.rcのようなupstart!)が、FTP/SCP GUIプログラムを使用してリモートサーバーの構成をアップロードおよび編集する場合、完璧ではない可能性があります。その方法でファイルを編集すると、upstartによってサイレントアンインストールされます。

修正するには、単にそれを行います(それは私を救った)

touch /etc/init/*

すべてのupstart confを更新するためにinotifyイベントを生成します。

3

Ubuntu 14.04 Dockerコンテナでも同じ問題が発生しました。結局のところ、Docker用のUbuntu 14.04イメージ(他のイメージではない場合)は、完全な仮想マシンと同じようにUpstartをサポートしていません。

この質問に答えるために、サービスが開始されない理由は、initctlが実際のUpstartプログラムではないためです。これは/ bin/trueにマップされます。

Ubuntu 14.04 DockerコンテナとVagrant、およびDigitalOceanドロップレットで次を実行することを確認するには

$ ls -al /sbin/initctl

Dockerと他のinitctlは同じではないことがわかります。

あなたの理解を促進するリンク.. https://github.com/docker/docker/issues/1024

2
Johnathan J.