3

ノードアプリを存続させるために使用したい、永遠に奇妙な動作が発生しています。

lwoodとしてではなく、通常のユーザーとして永遠にプロセスを実行したいroot

rootモード内で永久に適切に実行する方法を知る必要がありますが、ユーザーとしてlwood. (たとえば、特殊なケースとして、upstart スクリプトが root として実行されるため、これが必要です。)

これらのコマンドは私の問題を示しています(私はUbuntu 12.04を$使用しており、通常のユーザーで#ルートです):

$ su
[type in su password]

# cd /home/lwood/myapp
# sudo -u lwood forever -a -l "/home/lwood/myapp/logfile.log" start app.js
info:    Forever processing file: app.js

# forever list    
info:    No forever processes running

# exit

$ forever list
info:    No forever processes running

したがって、永遠に正常に開始されましたが、lwood または root の下で実行されているプロセスはありません!

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

2

upstartを使用している場合は、これを試してください(upstartスクリプトに入れます)

exec su -s /bin/sh -c 'exec "$0" "$@"' ユーザー名 -- /usr/local/bin/forever ...

参照: https://superuser.com/questions/213416/running-upstart-jobs-as-unprivileged-users

于 2013-09-22T09:11:25.220 に答える
1

systemd (RHEL 7、CentOS 7、Debian、Ubuntu、Fedora など) を搭載したシステムでは、このスクリプトを /usr/lib/systemd/system/nodejs.service または同等のものとして使用できます (他の *.service ファイルを確認してください)。 :

[Unit]
Description=Node.js Application
After=postgresql.service network.target
Wants=postgresql.service

[Service]
ExecStart=/usr/bin/su - <user> -c '/usr/bin/npm start --prefix /path/to/app'
WorkingDirectory=/path/to/app
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target
于 2018-03-12T17:23:11.170 に答える
0

おそらく、別のユーザーで別のコンテキストとして実行されているためです。リストに sudo a swell を追加する必要があるかもしれません:

sudo -u lwood forever list
于 2013-09-22T05:05:33.430 に答える