У меня есть следующая строка в 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, group root. Я бы ожидал, что они принадлежат пользователю, которого я установил с помощью -chuid, потому что из manpage все после - передается без изменений.
Мой вопрос в том, что все перенаправляются от start-stop-daemon принадлежит root, и есть ли способ изменить это?
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
Среда запускает start-stop-daemon и перенаправляет свой вывод на solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить ее вручную, без перенаправления). Команда 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
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
Среда запускает start-stop-daemon и перенаправляет свой вывод на solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить ее вручную, без перенаправления). Команда 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
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
Среда запускает start-stop-daemon и перенаправляет свой вывод на solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить ее вручную, без перенаправления). Команда 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
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
Среда запускает start-stop-daemon и перенаправляет свой вывод на solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить ее вручную, без перенаправления). Команда 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
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
Среда запускает start-stop-daemon и перенаправляет свой вывод на solr.log. Файл будет пустым, потому что эта команда ничего не выводит (просто попробуйте запустить ее вручную, без перенаправления). Команда 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
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
/ usr / bin / java -jar start.jar
. Обратите внимание, что там нет перенаправления вывода, но процесс разветвляется в фоновом режиме, поэтому вывод заканчивается на /dev/null.Другими словами, демон должен либо принять аргумент файла журнала, или вам нужно создать сценарий оболочки, который будет обрабатывать перенаправление. Это может выглядеть следующим образом:
# / bin / sh cd / home / phuihock / src / proj / solr exec / usr / bin / java -jar start.jar & gt; gt; logs / solr.log
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
/ usr / bin / java -jar start.jar
. Обратите внимание, что там нет перенаправления вывода, но процесс разветвляется в фоновом режиме, поэтому вывод заканчивается на /dev/null.Другими словами, демон должен либо принять аргумент файла журнала, или вам нужно создать сценарий оболочки, который будет обрабатывать перенаправление. Это может выглядеть следующим образом:
# / bin / sh cd / home / phuihock / src / proj / solr exec / usr / bin / java -jar start.jar & gt; gt; logs / solr.log
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
/ usr / bin / java -jar start.jar
. Обратите внимание, что там нет перенаправления вывода, но процесс разветвляется в фоновом режиме, поэтому вывод заканчивается на /dev/null.Другими словами, демон должен либо принять аргумент файла журнала, или вам нужно создать сценарий оболочки, который будет обрабатывать перенаправление. Это может выглядеть следующим образом:
# / bin / sh cd / home / phuihock / src / proj / solr exec / usr / bin / java -jar start.jar & gt; gt; logs / solr.log
Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как root. Но даже если разрешения были правильными, эта команда не приведет к добавлению вывода демона в файл журнала.
Для иллюстрации это то, что на самом деле происходит:
/ usr / bin / java -jar start.jar
. Обратите внимание, что там нет перенаправления вывода, но процесс разветвляется в фоновом режиме, поэтому вывод заканчивается на /dev/null.Другими словами, демон должен либо принять аргумент файла журнала, или вам нужно создать сценарий оболочки, который будет обрабатывать перенаправление. Это может выглядеть следующим образом:
# / bin / sh cd / home / phuihock / src / proj / solr exec / usr / bin / java -jar start.jar & gt; gt; logs / solr.log