Ваш скрипт 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 также может реагировать на сигналы. Я выбрал ш, потому что он проще... для начала...
Начиная с 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