crontab -e klappt nicht

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

    ich arbeite erst seit kurzem mit einem Pi 3 und aktuellem Raspbian Jessie, bin aber noch sehr unerfahren.

    Ich habe vor ein Skript /usr/local/bin/luefterskript.sh jede Minute aufzurufen.
    Unter crontab habe ich folgendes eingegeben: */1 * * * * /usr/local/bin/luefterskript.sh

    Beim Speichern mecker der Pi aber schon:

    /tmp/crontab.135UtE/crontab":1: bad command


    was mache ich falsch. Eigentlich habe ich alles nach Anleitung so gemacht.

    • Offizieller Beitrag

    Hallo Lammi1988,

    fünf Sterne also: * * * * * (ohne /1) starten jede Minute eine Aktion und Dein Lüfterscript gehört nicht nach /usr/local/bin sondern in das Homeverzeichnis des Users, mit dem der cronjob erstellt wurde.

  • .... Dein Lüfterscript gehört nicht nach /usr/local/bin sondern in das Homeverzeichnis des Users, mit dem der cronjob erstellt wurde.


    Könnte du bitte kurz erklären, warum es sinnvoll sein soll, ausführbare Programme dort zu speichern, wo ein user vollständige Schreib- und Ändernrechte auf Dateien hat. Ich würde sowas jedenfalls nicht tun. Scripte gehören imho auf jeden Fall nach /usr/local/bin.... und zwar ohne Schreibrecht für user.

    Jm2c

    Einmal editiert, zuletzt von WinterUnit16246 (6. Juni 2017 um 09:02)

    • Offizieller Beitrag

    Weil der TO die crontab eines "normalen" Users editiert und weder die von root, noch die Systeweite. Zumindest steht im ersten Beitrag nichts von sudo oder dergl., also weshalb sollte ein normaler User in einem Systemordner Dateien ausführen dürfen?

  • Weil für den user alle ausführbaren linux-dateien in systemordnern liegen, völlig losgelöst von root oder sudo. Nicht der Ort wo sie liegen ist wichtig, sondern wer schreibrechte darauf hat. Ich halte das home-dir ohne jeden Zweifel für ein NoGo. Aber jeder soll sich seine Exploits selber bauen, wie er mag. Mit nem einfachen Browserplugin brauch ich 30 Sekunden um deinen Rechner zu übernehmen. Und nach der ersten Verwendung eines sudo-befehls sogar mit rootrechten...und ich nutze dafür dein crontabscript, was idealerweise auch noch regelmäßig maschinell gestartet wird.

    Einmal editiert, zuletzt von WinterUnit16246 (6. Juni 2017 um 10:17)

  • ZHallo und danke für die Antworten.
    Leider klappt es auch mit ***** nicht.
    Die crontab ist ansonsten komplett leer.
    Muss da eventuell noch was anderes stehen?

    Ich verstehe bei eurer Diskussion nur Bahnhof.
    Gerne könnt ihr mir aber erklären was ich ändern sollte.
    Habe die Anleitung für die Lüftersteuerung hier aus dem Forum.

    Einmal editiert, zuletzt von Lammi1988 (6. Juni 2017 um 10:52)


  • ein enter hinter der zeile gemacht, also zwei zeilen?


    Ich glaube jetzt hat er es geschluckt. Man was ne schwere Geburt. Übrigens habe ich diesesmal sudo nano crontab -e ausgeführt.

    Kann ich irgendwie/irgendwo sehen ob das jetzt auch funktioniert?
    Habe den Lüfter nich nicht zur Hand.

  • Das nano ist nicht notwendig. Ein

    Code
    sudo crontab -e


    wuerde es auch tun. Das "-e" hinter dem crontab bedeutet das dieser im "editierbaren Modus" geoeffnet wird.
    Verwendest du "crontab -l" wirst Du deine crontab Eintraege sehen, diese aber nicht veraendern koennen. Diese Option wird einfach nur verwendet wenn du einen Blick auf deinen Crontab werfen moechtest. Das nur am Rande.

  • Jetzt bin ich ganz verwirrt:

    sudo nano crontab -e => hat funktioniert zu speichern ohne Fehlermeldung.
    Sudo crontab -e => steht nix drin und mein Code verursacht weiterhin beim speichern einen Fehler

    crontab -l => no crontab for pi

    Einmal editiert, zuletzt von Lammi1988 (6. Juni 2017 um 11:50)


  • sudo nano crontab -e => hat funktioniert zu speichern ohne Fehlermeldung.


    Der Befehl erzeugt mit dem Editor "nano" mit root-Rechten eine Datei "crontab" im aktuellen Verzeichnis, das "-e" wird ignoriert, weil nano es nicht kennt. Das hat nichts mit dem Erstellen einer crontab zu tun.
    Einfach immer mal ein "sudo" vor einem Befehl zu packen, nur weil dieser evtl nicht funktioniert, ist keine gute Idee.

    Um einen Eintrag in der Benutzer-crontab anzulegen, gibst du als normaler Benutzer (pi meistens) ein:

    Code
    crontab -e


    Wenn der Editor sich öffnet, gibst du dort deine gewünschte Zeile ein und beendest diese mit einem abschliessenden Newline (return).
    Dann speicherst du das Ganze und verlässt den Editor. "crontab" (der Befehl) kümmert sich dann um den Rest.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (6. Juni 2017 um 12:17)


  • Der Befehl erzeugt mit dem Editor "nano" mit root-Rechten eine Datei "crontab" im aktuellen Verzeichnis, das "-e" wird ignoriert, weil nano es nicht kennt. Das hat nichts mit dem Erstellen einer crontab zu tun.
    Einfach immer mal ein "sudo" vor einem Befehl zu packen, nur weil dieser evtl nicht funktioniert, ist keine gute Idee.

    Um einen Eintrag in der Benutzer-crontab anzulegen, gibst du als normaler Benutzer (pi meistens) ein:

    Code
    crontab -e


    Wenn der Editor sich öffnet, gibst du dort deine gewünschte Zeile ein und beendest diese mit einem abschliessenden Newline (return).
    Dann speicherst du das Ganze und verlässt den Editor. "crontab" (der Befehl) kümmert sich dann um den Rest.

    Oh man, ich glaube mir fehlen da noch ein paar basics.

    Also wenn ich nur
    [/code]
    crontab -e
    [/code]
    eingeb erscheint:
    no crontab for pi - using an empty one
    # Edit this file to introduce tasks to be run by cron.
    #
    # Each task to run has to be defined through a single line
    # indicating with different fields when the task will be run
    # and what command to run for the task
    #
    # To define the time you can provide concrete values for
    # minute (m), hour (h), day of month (dom), month (mon),
    # and day of week (dow) or use '*' in these fields (for 'any').#
    # Notice that tasks will be started based on the cron's system
    # daemon's notion of time and timezones.
    #
    # Output of the crontab jobs (including errors) is sent through
    # email to the user the crontab file belongs to (unless redirected).
    #
    # For example, you can run a backup of all your user accounts
    # at 5 a.m every week with:
    # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    #
    # For more information see the manual pages of crontab(5) and cron(8)
    #
    # m h dom mon dow command
    ~
    "/tmp/crontab.aGIKZ8/crontab" 22L, 888C

    Da kann ich dann nix editieren etc.

  • Also Ich habe nun folgendes eingegeben:


    mit dem Ergebniss:

    Code
    pi@raspberrypi:~ $ EDITOR=nano crontab -e
    no crontab for pi - using an empty one
    crontab: installing new crontab
    "/tmp/crontab.qNIBUJ/crontab":23: bad command
    errors in crontab file, can't install.
    Do you want to retry the same edit? (y/n)
  • Du hast jeweils ein Leerzeichen zwischen den * und am Ende der Datei eine Leerzeile eingefügt?

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (6. Juni 2017 um 12:38)

  • Code
    ***** /usr/local/bin/luefterskript.sh


    Hallo Lammi1988,

    da sind ein bisschen wenig Leerzeichen zwischen den Sternen, mach mal wenigstens eines hinter jeden... das wird sicher besser gehen... :D

    Gruß, STF


  • Du hast jeweils ein Leerzeichen zwischen den * und am Ende der Datei eine Leerzeile eingefügt?

    :thumbs1:
    Die Leerzeichen haben gefehlt!!!!

    Gut jetzt habe ich gespeichert.

    Code
    pi@raspberrypi:~ $ crontab -l
    no crontab for pi

    Ist das normal?

    Wie kann ich jetzt sehen ob das Skript auch jede Minute ausgeführt wird? Kann man sich das irgendwo anzeigen lassen?

    Schon mal vielen Dank für deine Mühe, echt super!!!


  • Wenn

    Code
    crontab -l


    "no crontab for pi" zurückgibt, hast du keine gültige crontab erzeugt.

    Mhh, was soll das denn heißen:

Jetzt mitmachen!

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