Установка владельца файла, созданного перенаправлением вывода 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, group root. Я бы ожидал, что они принадлежат пользователю, которого я установил с помощью -chuid, потому что из manpage все после - передается без изменений.

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

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

9 ответов

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как 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
2
ответ дан 25 May 2018 в 22:02

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как 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
2
ответ дан 25 July 2018 в 22:12

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как 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
2
ответ дан 26 July 2018 в 19:36

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как 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
2
ответ дан 2 August 2018 в 03:40

Перенаправления не являются частью аргументов командной строки. Они обрабатываются отдельно оболочкой, которая в вашем случае выполняется как 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
2
ответ дан 4 August 2018 в 19:44

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

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

  1. Среда запускает-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 & gt; gt;  logs / solr.log  
2
ответ дан 6 August 2018 в 03:48

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

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

  1. Среда запускает-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 & gt; gt;  logs / solr.log  
2
ответ дан 7 August 2018 в 21:44

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

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

  1. Среда запускает-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 & gt; gt;  logs / solr.log  
2
ответ дан 10 August 2018 в 09:57

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

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

  1. Среда запускает-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 & gt; gt;  logs / solr.log  
2
ответ дан 13 August 2018 в 16:16

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

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