daemontoolsを持つNode.jsサーバーは再起動し続けます。

daemontoolsを持つNode.jsサーバーは再起動し続けます。

Debian(Jessie)でdaemontoolsを使用してNode.jsサーバーを実行しようとしていますが、実行中のスクリプトはsupervise再起動し続けます。これは私が使用している実行スクリプトです(/etc/service/node/run)。

#!/bin/bash
exec setuidgid nodeuser bash -c './node'

スクリプトはuserとして次のスクリプトを実行しますnodeuser。ここでNVMをロードしてコードディレクトリに変更して、Node.jsサーバーを実行します。

#!/bin/bash

# Load NVM because we are in a non-interactive shell
export NVM_DIR="/home/nodeuser/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

# Run server
cd /path/to/code
exec node server.js

スタートアップサービスを使用すると、sudo svc -u /etc/service/nodeプロセスは常に再起動され、ps faux次のプロセス階層が表示されます(階層の深さは常に変更されます)。

/bin/sh /usr/bin/svscanboot /etc/service/
 \_ svscan /etc/service
     \_ supervise node
         \_ /bin/bash ./node
             \_ /bin/bash ./node
                 \_ /bin/bash ./node
                     \_ /bin/bash ./node
                         \_ /bin/bash ./node
                         |   \_ /bin/bash ./node
                         |       \_ /bin/bash ./node
                         |       |   \_ /bin/bash ./node
                         |       |       \_ /bin/bash ./node
                         |       \_ /bin/bash ./node
                         |           \_ tail -n1
                         \_ /bin/bash ./node
                             \_ tail -n1

そこで何が起こったのか知っていますか?スクリプトを手動で実行すると、./runサーバーが期待どおりに起動し、コンソールに出力が表示されます。

編集する

サービスを再起動した後にのみ機能することがわかりました。 .itで再起動すると、sudo svc -du /etc/service/node上記のように動作します。

ベストアンサー1

そのスクリプトが間違っています。 daemontoolsシリーズのモットーは、実行されるプログラムが./runサービスプロセスでなければならないということです。それ自体、親、祖父母、または他の親戚ではありません。サービスは作成されずに実行されます。

最後の行の使用はexec正しい考えですが、次の明示的な使用のために壊れていましたbash -c。とにかく、./nodeスクリプトには#!/bin/bashスクリプトインタプリタがあり(おそらく)実行可能であるため、これは必要ありません。より良いもの

#!/bin/bash
setuidgid node user ./node 実行

これは確かにnosh(から同名のツールセット) またはexeclinebコマンドを実行するために重量級Bourne Againシェルは実際には必要ないため、スクリプトですsetuidgid。したがって:

#!/空/ノッシュ
setuidgid ノードユーザー
。 /節
または

#!/コマンド/execlineb -P
s6-setuidgid ノードユーザー
。 /節

その後、サービス管理者がサービスの終了に応答すると、svc -d正しい実際のサービスプロセスにシグナルを送信します。

追加読書

おすすめ記事