У меня есть новомодный сценарий, который делает следующее
start on runlevel [2345]
stop on runlevel [06]
respawn
pre-start script
exec >/dev/kmsg 2>&1
REPO=git@github.com:blabla/bli
mkdir -p /var/log
mkdir -p /var/www
echo "Fetching app from $REPO"
girror $REPO /var/www
if [ -f /var/www/package.json ]; then
echo "Installing npm modules"
cd /var/www
npm install
fi
end script
post-stop script
exec >/dev/kmsg 2>&1
echo "stopped"
end script
script
exec >/dev/kmsg 2>&1
export NODE_ENV=production
export port=80
echo "Starting app.js on port 80"
cd /var/www
node app.js
end script
Я запускаю скрипт как корень. Файлы журнала приложения предполагают для движения в /var/log/syslog
и к rsyslog, но они не идут туда.
Я использую rsyslog для отправки журналов в удаленный сервер
Я вижу, что приложение регистрируется при выполнении dmesg | tail -f
Используя ядро 3.5.0-46
Этот сценарий работает над другой машиной с более старым ядром
Кто-либо знает, почему это не работает здесь?
Вы, вероятно, захотите взглянуть на это: http://www.rsyslog.com/doc/droppriv.html
Несмотря на то, что rsyslog запускается от имени пользователя root, вполне возможно, что он меняет своего пользователя внутри /etc/rsyslog.conf
.
Вы можете изменить привилегии rsyslog внутри своей конфигурации rsyslog.