Điểm:0

Ubuntu Đấu tranh để chạy Python Script khi khởi động

lá cờ in

Tôi đang cố chạy hai tập lệnh trong một dự án python khi khởi động trong Ubuntu nhưng nó vẫn gặp sự cố. Tôi có một dự án Python như sau:

  • pycharm
    • venv
    • date.txt
    • globalfunctions.py
    • internet.txt
    • internetdate.txt
    • internettimelog.txt
    • internettracker.py
    • poweroutages.txt
    • poweroutagetracker.py
    • timelog.txt

Đường dẫn dự án là /home/connor/Documents/Pycharm, với IDE là môi trường ảo của Python 3.8.10

Và hai tệp tôi đang cố chạy là internettracker.py và poweroutagetracker.py. Hai mã như sau:

internettracker.py

yêu cầu nhập khẩu
thời gian nhập khẩu
nhập các chức năng toàn cầu dưới dạng gf

url = "http://www.kite.com"
thời gian chờ = 5


def ping_internet():
    cố gắng:
        yêu cầu = request.get(url, timeout=timeout)
        trả về Đúng
    ngoại trừ (request.ConnectionError, request.Timeout) là ngoại lệ:
        trả về Sai


gf.log_today(additional="internet")

trong khi Đúng:

    internet_connected = ping_internet()

    nếu internet_connected:
        chuỗi ngày, số thời gian = gf.get_log(additional="internet")
        curtime, hôm nay = gf.get_today()

        nếu abs(curtime - timenumber) > 35:
            gf.report_data("internet.txt", "Internet ngừng hoạt động từ [" + chuỗi dữ liệu + "] đến [" + str(hôm nay) + "]")
            print("Đã phát hiện mất kết nối Internet")

        gf.log_today(additional="internet")
        time.sleep(30)
    khác:
        time.sleep(15)

poweroutagetracker.py

thời gian nhập khẩu
từ datetime nhập datetime
nhập các chức năng toàn cầu dưới dạng gf

trong khi Đúng:
    chuỗi ngày, số thời gian = gf.get_log()
    curtime, hôm nay = gf.get_today()

    nếu abs(curtime - timenumber) > 5:
        gf.report_data("poweroutages.txt", "Mất điện từ [" + chuỗi dữ liệu + "] đến [" + str(hôm nay) + "]")
        print("Đã phát hiện mất điện")


    time.sleep(5)
    gf.log_today()

Tập tin hỗ trợ với các chức năng globalfunctions.py

thời gian nhập khẩu
từ datetime nhập datetime

chắc chắn get_today():
    trả về time.time(), datetime.today()

def log_today(bổ sung=""):
    curtime, hôm nay = get_today()

    datefile = open(additional+"date.txt", "w")
    datefile.write(str(hôm nay))
    datefile.close()

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

def get_log(bổ sung=""):
    datefile = open(additional+"date.txt", "r")
    chuỗi ngày = datefile.readline()

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

    trả về chuỗi ngày, số thời gian

def report_data(tên tệp, văn bản):
    curtime, hôm nay = get_today()
    outfile = open(filename, "a+")
    outfile.write(str(hôm nay) + " | " + văn bản + "\n")
    outfile.close()

Tôi đã thử làm theo hướng dẫn từ chủ đề này nhưng nó dường như không hoạt động. Tôi đã tạo một .service như sau:

[Đơn vị]
Mô tả=Trình theo dõi Internet Python

[Dịch vụ]
Loại = đơn giản
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=./internettracker.py


[Cài đặt]
WantedBy=multi-user.target

Tệp này đã được chuyển vào /lib/systemd/system/ và cho đến nay tôi không thấy gì chạy khi khởi động.

EODCraft Staff avatar
lá cờ cn
Có bất kỳ lỗi nào được báo cáo trong Nhật ký không? Vui lòng thêm vào bài đăng.
user535733 avatar
lá cờ cn
Tôi thấy câu lệnh "in" trong tập lệnh của bạn. Vì systemd chạy không đầu nên chúng sẽ không được in ra màn hình. Thay vào đó, hãy xem xét ghi đầu ra của bạn vào một tệp, sau đó sử dụng bất kỳ công cụ nào trong số một số công cụ để đọc đầu ra đó sau khi bạn đăng nhập.
Điểm:1
lá cờ in

Tôi đã tìm thấy một giải pháp cho vấn đề. Tôi phát hiện ra rằng bạn có thể kích hoạt môi trường ảo cho dự án và sau đó khởi động chương trình bên trong môi trường ảo.

Trong dự án, venv có thể được kích hoạt thông qua [project_path]/venv/bin/python

Dưới đây là những thay đổi cho giải pháp:

[Đơn vị]
Mô tả=Trình theo dõi Internet Python
Sau=mạng-online.đích

[Dịch vụ]
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=/home/connor/Documents/Pycharm/venv/bin/python internettracker.py bắt đầu
Khởi động lại = luôn luôn
Khởi động lạiSec=15s
KillMode=tiến trình
Thời gian chờSec=vô cùng
Người dùng=connor
Nhóm=connor

[Cài đặt]
WantedBy=multi-user.target

dòng lệnh con trăn

bac0n avatar
lá cờ cn
Thư mục làm việc của .service giống với thư mục gốc của hệ thống `/` nơi trình quản lý dịch vụ bắt đầu và `~` đối với các đơn vị .service của người dùng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.