Cronjob @reboot funktionert nicht in Benutzer-Crontab (es soll eine E-Mail versendet werden)

  • Hallo,


    ich will mir nach dem Booten des Raspi eine E-Mail zusenden lassen.

    Leider kommt aber keine Mail an.

    Auf der Kommandozeile funktioniert es und ich erhalte eine E-Mail.

    Dazu nutze ich dieses Kommando:

    Code
    echo "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" | mail -s "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" meine.mail@mail.de


    Ich habe folgendes in die Benutzer-Crontab eigetragen:

    Code
    # Benutzer Cron-Tabelle bearbeiten:
    crontab -e
    #
    # E-Mail bei jedem Neustart versenden
    # Min  Std  Tag  Mon  Wochtag  Befehl
      @reboot   echo "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" | mail -s "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" meine.mail@mail.de
    # Die Cron-Tabelle muss mit einem Kommentar oder einer Leerzeile enden!


    Gruß

    meute

  • meute

    Changed the title of the thread from “Cronjob @reboot funktionert nicht in Benutzer-Crontab (es soll eine E-Mai versendet werden)” to “Cronjob @reboot funktionert nicht in Benutzer-Crontab (es soll eine E-Mail versendet werden)”.
  • Füge da mal ein sleep 30 ein, das Netzwerk wird noch nicht da sein, wenn @reboot läuft.

    Code
    @reboot /bin/sleep 30; echo "Neustart $(hostname)...

    Sinnvoller eine one-shot Systemd-Unit dafür zu nutzen, dort kann man die Abhängigkeit vom Netzwerk definieren.

    In diesem Thread sollte alles wichtige dazu zu finden sein SSH Verbindung nach dem Startvorgang

    Menschen die keine Ironie verstehen finde ich super!

    Edited 2 times, last by llutz: Pfad korrigiert. ().

  • Hallo,

    Füge da mal ein sleep 30 ein, das Netzwerk wird noch nicht da sein, wenn @reboot läuft.

    Code
    @reboot /usr/bin/sleep 30; echo "Neustart $(hostname)...

    Bei mir gibt es in /usr/bin kein sleep.

    Funktioniert das dann trotzdem?

    Code
    $ ls -lh /usr/bin/sl*
    -rwxr-xr-x 1 root root 14K Mai 31  2018 /usr/bin/slabtop
    lrwxrwxrwx 1 root root   3 Jan 31  2020 /usr/bin/slogin -> ssh


    Gruß

    meute

  • Hallo,

    Bei mir gibt es in /usr/bin kein sleep.

    Funktioniert das dann trotzdem?

    Code
    $ ls -lh /usr/bin/sl*
    -rwxr-xr-x 1 root root 14K Mai 31  2018 /usr/bin/slabtop
    lrwxrwxrwx 1 root root   3 Jan 31  2020 /usr/bin/slogin -> ssh

    Ich habe es jetzt ohne /usr/bin eingegeben:

    @reboot sleep 30; echo "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" | mail -s "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" meine.mail@mail.de


    Jetzt startet der Raspi nicht mehr


    Gruß

    meute

  • Jetzt startet der Raspi nicht mehr

    Aber nicht wegen o.g. Änderung, die sorgt evtl. für 30 Sek Verzögerung oder wirft, wenn sleep nicht gefunden würde, einen Fehler ins Log und macht dann einfach weiter.


    Das sieht dann so aus ( hier: /usr/bin/llutz existiert nicht, vorletzte Zeile ), mehr passiert da nicht:

    Code
    $ journalctl -u cron.service
    -- Logs begin at Sun 2020-08-23 11:28:58 CEST, end at Sun 2020-08-23 11:29:19 CEST. --
    Aug 23 11:28:58 getbusted systemd[1]: Started Regular background program processing daemon.
    Aug 23 11:28:58 getbusted cron[358]: (CRON) INFO (pidfile fd = 3)
    Aug 23 11:28:58 getbusted cron[358]: (CRON) INFO (Running @reboot jobs)
    Aug 23 11:28:58 getbusted CRON[369]: pam_unix(cron:session): session opened for user llutz by (uid=0)
    Aug 23 11:28:58 getbusted CRON[377]: (llutz) CMD (/usr/bin/llutz 123; echo blabla)
    Aug 23 11:28:58 getbusted CRON[369]: (CRON) info (No MTA installed, discarding output)

    Menschen die keine Ironie verstehen finde ich super!

    Edited once, last by llutz ().

  • Hallo,

    Aber nicht wegen o.g. Änderung, die sorgt evtl. für 30 Sek Verzögerung oder wirft, wenn sleep nicht gefunden würde, einen Fehler ins Log und macht dann einfach weiter.

    Ist aber leider so.

    Eine andere Änderung habe ich jetzt nicht gemacht.

    Gestern hat er noch gebootet.


    Habe den Raspi kurz stromlos gemacht.

    Er lässt sich aber immer noch nicht pingen.


    Gruß

    meute

  • Dann Karte in Kartenleser auf einem anderen System (z.B. live-Linux) mounten und /mntpoint/var/spool/cron/crontabs/pi bearbeiten/löschen, umounten und den RPi wieder damit starten.

    Menschen die keine Ironie verstehen finde ich super!

  • Hallo,

    Dann Karte in Kartenleser auf einem anderen System (z.B. live-Linux) mounten und /mntpoint/var/spool/cron/crontabs/pi bearbeiten/löschen, umounten und den RPi wieder damit starten.

    Das war zum Glück nicht nötig.

    Aber danke für den Tipp. :thumbup:

    Ich habe den Raspi noch mal so ca. 10 Min. stromlos gemacht.

    Jetzt bootet er wieder. :angel:


    Ich war jetzt schon fast dabei, das Backup von heute Nacht mit Deinem raspiBackup zu restoren.


    Aber eine E-Mail erhalte ich damit leider trotzdem nicht:

    Code
    # Benutzer Cron-Tabelle bearbeiten:
    crontab -e
    #
    # E-Mail bei jedem Neustart versenden.
    # Vorher 30 Sek. warten, damit der Raspi das Netzwerk starten kann.
    # Min  Std  Tag  Mon  Wochtag  Befehl
      @reboot   /bin/sleep 30; echo "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" | mail -s "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" meine.mail@mail.de
    # Die Cron-Tabelle muss mit einem Kommentar oder einer Leerzeile enden!

    Gruß

    meute

  • Funktioniert der manuelle Aufruf in einer Shell von

    echo "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" | mail -s "Neustart $(hostname) am $(date +%a." "%d.%m.%Y" "%H:%M" "Uhr)" meine.mail@mail.de


    Wenn ja (syntaktisch ist er korrekt), packe das in ein kurzes Script nach /usr/local/bin und erstelle dir eine passende Systemd-Unit mit Netzwerkabhängigkeit (siehe Link oben, bzw. einen Thread zum Thema von Bernd666 )

    RE: Systemd und Netzwerk

    Menschen die keine Ironie verstehen finde ich super!

    Edited once, last by llutz: User korrigiert, link eingefügt ().

  • Aber eine E-Mail erhalte ich damit leider trotzdem nicht:

    Wenn du Befehle aufrufst, die von dem Cronjob nicht gefunden werden, ist es auch kein Wunder.


    Noch einmal:


    In einem Cronjob nur Programme mit dem kompletten Pfad aufrufen

    Und genau das machst du nicht.


    (neben dem Unsinn, in einem Crontab eine lange Zeile von Befehlen nacheinander aufzurufen. Das gehört in ein Script, welches vond er Crontab aufgerufen wird.)

    Selber denken,
    wie kann man nur?

  • Hallo,

    In einem Cronjob nur Programme mit dem kompletten Pfad aufrufen

    Und genau das machst du nicht.

    Du meinst vermutlich /usr/bin/mail.

    Das habe ich danach noch geändert, hat aber nichts gebracht.

    (neben dem Unsinn, in einem Crontab eine lange Zeile von Befehlen nacheinander aufzurufen. Das gehört in ein Script, welches vond er Crontab aufgerufen wird.)

    Das war die Lösung. :danke_ATDE:


    So habe ich es umgesetzt:


    1.) bash-Skript cronjob_E-Mail_nach_reboot.sh


    2.) Cronjob erstellt crontab -e


    Bash
    # E-Mail bei jedem Neustart versenden.
    # Vorher 30 Sek. warten, damit der Raspi das Netzwerk starten kann.
    # In einem Cronjob Programme nur mit dem KOMPLETTEN Pfad aufrufen!
    # Min  Std  Tag  Mon  Wochtag  Befehl
      @reboot   /home/xx/bashskript/cronjob_E-Mail_nach_reboot.sh
    # Die Cron-Tabelle muss mit einem Kommentar oder einer Leerzeile enden!


    Gruß

    meute