crontab -e startet nicht

yamaharacer

Lt. Junior Grade
Registriert
Jan. 2008
Beiträge
416
Hallo,

ich versuche einen WOL zu einer gewissen Uhrzeit zu starten. In crontab -e habe ich folgendes:

0 7 * * * /usr/local/sbin/wol.sh

Die WOL Fie ist so:

#!/bin/bash
sleep 5s;
etherwake c8:7f:54:6f:fb:08 -i eno1;
sleep 1s;
exit


leider startet sie nicht. Wenn ich sie allerdings händisch mit . /usr/local/sbin/wol.sh starte, wird der WOL gesendet.

Was mache ich falsch? Danke schon mal.
 
Kennt das Crontab-Environment den Befehl 'etherwake'? Da kann es gut sein, dass du zu der Programmdatei auch den vollen Pfad im Crontab angeben musst (ich glaube 'which' findet das heraus, wo die Datei liegt).
 
  • Gefällt mir
Reaktionen: Linuxfreakgraz, kieleich und kartoffelpü
Pack mal ein sudo davor.

Nutze etherwake auch um wöchentlich ein Backup vom Pi auf meinem Server zu machen.
 
R O G E R schrieb:
Pack mal ein sudo davor.
Aber vor den etherwake-Aufruf...

wol.sh muss zudem ausführbar sein (chmod +x)

und im Script sollte die zweite Zeile set -e sein.
 
  • Gefällt mir
Reaktionen: Linuxfreakgraz und R O G E R
  • Gefällt mir
Reaktionen: n/a
Chmod ist gesetzt. Vergessen zu schreiben.

Brauche ich bei crontab -e sudo? Dachte das wird sowieso als root gestartet.
 
Es gibt einen Crontab für User und einen für den Root, bei dem einen wird crontab mit sudo (oder als root) aufgerufen, bei dem anderen ohne.

Ergänze das Skript doch mal um eine Zeile wie

Code:
echo "Skript wurde ausgeführt" >> /home/[dein user]/wol.log

und schau dann, ob in ~/wol.log die entsprechende Zeile reingeschrieben worden ist. Dann weißt du, ob das Skript von cron ausgeführt worden ist oder nicht.
 
  • Gefällt mir
Reaktionen: yamaharacer
Cron sollte je nach distribution auch ins journal schreiben ob das Skript gestartet wurde
Bash:
sudo journalctl

z.B. ein cron Eintrag
Code:
10 3 * * * root test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r
Erzeugt dann dieses Log
Code:
Mar 03 03:10:01 dietpi CRON[440765]: (root) CMD (test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r)
 
Zurück
Oben