Crontab funktioniert nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich möchte gerne mit Hilfe des Crontabs Seafile automatisch beim Boot mitstarten lassen. Dafür habe ich unter dem Benutzer Seafile mit crontab -e folgendes in die Datei geschrieben

    Code
    #Kommentar
    @reboot ./home/seafile/seafile/seafile-server-2.0.3/seafile.sh start
    @reboot ./home/seafile/seafile/seafile-server-2.0.3/seahub.sh start 8000
    (+ Leerzeile, die scheinbar sein muss.)

    wenn ich die Datei speichere und schließe steht auch im Terminal, dass der Cronjob aktualisiert wird, aber wenn ich dann reboote laufen die Programme nicht. Führe ich die Befehle manuell aus, funktioniert alles.
    Woran kann das liegen?

    Danke

  • Was soll der Punkt am Anfang des Pfads?

    Mehr zum Thema Crontab usw kannst du hier nachlesen: https://www.forum-raspberrypi.de/Thread-tutorial-crontab-cron-jobs
    Da findest du auch Beispiel Zeilen wie es aussehen müsste

  • Nun, wenn ich Dateien ausführe, dann üblicherweise mit einem Punkt vor dem Pfad. Ist das etwa falsch? Bisher hat das immer geklappt.
    Ich hatte die beiden Befehle vorher auch ohne den Punkt da drin stehen, aber so bekam ich nichtmal das Feedback im Terminal, daher dachte ich, die Änderung wäre zumindest etwas richtiger.
    Danke, les ich mir mal durch.

  • Nein...
    Einen Punkt nutzt man nur wenn man eine Datei im aktuellen Verzeichnis ausführen möchte. Man befindet sich zum Beispiel in /root/ und möchte das in diesem Verzeichnis befindliche Script.sh ausführen, so muss man ./Script.sh ausführen.
    Gibt man aber den vollständigen Pfad zum Script an brauch man kein Punkt: /root/Script.sh
    Oder das Script befindet sich im $PATH wo automatisch danach gesucht wird dann brauch man nur Script.sh ausführen..

    Guck ggf auch ins /var/log/syslog logfile und prüf ob es dort eine Fehlermeldung von CRON gibt

  • Die System Crontab wird mit root Rechten ausgeführt

    Wo hattest du es denn vorher eingetragen? Benutzer_Crontab von pi?
    Die Benutzer haben keine Rechte fremde Dateien auszuführen oder gar zu lesen/sehen...
    Prüf also mal die Rechte der Verzeichnisse sowie vom Scriptfile

  • Nein, im Benutzer-Crontab von seafile. Wenn ich die beiden Scripte mit seafile ausführe brauche ich dafür ja gar kein sudo und sie gehören ja dem Benutzer dann, also kanns ja daran nicht liegen, oder?

  • Wenn du wirklich KEIN sudo genutzt hast, weder zum anlegen der Verzeichnisse noch des Scripts - und in dem Script stehen auch KEINE Befehle die in irgendeiner Weise root Rechte benötigen, dann bliebe nur das der Eintrag vorher fehlerhaft war und in dem Fall einfach das syslog prüfen

  • Seltsam. Fehlerhaft waren die Befehle sicher nicht und wegen den Rechten bin ich mir auch sicher..
    In dem Syslog steht allerhand drin

    Code
    Dec 30 16:27:51 raspberrypi /usr/sbin/cron[2013]: (CRON) INFO (pidfile fd = 3)
    Dec 30 16:27:51 raspberrypi /usr/sbin/cron[2014]: (CRON) STARTUP (fork ok)
    Dec 30 16:27:51 raspberrypi /usr/sbin/cron[2014]: (CRON) INFO (Running @reboot jobs)
    Dec 30 16:27:51 raspberrypi ifplugd(eth0)[1683]: Program executed successfully.
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2034]: (root) CMD (/home/seafile/seafile-server-1.6.1/seafile.sh start)
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2032]: (seafile) CMD (seafile /home/seafile/seafile/seafile-server-2.0.3/seahub.sh start)
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2035]: (seafile) CMD (seafile /home/seafile/seafile/seafile-server-2.0.3/seafile.sh start)
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2017]: (CRON) info (No MTA installed, discarding output)
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2018]: (CRON) info (No MTA installed, discarding output)

    Ich kann da jetzt nicht so viel rauslesen, das einzige, was mich irritiert ist:

    Zitat


    [font="Monaco, Consolas, Courier, monospace"]Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2034]: (root) CMD (/home/seafile/seafile-server-1.6.1/seafile.sh start)[/font]


    Ich verstehe nämlich nicht, warum er versucht, das auszuführen. Das muss ich wenn dann mal versehentlich in die Crontab kopiert haben, weil das ja die falsche Version ist. Das habe ich aber eigentlich ausgebessert.
    Wenn er jetzt bei jedem Start als erstes versucht, etwas zu starten, das nicht da ist, schlägt das ja fehl und damit ist die ganze Crontab hinfällig, oder nicht?
    Ich frage mich nur, wo ich das rauslöschen muss, weil ich finde diese Zeile nirgends.

    EDIT: Diese komische Zeile war in pi: "sudo crontab -e". Das hab ich da jetzt wieder rausgenommen, aus dem System Crontab auch und das steht jetzt wieder nur im seafile-Crontab. Jetzt kommen im Log blos noch die beiden von seafile aus ausgeführten Scripte vor. Funktionieren tuts trotzdem wieder nicht :/

    Einmal editiert, zuletzt von blubbi (30. Dezember 2013 um 17:25)

  • Mich irritiert in den beiden Zeilen des Benutzer-Crontabs von Seafile das "seafile" am Anfang der Zeile:

    Zitat


    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2032]: (seafile) CMD (seafile /home/seafile/seafile/seafile-server-2.0.3/seahub.sh start)
    Dec 30 16:27:51 raspberrypi /USR/SBIN/CRON[2035]: (seafile) CMD (seafile /home/seafile/seafile/seafile-server-2.0.3/seafile.sh start)

    Auf meinem Linux-System sieht der Log-Eintrag eines Cronjobs eines Testusers folgendermaßen aus:

    Code
    Dec 30 22:28:01 linserver /USR/SBIN/CRON[25023]: (testuser) CMD (/etc/init.d/owncloud status > /tmp/owncloud.status.log)


    Wie man erkennen kann, ohne Weiteres vor dem Befehl...

    Kannst du uns den Inhalt der crontab des Users mal 1 zu 1 geben?

    Linux - Für das Leben nach dem Absturz!

    Einmal editiert, zuletzt von Nightskill (30. Dezember 2013 um 22:33)

  • Sieht genau so aus. So funktioniert aber wie gesagt nichts. Nur über den System Crontab gehts.

  • Ja das ist aber falsch - Wie ich aber auch in dem oben angegebenen crontab / cron jobs Thread beschrieben habe ist die Syntax in der Benutzer Crontab anders als in der System Crontab!

    In der System Crontab ist eine Spalte mehr - nämlich die die den Benutzer angibt als welcher der Befehl ausgeführt werden soll ... Das geht in einer Benutzer Crontab selbstverständlich nicht, der Benutzer " pi " darf nicht einfach ein Script des Benutzers " bla " ausführen - das wär ein Sicherheitsloch der höchsten Güte :D


    Also noch mal ausführlicher den Thread lesen :-/


    Der Benutzer würde jetzt versuchen den Befehl " seafile /home/seafile/seafile/seafile-server-2.0.3/seafile.sh start " auszuführen aber scheitern da es keinen Befehl "seafile" gibt

    Die System Crontab würde als Benutzer " seafile " den Befehl " /home/seafile/seafile/seafile-server-2.0.3/seafile.sh start " ausführen...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!