systemd ведение журнала stdout для длинных строк

Ваш скрипт Python печатает «hello world», затем Python понимает, что достиг конца вашего скрипта, и прекращает выполнение.

Что вы хотите, чтобы systemd делал?

попробуйте такой простой скрипт sh:

#!/bin/sh touch /tmp/myfile$$.txt echo /tmp/myfile$$.txt tail -f /tmp/myfile$$.txt

Вы получаете имя <file>в сервисном статусе.

Затем в своем терминале просто введите в него какой-нибудь текст:echo "Hello World" >> <file>и проверьте сервис.

Служба, которая зацикливается и печатает повторно, заполнит ваш терминал... здесь вы читаете файл и можете в любой момент передать ему какой-нибудь текст. При каждом запуске службы создается новый файл, $$— это PID, затем в качестве упражнения удалите файл /tmp/myfile$$.txtпри остановке службы;-)

Ключевое слово для упражнения:trap— в одну сторону ;-)

Делайте вещи простыми, учитесь, а затем добавляйте к этому. Обратите внимание, что python также может реагировать на сигналы. Я выбрал ш, потому что он проще... для начала...

6
12.11.2016, 13:55
1 ответ

Начиная с systemd v235, в systemd есть директива LineMax=для journald.conf, которая по умолчанию установлена ​​на 48 КБ. Таким образом, ваш первый вариант — установить большее значение, если вы хотите поддерживать действительно длинные строки в своих журналах.

Во-вторых, если вы используете выходной формат, например json(journalctl -o json), вы можете увидеть, был ли вставлен разрыв строки. Он появится в JSON следующим образом:

  _LINE_BREAK: "line-max"

Если вы столкнетесь с этим, вы знаете, что следующая запись является продолжением этой строки. Для получения дополнительной информации об этой функции вы можете увидеть этот git commit:

https://github.com/systemd/systemd/commit/ec20fe5ffb8a00469bab209fff6c069bb93c6db2

2
04.11.2020, 20:31

Теги

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