systemd: Почему эта служба неактивна (мертва)?

Разве это не цель экспорта (встроенная функция) в bash? export FOO = bar См. справочные страницы для bash .

2
07.07.2017, 19:55
3 ответа

Он мертв, потому что сценарий достигает своей конечной точки и завершается. Почему один оператор printможет взорвать терминал? Демон обычно работает в цикле, который проверяет, наступило ли время выхода, и завершает работу, если это так (, или если он перехватывает сигнал от ядра ).

3
27.01.2020, 21:53

Ваш скрипт обычно запускается как служба, завершается довольно быстро (, так как есть только одна команда и в ней нет цикла while или чего-то подобного -ее выполнение )и поэтому служба завершается быстрее, чем вы может запросить его статус. Попробуйте добавить цикл (с тайм-аутом, чтобы не спамить ваши журналы ), чтобы иметь возможность видеть его активным:

while True:
    print('hello')
    time.sleep(2)

и убейте его через systemctl, как только вы увидите (сjournalctl -u test.service)достаточно.

5
27.01.2020, 21:53

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

1
27.01.2020, 21:53

Теги

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