Puncte:0

Ubuntu Se luptă să ruleze Scriptul Python la pornire

drapel in

Încerc să rulez două scripturi într-un proiect Python la pornire în Ubuntu, dar continuă să aibă probleme. Am un proiect Python ca următorul:

  • pyharm
    • venv
    • data.txt
    • globalfunctions.py
    • internet.txt
    • internetdate.txt
    • internettimelog.txt
    • internettracker.py
    • poweroutages.txt
    • poweroutagetracker.py
    • timelog.txt

Calea proiectului este /home/connor/Documents/Pycharm, IDE-ul fiind un mediu virtual al Python 3.8.10

Și cele două fișiere pe care încerc să le rulez sunt internettracker.py și poweroutagetracker.py. Cele două coduri sunt următoarele:

internettracker.py

cereri de import
timpul de import
import globalfunctions ca gf

url = „http://www.kite.com”
timeout = 5


def ping_internet():
    încerca:
        cerere = requests.get(url, timeout=timeout)
        returnează Adevărat
    cu excepția (requests.ConnectionError, requests.Timeout) ca excepție:
        return False


gf.log_today(additional="internet")

în timp ce este adevărat:

    internet_connected = ping_internet()

    dacă internet_connected:
        datestring, timenumber = gf.get_log(additional="internet")
        curtime, astăzi = gf.get_today()

        dacă abs(curtime - număr de timp) > 35:
            gf.report_data("internet.txt", "Intreruperea internetului de la [" + șir de date + "] la [" + str(azi) + "]")
            print("Oprire Internet detectată")

        gf.log_today(additional="internet")
        timp.somn (30)
    altceva:
        timp.somn(15)

poweroutagetracker.py

timpul de import
de la datetime import datetime
import globalfunctions ca gf

în timp ce este adevărat:
    șir de dată, număr de timp = gf.get_log()
    curtime, astăzi = gf.get_today()

    dacă abs(curtime - număr de timp) > 5:
        gf.report_data("poweroutages.txt", "Pane de curent de la [" + șir de date + "] la [" + str(azi) + "]")
        print(„S-a detectat întrerupere de curent”)


    timp.somn(5)
    gf.log_today()

Fișier suport cu funcții globalfunctions.py

timpul de import
de la datetime import datetime

def get_today():
    return time.time(), datetime.today()

def log_today(additional=""):
    curtime, azi = get_today()

    datefile = open(additional+"date.txt", "w")
    datefile.write(str(azi))
    datefile.close()

    timefile = open(additional+"timelog.txt", "w")
    timefile.write(str(curtime))
    timefile.close()

def get_log(additional=""):
    datefile = open(additional+"date.txt", "r")
    datestring = datefile.readline()

    timefile = open(additional+"timelog.txt", "r")
    timenumber = float(timefile.readline())

    returnează șirul de dată, numărul de timp

def raport_date(nume fișier, text):
    curtime, azi = get_today()
    outfile = open(nume fișier, „a+”)
    outfile.write(str(azi) + " | " + text + "\n")
    outfile.close()

Am incercat sa urmez instructiunile de la acest fir dar nu pare să funcționeze. Am făcut un .service cu următoarele:

[Unitate]
Descriere=Python Internet Watcher

[Serviciu]
Tip=simplu
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=./internettracker.py


[Instalare]
WantedBy=multi-user.target

Acest fișier a fost mutat în /lib/systemd/system/ și până acum nu am văzut nimic rulând la pornire.

EODCraft Staff avatar
drapel cn
Există vreo eroare raportată în jurnal? Vă rugăm să adăugați la postare.
user535733 avatar
drapel cn
Văd declarații „print” în scripturile tale. Deoarece systemd rulează fără cap, acestea nu vor fi imprimate pe ecran. Luați în considerare, în schimb, să scrieți rezultatul într-un fișier, apoi utilizați oricare dintre mai multe instrumente pentru a citi acea ieșire odată ce v-ați conectat.
Puncte:1
drapel in

Am gasit o solutie la problema. Am aflat că puteți activa mediul virtual pentru proiect și apoi porniți programul în interiorul mediului virtual.

În proiect, venv poate fi activat prin [project_path]/venv/bin/python

Iată modificările pentru soluție:

[Unitate]
Descriere=Python Internet Watcher
După=network-online.target

[Serviciu]
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=/home/connor/Documents/Pycharm/venv/bin/python internettracker.py start
Restart=intotdeauna
RestartSec=15s
KillMode=proces
TimeoutSec=infinit
Utilizator=connor
Group=connor

[Instalare]
WantedBy=multi-user.target

Linie de comanda piton

bac0n avatar
drapel cn
Directorul de lucru al unui .service este același cu directorul rădăcină de sistem `/` în care a început managerul de servicii și `~` pentru unitățile .service ale utilizatorului.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.