Bash script cronjob Debian

Ich verwende das Script aus diesem Beitrag 4.2 Filterlisten-Skript Ich möchte gerne, das dieses Script über Cron Job ausgeführt ist. Das Script habe ich etwas angepasst und Listen hinzugefügt. Leider funktioniert es mit dem Cron nicht.

root /bin/sh /home/pi/netguardblocklist/./adlist.sh >/dev/null 2>&1

Das ist mein cron.

#!/bin/bash
## Auto update NetGuard blocklist

# Download blocklists
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts > netguard_steven_complete
curl -s https://raw.githubusercontent.com/EnergizedProtection/EnergizedBlu/master/energized/blu.txt > netguard_energized_blu
curl -s https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/android-tracking.txt > netguard_android_tracking
curl -s https://raw.githubusercontent.com/badmojr/1Hosts/master/Lite/hosts.txt > netguard_1hosts_lite
curl -s https://github.com/StevenBlack/hosts/blob/master/data/yoyo.org/hosts > pete_lowe_blocklist
curl -s https://github.com/StevenBlack/hosts/blob/master/data/adaway.org/hosts > adaway_blocklist
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts > steven_black_unified

# Convert 'netguard_android_tracking' blocklist for NetGuard
command grep "^[^#;]" netguard_android_tracking | sed 's/^/0.0.0.0 /' > netguard_android_tracking_clean

# Combine blocklists
cat host1.txt netguard_steven_complete netguard_energized_blu netguard_android_tracking netguard_1hosts_lite pete_lowe_blocklist adaway_blocklist steven_black_unified > netguard.txt

# Remove domains from blocklist (overblocking) 
# sed -i '/0.0.0.0 example.com/d' netguard.txt

# Copy blocklist to webserver folder
cp netguard.txt /var/www/html/hosts

Das der inhalt.

Was genau funktioniert nicht?

Die datei wird nicht Aktualisiert.

Die Syntax von deinem cronjob ist nicht korrekt.Hier oder hier findest du Hinweise, wie die Syntax ausschauen sollte.

Das habe ich ja teils schon ausprobiert. Hat aber trotzdem nicht Funktioniert.

So wie der Cronjob Eintrag oben steht, ist er nicht richtig und kann nicht funktionieren. Welche „Varianten“ hast du denn probiert?

In welche Crontab trägst du den Cronjob ein und wem gehört das Skript bzw.welcher User darf es ausführen?

Ist das Skript als ausführbar markiert (chmod +x) bzw. kannst du das Skript manuell ausführen?

Hast du es schonmal mit systemd anstatt cron probiert?
Ich hab ursprünglich auch mit Cronjob angefangen, hatte viele Probleme und bin dann eine Woche später auf systemd umgestiegen und hab seit vielen Jahren keine Probleme.

Mir wurde damals von mehreren Linux-Experten in Linuxforen empfohlen, „mach es lieber gleich richtig, bevor du dir Cron angewöhnst“.

Jede(r) wie er/sie/es mag… ich selber bin mit cron aufgewachsen und finde nach der reinen UNIX-Lehre/Philosophie, dass in ein „init system“ sowas wie Timer, Mounts, usw.usf. überhaupt nicht reingehören.

Aber wenn man eh grade neu mit Linux anfängt, spricht meiner Meinung auch gar nichts dagegen sich gleich mit den neusten und aktuellsten Dingen anzufreunden.

Und „richtig“ ist im Einzelfall das, womit man am besten zurecht und ans Ziel kommt :slight_smile:

Das ist richtig. Am Ende ist es wol auche immer eine Geschmacksfrage. Wenn man am Anfang steht, sollte man beides probieren und bei dem bleiben was einem zusagt. Gibt ja auch Gegenstimmen, bezüglich Systemd (hat eben beides Vor- und Nachteile). Und gegenüber Cron wirkte systemd anfangs auf mich sogar etwas eigenartig. Ich fand aber, ich hab da wesentlich mehr, präziesere Möglichkeiten, meine Scripte zeitlich zu steuern. Und es war bisher immer maximal zuverlässig.

1 „Gefällt mir“