我有一个node.js脚本,需要在启动时启动 并 在www-data用户下运行。在开发期间,我始终使用以下命令启动脚本:
su www-data -c 'node /var/www/php-jobs/manager.js
我确切地看到了发生了什么,manager.js现在运行良好。搜索所以我发现我不得不把它放在我的/etc/rc.local。另外,我学会了将输出指向日志文件,并将追加2>&1到“将stderr重定向到stdout”,它应该是守护程序,因此最后一个字符是&。
/etc/rc.local
2>&1
&
最后,我的/etc/rc.local样子是这样的:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. su www-data -c 'node /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2>&1 &' exit 0
如果我自己运行此代码(sudo /etc/rc.local):是的,它有效!但是,如果执行重新引导,则没有任何node进程在运行,该进程/var/log/php- jobs.log不存在,因此manager.js无法正常工作。怎么了?
sudo /etc/rc.local
node
/var/log/php- jobs.log
我最终遇到了upstart,效果很好。