Ich habe mit Python einen Twitter-Bot erstellt, konnte ihn jedoch mit dem von der Druckfunktion ausgegebenen Befehl log systemctl status
nicht sehen, sodass ich mich an die Lösung erinnere. Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, ob es einen besseren Weg gibt.
CentOS Linux release 8.1.1911 (Core)
Beschreibung der Unit-Datei in etc \ systemd \ system \
bot.service
[Unit]
Description=Python Tweet Collector
[Service]
ExecStart=Ausführungsdatei(Hier ist ein Shell-Skript, das Bot startet)Pfad
Type=simple
StandardOutput=journal #Machen Sie die Standardausgabe in journalctl sichtbar
StandardError=journal #Machen Sie Standardfehler in journalctl sichtbar
[Install]
WantedBy=multi-user.target
Es scheint, dass die Standardausgabe von Python möglicherweise gepuffert ist und die Ausgabe der print-Anweisung möglicherweise nicht nur mit den oben genannten Einstellungen angezeigt wird ... Also schrieb ich ein Shell-Skript und startete Bot von dort aus
start_bot.sh
#!/bin/bash
cd $(dirname $0) #Wechseln Sie in das Verzeichnis, in dem sich diese Datei befindet
. venv/bin/activate #Aktivieren Sie die virtuelle Python-Umgebung
python -u bot.py # -Deaktivieren Sie den Puffer mit der Option u
Schließlich erteilen Sie dem Shell-Skript mit ch mod 744 start_bot.sh
die Ausführungsberechtigung
Starten Sie Bot
systemctl start bot.service
Überprüfen Sie den Status von Bot
systemctl status bot.service
Überprüfen Sie das Protokoll
journalctl -u bot.service
Sie können sehen, dass der von der Python-Druckanweisung ausgegebene Inhalt im Protokoll angezeigt wird.
Ich bin noch ein Anfänger in Linux, daher wäre ich sehr dankbar, wenn Sie mir Vorschläge oder Ratschläge zu unangemessenen Punkten geben könnten.
Recommended Posts