Score:0

Ubuntu ดิ้นรนเพื่อเรียกใช้ Python Script เมื่อเริ่มต้น

ธง in

ฉันกำลังพยายามเรียกใช้สองสคริปต์ในโครงการไพ ธ อนเมื่อเริ่มต้นใน Ubuntu แต่ก็ยังมีปัญหาอยู่ ฉันมีโครงการ Python ดังต่อไปนี้:

  • เสน่ห์
    • เวน
    • วันที่.txt
    • globalfunctions.py
    • อินเทอร์เน็ต. txt
    • internetdate.txt
    • internettimelog.txt
    • internettracker.py
    • poweroutages.txt
    • poweroutagetracker.py
    • timelog.txt

เส้นทางโครงการคือ /home/connor/Documents/Pycharm โดยที่ IDE เป็นสภาพแวดล้อมเสมือนจริงของ Python 3.8.10

และไฟล์สองไฟล์ที่ฉันพยายามเรียกใช้คือ internettracker.py และ poweroutagetracker.py รหัสทั้งสองมีดังต่อไปนี้:

internettracker.py

คำขอนำเข้า
เวลานำเข้า
นำเข้า globalfunctions เป็น gf

url = "http://www.kite.com"
หมดเวลา = 5


def ping_internet():
    พยายาม:
        คำขอ = คำขอรับ (url, หมดเวลา = หมดเวลา)
        กลับทรู
    ยกเว้น (requests.ConnectionError, request.Timeout) เป็นข้อยกเว้น:
        กลับเป็นเท็จ


gf.log_today(เพิ่มเติม="อินเทอร์เน็ต")

ในขณะที่ทรู:

    internet_connected = ping_internet()

    ถ้า internet_connected:
        datestring, timenumber = gf.get_log(เพิ่มเติม="อินเทอร์เน็ต")
        เคอร์ไทม์ วันนี้ = gf.get_today()

        ถ้า abs (curtime - timenumber) > 35:
            gf.report_data("internet.txt", "อินเทอร์เน็ตขัดข้องตั้งแต่ [" + datestring + "] ถึง [" + str(วันนี้) + "]")
            พิมพ์ ("ตรวจพบการหยุดทำงานของอินเทอร์เน็ต")

        gf.log_today(เพิ่มเติม="อินเทอร์เน็ต")
        เวลานอน(30)
    อื่น:
        เวลานอน(15)

poweroutagetracker.py

เวลานำเข้า
จาก datetime นำเข้า datetime
นำเข้า globalfunctions เป็น gf

ในขณะที่ทรู:
    สตริงวันที่, หมายเลขเวลา = gf.get_log()
    เคอร์ไทม์ วันนี้ = gf.get_today()

    ถ้า abs (curtime - timenumber) > 5:
        gf.report_data("poweroutages.txt", "ไฟฟ้าดับตั้งแต่ [" + datestring + "] ถึง [" + str(วันนี้) + "]")
        พิมพ์ ("ตรวจพบไฟดับ")


    เวลานอน(5)
    gf.log_today()

รองรับไฟล์พร้อมฟังก์ชั่น globalfunctions.py

เวลานำเข้า
จาก datetime นำเข้า datetime

def get_today():
    กลับ time.time(), datetime.today()

def log_today(เพิ่มเติม=""):
    เคอร์ไทม์ วันนี้ = get_today()

    datefile = เปิด (เพิ่มเติม + "date.txt", "w")
    datefile.write(str(วันนี้))
    datefile.close()

    timefile = เปิด (เพิ่มเติม + "timelog.txt", "w")
    timefile.write(str(เคอร์ไทม์))
    timefile.close()

def get_log (เพิ่มเติม = ""):
    datefile = เปิด (เพิ่มเติม + "date.txt", "r")
    datestring = datefile.readline()

    timefile = เปิด (เพิ่มเติม + "timelog.txt", "r")
    เลขเวลา = float(timefile.readline())

    ส่งคืน datestring, timenumber

def report_data (ชื่อไฟล์ ข้อความ):
    เคอร์ไทม์ วันนี้ = get_today()
    outfile = เปิด (ชื่อไฟล์, "a+")
    outfile.write(str(วันนี้) + " | " + ข้อความ + "\n")
    outfile.close()

ฉันลองทำตามคำแนะนำจาก หัวข้อนี้ แต่ดูเหมือนว่าจะไม่ทำงาน ฉันสร้าง .service ด้วยสิ่งต่อไปนี้:

[หน่วย]
คำอธิบาย=Python Internet Watcher

[บริการ]
ประเภท = ง่าย
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=./internettracker.py


[ติดตั้ง]
WantedBy=multi-user.target

ไฟล์นี้ถูกย้ายไปที่ /lib/systemd/system/ และจนถึงตอนนี้ฉันไม่เห็นสิ่งใดถูกเรียกใช้เมื่อเริ่มต้นระบบ

EODCraft Staff avatar
cn flag
มีรายงานข้อผิดพลาดใด ๆ ในบันทึกหรือไม่ ขอเอามาลงต่อนะครับ
user535733 avatar
cn flag
ฉันเห็นคำสั่ง "พิมพ์" ในสคริปต์ของคุณ เนื่องจาก systemd ทำงานโดยไม่มีส่วนหัว สิ่งเหล่านั้นจะไม่ถูกพิมพ์บนหน้าจอ ลองเขียนผลลัพธ์ของคุณลงในไฟล์แทน จากนั้นใช้เครื่องมือต่างๆ เพื่ออ่านผลลัพธ์นั้นเมื่อคุณเข้าสู่ระบบ
Score:1
ธง in

ฉันพบวิธีแก้ไขปัญหาแล้ว ฉันพบว่าคุณสามารถเปิดใช้งานสภาพแวดล้อมเสมือนจริงสำหรับโครงการ จากนั้นเริ่มโปรแกรมภายในสภาพแวดล้อมเสมือน

ในโครงการ venv สามารถเปิดใช้งานผ่าน [project_path]/venv/bin/python

นี่คือการเปลี่ยนแปลงสำหรับโซลูชัน:

[หน่วย]
คำอธิบาย=Python Internet Watcher
After=network-online.target

[บริการ]
WorkingDirectory=/home/connor/Documents/Pycharm
ExecStart=/home/connor/Documents/Pycharm/venv/bin/python internettracker.py เริ่ม
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 15 วินาที
KillMode=กระบวนการ
TimeoutSec=อินฟินิตี้
ผู้ใช้ = คอนเนอร์
Group=คอนเนอร์

[ติดตั้ง]
WantedBy=multi-user.target

บรรทัดคำสั่ง หลาม

bac0n avatar
cn flag
ไดเร็กทอรีการทำงานของ .service จะเหมือนกับไดเร็กทอรีรากของระบบ `/` ที่ตัวจัดการบริการเริ่มต้น และ '~` สำหรับผู้ใช้ .service unit

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา