Jeden Morgen analysierte ich die Aktienkursbewegung am Vortag und bereitete eine Umgebung für die Ausführung eines Programms vor, das die Ergebnisse automatisch per E-Mail sendet. Ich werde zusammenfassen, was ich getan habe, bis ich das Programm automatisch starten konnte.
Es ist vom Betriebssystem getrennt, das normalerweise für einen stabilen Betrieb verwendet wird. Ich habe Gparted verwendet, um ungefähr 200 GB Ubuntu von der 2-TB-Festplatte zu installieren, die ich für die Datenspeicherung verwendet habe. (* Seien Sie vorsichtig, wenn Sie eine Festplatte partitionieren, die bereits Daten enthält, da die Gefahr einer Datenbeschädigung besteht.)
Ubuntu https://www.ubuntulinux.jp/download Gparted http://www.gigafree.net/system/drive/gparted.html
Installationsvorgang usw. entfällt
Wenn Ubuntu installiert ist, wird auch ein Bootloader namens GRUB installiert. Ändern Sie daher die GRUB-Einstellungen und setzen Sie das Standard-Boot-Betriebssystem auf Ubuntu. Grundsätzlich sollte Ubuntu jedoch die Standardeinstellung sein. Wenn Sie also nicht drei oder mehr Betriebssysteme installieren oder einen anderen Bootloader verwenden, bleibt Ubuntu unverändert.
Die Methode ändert sich je nach BIOS, und es gibt einige, die nicht automatisch gestartet werden können. In meiner Umgebung war dies jedoch wie folgt.
Ich konnte den Tag nicht angeben, daher habe ich nur die Uhrzeit angegeben. Samstags und sonntags gibt es nichts Besonderes zu tun, aber ich habe einen Kompromiss geschlossen, indem ich den Tag im Python-Programm festgelegt und samstags und sonntags heruntergefahren habe ...
Unter Linux sollten Sie die Datei, die Sie ausführen möchten, beim Start des Betriebssystems zuerst in /etc/profile.d/ ablegen. Ist es der Startordner in Windows?
Zunächst habe ich die Berechtigung, eine Datei wie folgt zu erstellen
$ cd /etc/profile.d/
$ sudo gedit auto_start.sh
Das Shell-Skript lautet wie folgt
auto_start.sh
#!/bin/sh
cd "Geben Sie den Pfad zur Python-Datei ein"
python analysis.py
Sie können Python direkt ausführen, indem Sie den absoluten Pfad angeben, ohne hier mit CD zu wechseln. Wenn Sie dies jedoch tun, werden das CSV-Speicherziel im Python-Programm und der relative Pfad, der beim Importieren mehrerer Dateien behandelt wird, / usw. Es wird basierend auf /profile.d/ behandelt. Daher konnte ich ein solches Problem vermeiden, indem ich das aktuelle Verzeichnis in den Ordner der Zieldatei verschob und dann ausführte.
Wenn Sie dies jedoch tun, ist das aktuelle Verzeichnis beim Starten des Terminals der Ordner der Python-Datei, sodass Sie es am Ende ordnungsgemäß wiederherstellen müssen.
auto_start.sh
#!/bin/sh
cd "Geben Sie den Pfad zur Python-Datei ein"
python analysis.py
cd
Führen Sie das folgende Shell-Skript aus, um es herunterzufahren.
shutdown.sh
#!/bin/sh
sudo shutdown -h now
Dies allein funktioniert jedoch nicht. Bei der normalen Verwendung des Befehls sudo muss der Benutzer das Kennwort manuell eingeben. Dies macht die Automatisierung bedeutungslos, sodass der Befehl zum Herunterfahren keine Kennworteingabe mehr erfordert.
Bearbeiten Sie dort die sudo-Konfigurationsdatei. (* Natürlich ist es eine schreckliche Tat, also auf eigenes Risiko)
$ sudo gedit /etc/sudoers
Fügen Sie am Ende der Datei den folgenden Inhalt hinzu.
/etc/sudoers
"Nutzername" ALL=(ALL) NOPASSWD:/sbin/shutdown -h now
Danach können Sie dieses Shell-Skript aufrufen, nachdem die Zielverarbeitung auf der Python-Seite abgeschlossen ist.
analysis.py
import subprocess
#Was du machen willst
subprocess.call("./shutdown.sh")
Nachdem wir die Dateien erstellt haben, erteilen Sie der Shell-Skriptdatei und der Python-Datei die Ausführungsberechtigung. Andernfalls wird eine Fehlermeldung angezeigt, dass Sie bei der automatischen Ausführung keine Berechtigung haben.
$ cd /etc/profile.d/
$ sudo chmod a+x auto_start.sh
$ cd "Pfad zur Python-Datei"
$ sudo chmod a+x analysis.py
$ sudo chmod a+x shutdown.sh
Selbst wenn Sie sich zur Wartung anmelden, ist es ein Problem, wenn der Prozess ausgeführt und sogar heruntergefahren wird. Vermeiden Sie dies.
Bei meinem Programm beginnt es jeden Morgen um 8:00 Uhr und die Verarbeitung ist um 8:30 Uhr abgeschlossen. Daher versuche ich, die Verarbeitung nur dann auszuführen, wenn sie innerhalb dieser Zeit liegt.
analysis.py
import datetime
d = datetime.datetime.today()
if (d.hour == 8) and (0 <= d.minute <= 30):
#Was du machen willst
#Prozess herunterfahren
$ sudo shutdown -c
Da es für den persönlichen Gebrauch ist, gibt es viele Orte, an denen der Mangel an Wissen gewaltsam ausgeglichen wird. Wenn jemand einen besseren Weg kennt, würde ich es begrüßen, wenn Sie mich unterrichten könnten.
Recommended Posts