So schreiben Sie ein wiederkehrendes Bash-Skript

So schreiben Sie ein wiederkehrendes Bash-Skript

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.

  1. Stellen Sie sicher, dass der Cron-Daemon installiert ist

    sudo apt-get install cron
    
  2. 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.

verwandte Informationen