У меня есть скрипт 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 не работает.Что происходит?