Geplantes Neustartprogramm unter Ubuntu


Vorwort

  Im Projekt wird Frp verwendet, um in das Intranet einzudringen, aber aufgrund der Möglichkeit von Netzwerkschwankungen, die auch zu Frp-Unterbrechungen führen können, möchte ich diese Situation vermeiden, indem ich das Frp-Programm wie folgt regelmäßig neu starte:


1. Abhängigkeitsinstallation

Die hier erforderlichen Python-Abhängigkeiten sind relativ gering. Sie müssen nur den Zeitplan installieren (dieses Paket ist sehr klein und wird ohne Spiegelung schnell installiert). Dieser wird für geplante Aufgaben direkt in der laufenden Python-Umgebung verwendet. Führen Sie den folgenden Befehl aus :

pip install schedule

2. Starten Sie die Aufgabe neu

In diesem Teil werden wir den Code veröffentlichen. Die allgemeine Logik besteht darin, zuerst die Programm-ID zu erkennen, die wir neu starten möchten, sie dann zu beenden und neu zu starten. Der Code lautet wie folgt:

import os,sys,schedule
import subprocess,time
def restart_frp():
    child =subprocess.Popen(["pgrep","-f","xxx"],stdout=subprocess.PIPE,)
    pid=child.stdout.read().decode("utf-8").strip()
    #print(pid)
    if pid!="":
        os.system("kill -9 "+pid)
    child2=subprocess.Popen("xxx",stdout=subprocess.PIPE,shell=True)
    print(time.strftime("%Y-%m-%d %H:%M",time.localtime()))
if __name__ == '__main__':
    restart_frp()
    schedule.every().hour.do(restart_frp)
    while True:
        schedule.run_pending()

Dabei ist xxx der Name des Programms, das Sie bedienen möchten

3. Fehleraufzeichnungen

Wenn während des Betriebs der folgende Fehler auftritt: Fügen Sie hier eine Bildbeschreibung ein
Führen Sie die folgenden Vorgänge aus:
Schritt 1: Führen Sie den Befehl aus

ls -l /bin/sh

Wenn das angezeigte Ergebnis ist: /bin/sh -> dash, dann führen Sie den zweiten Schritt aus:

sudo  dpkg-reconfigure dash (出现窗口选择no)

Der dritte Schritt besteht darin, den Befehl erneut auszuführen:

ls -l /bin/sh

Nachdem es als /bin/sh -> bash angezeigt wird, führen Sie das Programm einfach erneut aus

Referenzlink: Fehlerbehebung


Zusammenfassen

Das Obige ist der gesamte Inhalt dieses Artikels. Wenn etwas nicht stimmt, korrigieren Sie mich bitte.

おすすめ

転載: blog.csdn.net/qq_55068938/article/details/126760559