2016-07-07 7 views
1

に失敗:私はここで間違ってやっているかわからないんだけどにsystemdサービス私は起動時に実行するようにnodejsサーバーを取得しようとしているので、私は次のようにsystemdユニットファイル作成スタートアップ

[Unit] 
Description=TI SensorTag Communicator 
After=network.target 

[Service] 
ExecStart=/usr/bin/node /home/pi/sensortag-comm/sensortag.js 
User=root 

[Install] 
WantedBy=multi-user.target 

を。ロギングが発生しないので、nodejsスクリプトが起動する前に失敗するようです。私のスクリプトはmysql 5.5に依存しています(これは私が問題に取り組んでいるところです)。任意の洞察力、あるいは異なる解決策が評価されます。

また、システムにログインすると、正常に動作します。

更新

サービスが有効になっている、とjournalctlを通じてログインしています。 7/11/16の結果を更新します。

なぜ初めて動作しなかったのか分かりませんが、journalctlのチェックでMySQLが開始していなかった問題は100%でした。私はもう一度After=MySQL.serviceに変更し、それは完全に働いた!

答えて

2

journalctlの出力にサービスがないと、サービスがが有効になっていない可能性があります。が起動時に起動します。

次の起動テストの前にsystemctl enable my-unit-nameを実行してください。

また、あなたはMySQLが稼働していることに依存しているので、それをAfter=mysql.serviceのように宣言する必要があります。正確なサービス名は、Linuxディストリビューションに依存する場合があります。

User=rootを追加すると、システム単位がデフォルトでrootによって実行されるため、何も追加しません。

「失敗する」と言ったときは、起動時に失敗したのか、systemctl start my-unit-nameで実行したテストで失敗したのかを指定しませんでした。

サービスを開始すると、journalctl -u my-unit.name.serviceを実行するとログが記録されるはずです。

ユニットファイルにStandardOutput=journalを追加して、実行中のサービスからの出力を確実にキャプチャすることもできます。

+0

申し訳ありません申し訳ありませんが、サービスが有効になっており、起動時に起動しようとしています。私は月曜日までマシンにアクセスすることができず、 'journalctl -u sensortag.service'の結果で質問を更新します。注意すべき点として、mysql 5.5はsystemdの代わりにsystemvを使用しています(マシンはラズベリーパイですが、バックポートを設定する気にはなりません)ので、 'After = mysql.service'を試してみても問題は解決していないようです問題は他の場所です。これまでの助けをありがとう。 – phelpsiv

関連する問題