Установка владельца файла, созданного перенаправлением вывода start-stop-daemon

У меня есть следующая строка в do_start () моего пользовательского сценария инициализации, который запускает Java-приложение:

start-stop-daemon --background --start --quiet --oknodo --make-pidfile --pidfile $PIDFILE --chdir $SOLR_DIR --chuid $USER --exec $DAEMON -- \
$DAEMON_ARGS >>$LOG_DIR/$NAME.log 2>>$LOG_DIR/$NAME.err 

при расширении становится:

start-stop-daemon --background --start --quiet --oknodo --make-pidfile --pidfile /var/run/solr.pid 
--chdir /home/phuihock/src/proj/solr 
--chuid phuihock 
--exec /usr/bin/java 
-- -jar start.jar >>/home/phuihock/src/proj/logs/solr.log 2>>/home/phuihock/src/proj/logs/solr.err

Файлы журнала созданы принадлежат пользователю root, группе root. Я ожидаю, что они принадлежат пользователю, которого я установил с помощью --chuid, потому что с man-страницы все после - передается без изменений.

У меня вопрос: все ли перенаправления с start-stop-daemon принадлежат пользователю root, и есть ли способ изменить это?

4
задан 17 April 2011 в 22:58

1 ответ

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае запускается от имени пользователя root. Но даже если разрешения были правильными, эта команда не привела бы к добавлению вывода демона в файл журнала.

Для иллюстрации, это то, что на самом деле происходит:

  1. Оболочка выполняет start-stop-daemon и перенаправляет свой вывод в solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить его вручную, без перенаправления).
  2. Команда start-stop-daemon обрабатывает свои аргументы и в итоге вызывает /usr/bin/java -jar start.jar. Обратите внимание, что там нет перенаправления вывода, но процесс разветвляется в фоновом режиме, поэтому вывод заканчивается в /dev/null.

Другими словами, демон должен либо принять аргумент файла журнала, либо вам нужно создать скрипт-обертку, который будет обрабатывать перенаправление. Это может выглядеть следующим образом

#/bin/sh
cd /home/phuihock/src/proj/solr
exec /usr/bin/java -jar start.jar >> logs/solr.log
0
ответ дан 17 April 2011 в 22:58

Другие вопросы по тегам:

Похожие вопросы: