一尘不染

使用rc.local运行脚本:脚本有效,但在启动时不起作用

linux

我有一个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样子是这样的:

#!/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无法正常工作。怎么了?


阅读 801

收藏
2020-06-02

共1个答案

一尘不染

我最终遇到upstart,效果很好。

2020-06-02