Systemd печатают журналы к внешнему файлу журнала

У меня есть следующий сценарий услуг Systemd для выполнения приложения начальной загрузки Spring -

[Unit]
Description=Upstart for Security
After=network.target network-online.target
Wants=network-online.target

[Service]
User=root
WorkingDirectory=/home/ubuntu/security
ExecStart=/usr/bin/java -classpath java -Dspring.profiles.active=stage -jar /home/ubuntu/security/security-0.0.1-SNAPSHOT.jar > /home/ubuntu/security/security.log 2>&1
SuccessExitStatus=143
Restart=always
RestartSec=120s

[Install]
WantedBy=multi-user.target


Я сохраняю сценарий в следующем месте -

 /etc/systemd/system


Я выполнил следующие команды для запущения systemd сервисного скрипта -

1. sudo systemctl enable security.service -or- sudo systemctl daemon-reload
2. sudo systemctl status security.service 
3. sudo systemctl start security.service


Для проверки журналов я запускаю команду -

journalctl -u security.service

и используйте SHIFT+G прокручивать к eof

Я могу проверить журналы вышеупомянутые шаги, но я хочу их во внешнем файле в месте/home/ubuntu/security как security.log
Как я могу достигнуть его? Какое изменение я вношу в своем systemd сценарии?

4
задан 27 April 2017 в 20:24

1 ответ

systemd уже предоставляет пользовательский журнал Вам по умолчанию в журнале systemd. Это автоматически перенаправляет и STDIN и STDOUT там любой, а также обрабатывающий рост файла журнала и вращение.

Просто упускают перенаправление файла журнала из Вашего ExecStart= строка. Для просмотра журналов, сгенерированных сервисом, используйте journalctl -u security.

См. man journald.conf для связанных параметров конфигурации и man journalctl для большего количества опций для просмотра и запросов данных логов.

документы в man systemd.service объясняют, что синтаксис перенаправления не поддерживается в ExecStart= строка:

Этот синтаксис предназначается, чтобы быть очень похожим для окружения синтаксиса, но только метасимволы и расширения, описанные в следующих параграфах, поняты. А именно, перенаправление с помощью "<"; "< <"; ">", и">>", использование каналов "|", запуская программы в фоновом режиме с помощью "&"; и другие элементы синтаксиса оболочки не поддерживаются.

4
ответ дан 28 April 2017 в 06:24

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

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