2016-10-10 26 views
2

私は現在、Ubuntuサーバの電源が入ったときにLuigidを起動しようとしていますが、rc.local、cronjob(@reboot)、upstart、systemd働くこと。起動時にスクリプトが実行されていない、systemd ubuntu

手動で実行するとコマンドがうまく動作することを指摘しておきますが、起動時に実行するだけです。

sudo crontab -e 

を使用し

クロン - この時点で、私は本当に私が試したものの一部であるので、ここで私はそれが仕事を得る方法任意の懸念を持っていませんそして

@reboot luigid --background --logdir /home/myuser/luigilog 

にsystemdに入った:

私は次の内容のluigidと呼ばれるの/ usr/binにスクリプトを持って、それが実行可能としてマークされ、私は適切な終了コードを恐れてし、「出口0」なしでそれを試してみましたが必要になることがあります -

#!/bin/sh 
exec luigid --background --logdir /home/myuser/luigilog 
私はフォーク(とサービスの両方にとlugidコマンド、ワンショットと同じくらい簡単にpidファイルを指定して試してみました

[Unit] 
Description=Luigid Service 

[Service] 
Type=forking 
ExecStart=/usr/bin/luigid 

[Install] 
WantedBy=multi-user.target 

-

とluigid.serviceと呼ばれるの/ etc/systemdに/システム/でサービスファイル運がないタイプ。

私が使用してサービスを有効にしている -

systemctl enable luigid.service 

systemctl status luigid.service

を使用してステータスをチェックすること

luigid.service - Luigid Service 
    Loaded: loaded (/etc/systemd/system/luigid.service; enabled; vendor preset: enabled) 
    Active: failed (Result: timeout) since Mon 2016-10-10 15:18:00 UTC; 18min ago 

Oct 10 15:16:29 Analytics systemd[1]: Starting Luigid Service... 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Start operation timed out. Terminating. 
Oct 10 15:18:00 Analytics systemd[1]: Failed to start Luigid Service. 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Unit entered failed state. 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Failed with result 'timeout'. 

あり必要を示したので、それがサービスを開始しようと表示されます私は行方不明です、それは本当にcですスタートアップ時に実行するコマンドを取得するために、これは難しくないでしょう!

答えて

3

起動オプションの確認:サービスが後でクラッシュするとrc.localとcron @rebootのどちらも役立ちませんので、理想的ではありません。あなたはシステムベースのシステムを持っているようだから、Upstartは本当にオプションではありません。 systemdは、プロセスを開始するだけでなく、クラッシュした場合に再起動するため、重点を置くのに適しています。

Type=の正しいオプションがこのサービスのためにどのようなものかわかりませんが、問題はありません。 man systemd.serviceType=のドキュメントを調べて、どちらが正しいかを判断してください。

ラッパースクリプトは不要です。私も--backgroundオプションを削除し、その組み合わせを試していない場合はsimpleType=を設定しようとするだろう

ExecStart=/usr/bin/luigid --background --logdir /home/myuser/luigilog 

:あなたはこのようExecStart=ラインを持つことができるはずです。

起動できない場合は、起動していない理由をより詳細に記録するようにデーモンを取得してください。ExecStart=行の先頭に/usr/bin/straceを追加すると、システムコールの詳細なログが取得されます。起動中にバイナリが作成されています。最後のいくつかの呼び出しの1つが、それがぶら下がっている場所を指すことができます。

+2

ブリリアント - 助けてくれてありがとう。 最終的な解決策は、Type = Simpleを使用し、 - backgroundフラグを削除し、サービスを実行するユーザーを指定することでした。 –

関連する問題