Рейтинг:0

Ubuntu изо всех сил пытается запустить скрипт Python при запуске

флаг in

Я пытаюсь запустить два скрипта в проекте Python при запуске в Ubuntu, но у него продолжают возникать проблемы. У меня есть проект Python, подобный следующему:

  • пичарм
    • Венв
    • дата.txt
    • глобальные функции.py
    • интернет.txt
    • интернетдата.txt
    • интернеттаймлог.txt
    • интернеттрекер.py
    • перебои с питанием.txt
    • poweroutagetracker.py
    • таймлог.txt

Путь к проекту — /home/connor/Documents/Pycharm, а IDE — виртуальная среда Python 3.8.10.

Я пытаюсь запустить два файла: internettracker.py и poweroutagetracker.py. Два кода следующие:

интернеттрекер.py

запросы на импорт
время импорта
импортировать глобальные функции как gf

URL-адрес = "http://www.kite.com"
время ожидания = 5


определение ping_internet():
    пытаться:
        запрос = запросы.получить (url, тайм-аут = тайм-аут)
        вернуть Истина
    кроме (requests.ConnectionError, request.Timeout) как исключение:
        вернуть ложь


gf.log_today(дополнительно="интернет")

пока верно:

    internet_connected = ping_internet()

    если интернет_подключен:
        строка даты, номер времени = gf.get_log(additional="internet")
        настоящее время, сегодня = gf.get_today()

        если абс (curtime - timenumber) > 35:
            gf.report_data("internet.txt", "Отключение Интернета с [" + строка даты + "] до [" + str(сегодня) + "]")
            print("Обнаружен сбой в сети")

        gf.log_today(дополнительно="интернет")
        время сна(30)
    еще:
        время сна(15)

poweroutagetracker.py

время импорта
из даты и времени импортировать дату и время
импортировать глобальные функции как gf

пока верно:
    строка даты, номер времени = gf.get_log()
    настоящее время, сегодня = gf.get_today()

    если абс (curtime - timenumber)> 5:
        gf.report_data("poweroutages.txt", "Отключение электроэнергии с [" + строка даты + "] до [" + str(сегодня) + "]")
        print("Обнаружено отключение питания")


    время сна(5)
    gf.log_today()

Вспомогательный файл с функциями глобальные функции.py

время импорта
из даты и времени импортировать дату и время

защита get_today():
    вернуть time.time(), datetime.today()

def log_today (дополнительно = ""):
    настоящее время, сегодня = get_today()

    файл даты = открыть (дополнительный + "date.txt", "w")
    datefile.write (ул (сегодня))
    файл даты.close()

    файл времени = открыть (дополнительно + "timelog.txt", "w")
    timefile.write(str(curtime))
    файл времени.close()

деф get_log (дополнительный = ""):
    файл даты = открыть (дополнительно + "date.txt", "r")
    строка даты = файл даты.readline()

    файл времени = открыть (дополнительно + "timelog.txt", "r")
    номер_времени = число с плавающей запятой (timefile.readline())

    вернуть строку даты, число времени

def report_data (имя файла, текст):
    настоящее время, сегодня = get_today()
    выходной файл = открыть (имя файла, "а+")
    outfile.write(str(сегодня) + " | " + текст + "\n")
    выходной файл.close()

Я пытался следовать инструкциям от эта тема но, похоже, это не работает. Я сделал .service со следующим:

[Ед. изм]
Description=Python Internet Watcher

[Оказание услуг]
Тип=простой
WorkingDirectory=/home/connor/Документы/Pycharm
ExecStart=./internettracker.py


[Установить]
WantedBy=многопользовательская.цель

Этот файл был перемещен в /lib/systemd/system/, и до сих пор я не видел, чтобы при запуске ничего не запускалось.

EODCraft Staff avatar
флаг cn
Сообщается ли об ошибке в журнале? Пожалуйста, добавьте к сообщению.
user535733 avatar
флаг cn
Я вижу операторы «печати» в ваших скриптах. Поскольку systemd работает без головы, они не будут выводиться на экран. Вместо этого рассмотрите возможность записи вывода в файл, а затем используйте любой из нескольких инструментов для чтения этого вывода после входа в систему.
Рейтинг:1
флаг in

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

В проекте venv можно активировать через [project_path]/venv/bin/python

Вот изменения для решения:

[Ед. изм]
Description=Python Internet Watcher
After=network-online.target

[Оказание услуг]
WorkingDirectory=/home/connor/Документы/Pycharm
ExecStart=/home/connor/Documents/Pycharm/venv/bin/python internettracker.py start
Перезапустить = всегда
Рестартсек=15с
KillMode=процесс
TimeoutSec=бесконечность
Пользователь=Коннор
Группа=Коннор

[Установить]
WantedBy=многопользовательская.цель

командная строка питон

bac0n avatar
флаг cn
Рабочий каталог .service совпадает с системным корневым каталогом `/`, в котором запущен менеджер служб, и `~` для пользовательских единиц .service.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.