Ich habe ein Programm erstellt, das eine Reihe von Befehlszeilen-Anweisungen erfordert, um neue Informationen abzurufen und die Datenbanken zu aktualisieren.
Gibt es eine Möglichkeit, diesen Vorgang zu automatisieren, sodass ich das alles nicht jedes Mal ins Terminal eingeben muss, wenn ich mich hinsetze? Vielleicht könnte man die ersten drei Schritte jede Stunde ausführen und Schritt 4 um 2 Uhr morgens, da die Ausführung lange dauern kann.
Schritt 1:Im Terminal:
...Documents/dota2/dotaapi2/ python match_scraper.py
Schritt 2:Im Terminal
psql dota2apidb
update games set online=1 where online is null;
Schritt 3:Im Terminal:
...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
Schritt 4:Im Terminal: (nur einmal um 2 Uhr morgens ausführen)
...Documents/dota2/dotaapi2/ python gosu_merge.py
...Documents/dota2/dotaapi2/ python unticketed.py
Antwort1
Eine Lösung könnte das Einrichten von Cronjobs zum Sperren/Entsperren des Spielverzeichnisses sein. Befolgen Sie dazu die folgenden Schritte.
Stellen Sie sicher, dass der Cron-Daemon installiert ist
sudo apt-get install cron
Einrichten des Cronjobs für die Ausführung durch Root
Beginnen Sie mit der Bearbeitung des Cronjobs, indem Sie den folgenden Befehl eingeben:
sudo crontab -e
Fügen Sie die folgenden Zeilen in den Editor ein:
00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py
(Nur um das klarzustellen: Sie müssen die richtigen Befehle und Pfade verwenden und vielleicht einige davon in vorbereitete Bash-Skripte einfügen, damit Sie die Anzahl der ausgeführten Crons reduzieren können.)
Antwort2
Fügen Sie die Schritte 1, 2 und 3 in script1.sh ein. Fügen Sie Schritt 4 in script2.sh ein.
Dann einrichtencronfür den entsprechenden Benutzer, um die Skripte entsprechend Ihrem Zeitplan auszuführen:
minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command
01 * * * * /usr/bin/directory/script1.sh
30 2 * * * /usr/bin/directory/script2.sh
script1.sh wird stündlich an jedem Tag in der 01. Minute ausgeführt, während script2.sh jeden Tag in der 30. Minute der 02.00 Uhr ausgeführt wird.