このガイドに従って、ノードアプリケーションをサービスとして実行しようとしました。ただし、終了コード127で起動に失敗します。これを修正する方法はありますか?

これはジャーナルです。

sudo journalctl --follow -u serviceName -- Logs begin at Tue 2017-08-08 16:27:10 GMT. -- Aug 08 17:06:57 raspberrypi systemd[1]: Started serviceName. Aug 08 17:06:57 raspberrypi app.js[7234]: [46B blob data] Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service: main process exited, code=exited, status=127/n/a Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state. Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service holdoff time over, scheduling restart. Aug 08 17:06:57 raspberrypi systemd[1]: Stopping serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: Starting serviceName... Aug 08 17:06:57 raspberrypi systemd[1]: serviceName.service start request repeated too quickly, refusing to start. Aug 08 17:06:57 raspberrypi systemd[1]: Failed to start serviceName. Aug 08 17:06:57 raspberrypi systemd[1]: Unit serviceName.service entered failed state. 

これはserviceName.serviceです。

[Unit] Description=ServiceName After=network.target [Service] ExecStart=/home/pi/projects/ServiceName/app.js Restart=always User=root Group=root Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory=/home/pi/projects/ServiceName [Install] WantedBy=multi-user.target 

これは私のapp.jsの上部にあります。

#!/usr/bin/env node 

コメント

  • シェルから/home/pi/projects/ServiceName/app.jsを実行するとどうなりますか?
  • 完全に正常に動作します。 forever-serviceを使用しても正常に実行されます。
  • type nodeと?
  • 1。 node is /home/pi/.nvm/versions/node/v7.8.0/bin/node 2. Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 6166268 4446224 1383764 77% /

回答

ExecStart=/home/pi/projects/ServiceName/app.js 

これは、systemdapp.jsを直接実行するように指示しています。この.jsファイルは直接実行可能ですか?そうでない場合、シェルは終了コード127-「不明なコマンド」をスローします。

コメント

  • 質問でリンクしたガイドによると、 app.jsの上部にあるshebangは、ノードをインタープリターとして指定するため、実行可能にする必要があります。
  • @DopeGhotiが実行可能権限を参照していたと思います。で、" read-write-executable "ファイルごとに設定された権限。
  • "そうでない場合、シェルは終了コード127 "をスローします-127の正確な理由が何であれ、systemdはシェルを使用してサービスを開始しません。

回答

127はコマンドが見つかりません。

rootユーザーがにアクセスできることを確認してください。ノードバイナリelseは、ノードをインストールしたユーザーで次の行を変更します

User=root Group=root 

それ以外の場合はフォローしてみてください

[Unit] Description="ServiceName" After=network.target [Service] ExecStart=path_to_node/node /home/pi/projects/ServiceName/app.js Restart=always # Restart service after 10 seconds if node service crashes RestartSec=10 # Output to syslog StandardOutput=syslog StandardError=syslog #Change this to find app logs in /var/log/syslog SyslogIdentifier=nodejs-api # Followig will require if you are using the PORT or Node from Envirnoment Environment=NODE_ENV=production PORT=3000 [Install] WantedBy=multi-user.target 

サーバーマックが1回hineがアップしています&サーバーにアクセスできません。次のコマンドで/ var / log / syslogのログを確認してトラブルシューティングを行ってください

sudo grep "nodejs-api" /var/log/syslog 

起動時に開始: sudo systemctl enable rocketch

回答

デバッグするには、これを実行します(< >の部分を置き換えますsystemdユニットファイルの値を使用:

 sudo runuser -l <User> -g <Group> -c "cd <WorkingDirectory> && <PATH> <ExecStart>"  

問題は特定されたものですUserは、設定したPATH内のExecStartにアクセスできません。

まだ誰かが立ち往生している場合は、次のステップバイステップガイドを作成しました:デバッグシステム

回答

興味のある方は、この問題が発生し、すべてを太陽の下で試しましたが、最終的にはNからアップグレードしました。ノード12へのode6で問題が修正されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です