Я новичок как в ubuntu, так и в написании сценариев на python. Я написал скрипт на python, который при запуске из оболочки отслеживает некоторые события и записывает эти события в оболочку. Все это работает нормально.
Я хотел бы, чтобы сценарий python запускался как служба при загрузке и использовал systemd для запуска моего .sh файла. Теперь, после загрузки, если я проверю статус моей службы, она говорит, что запущена, но не пишет в оболочку.
Я искал в гугле, как получить видимую обратную связь со скриптом, но безрезультатно. Кто-нибудь может направить меня в нужном направлении?
Спасибо всем. Счастливых праздников.
Вы должны указать системе, какой именно $DISPLAY должен использовать сценарий.
Поскольку $DISPLAY не может быть активным при загрузке (перед входом в систему), у вас, похоже, проблема с дизайном.
Большинство людей используют свои скрипты для записи в файл, или в журнал, или в какой-либо другой сервис, а затем извлекают значения, используя другой процесс, у которого есть $DISPLAY.
Не совсем понял, зачем нужен файл .sh
... Если нужно запустить Python-скрипт и получить логи, то обычно это делается через журнальный файл. Я бы сделал так:
Создать скрипт в домашней папке:
touch ~/example.py
nano ~/example.py
В example.py:
from datetime import datetime
import time
while True:
time.sleep(1)
mytime = datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
with open("example.log", "a") as myfile:
myfile.write(mytime + "\n")
Далее создал бы сервис:
sudo chmod +x ~/example.py
sudo touch /etc/systemd/system/example.service
sudo nano /etc/systemd/system/example.service
В файле сервиса:
[Unit]
Description=Example
[Service]
WorkingDirectory=/home/user/
ExecStart=/usr/bin/python3 /home/user/example.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезагрузка сервисов:
sudo systemctl daemon-reload
Затем вы можете использовать сервис:
sudo systemctl start example
sudo systemctl enable example
cat ~/example.log
Иногда вы можете использовать print("")
. Затем сервисные логи будут выдаваться командой: journalctl -u example -b
Вы можете использовать мое приложение для создания сервисов в Ubuntu, где этот алгоритм абстрагирован от пользователя в пользу упрощения: Служба Linux
И вас с праздником