Crontab-Syntax auf Linux

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von animalchin, 03.06.2006.

  1. animalchin

    animalchin Thread Starter MacUser Mitglied

    Beiträge:
    4.793
    Zustimmungen:
    79
    Registriert seit:
    14.10.2003
    Hallo,

    ich weiß, das gehört wahrscheinlich nicht direkt zum UNIX-Bereich, aber hier sind sooo viele fähige Leute unterwegs, vielleicht kann mir einer helfen...:xsmile:

    Ich möchte auf meinem Linux-Server (EISfair) per Cronjob ein Ping in regelmäßigen Abständen losschicken, damit der Router nicht offline geht bzw. sich nach 24h-Zwangstrennung wieder einwählt (ich bin zwei Wochen in Urlaub und würde gerne meine Webcam abrufen).

    Es soll verhindert werden, dass irgendwelche Logfiles volllaufen und dadurch die Maschine abschmiert - ich habe im Netz folgende Einstellungs-Tipps für die Crontab gefunden:

    Zeitangabe: -*/2 * * * *

    Befehl: ping -c 1 www.rtl.de > /dev/null 2> /dev/null

    */2 heißt alle 2 Minuten, wenn ich das richtig verstehe, oder? Was macht denn das "-" bei -*/2? Beeinflusst das die Ausgabe?

    Wenn ich das Ping mit diesen Parametern abschicke, kommt keine Bildschirmausgabe und ich finde nichts in den Logs. Ist es so wirklich "still"?

    Danke schon mal,


    animalchin
     
  2. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Bei den Zeitangaben ist mir ein '-' nur im Zusammenhang mit Bereichen bekannt. Das Minus gehört da also nicht hin.

    Eine Bildschirmausgabe kommt bei Cronjobs so wie so nicht.
    Augaben werden entweder in Dateien geschrieben oder per Mail versendet, wenn man sie nicht (wie bei Deinem beispiel) umleitet.

    Die Umleitung von stdout und stderr kann man übrigens abkürzen:

    ping -c 1 www.rtl.de &> /dev/null

    ist mit Deinem Kommando identisch.

    Aber mal ne andere Frage:
    Was ist das für ein Router, der solche Kopfstände braucht?
     
  3. ratti

    ratti MacUser Mitglied

    Beiträge:
    1.515
    Zustimmungen:
    56
    Registriert seit:
    09.05.2004
    Erklärungen zur crontab erhältst du mit

    man 5 crontab

    (Da kommt was anderes als bei "man crontab").


    Was du da willst, erledigt aber eigentlich das Programm "logrotate".
    (Edit: Das bezog sich auf das Vollaufen der Logfiles, nicht auf das online-halten. Das erledigt eine Einstellung des pptpd, dann sind solche Klimmzüge nicht nötig. Achso: Und was hält RTL eigentlich davon, dass du sie dauernd anbimmeln willst???)

    Gruß,
    Jörg
     
  4. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Ich glaube das mit dem "Vollaufen der Logfiles" bezog sich auf die Ausgabeumlenkung. Aber Cronjobs schreiben Ihre Ausgabe nicht von selbst in irgendwelche logfiles. Was mit denen passiert steht in der von Dir aufgeführten manpage.

    Das macht periodic, wenn man das in der periodic.conf nicht anders einstellt.
    Da periodic früher von Cron aufgerufen wurde entstand wohl die Annahme, das Cronjobs ihre Ausgabe in logfiles schreiben. Problematisch sind die Ausgabedateien von periodic übrigens ohnehin nicht, da die bei jedem Aufuf überschrieben werden.
     
  5. animalchin

    animalchin Thread Starter MacUser Mitglied

    Beiträge:
    4.793
    Zustimmungen:
    79
    Registriert seit:
    14.10.2003
    maceis, ratti: Danke.

    @maceis: Ein fli4l - den ich mit
    "CRON_2_TIMES='0 4 * * *'
    CRON_2_COMMAND='fli4lctrl hangup pppoe; sleep 900; fli4lctrl dial pppoe'"
    ja recht einfach auflegen und wieder einwählen lassen könnte, wenn - ja wenn der Win-PC mit den config-Dateien drauf funktionieren würde.:rolleyes:
    SSH und telnet habe ich abgestellt, komme also nicht drauf.:mad:

    @ratti: Besser RTL als heise.de...:Pfeif:
    logrotate läuft schon stündlich als cronjob, ich war mir nur nicht sicher, ob das ausreicht.
    Wohin könnte ich denn "schadlos" pingen?


    animalchin
     
  6. animalchin

    animalchin Thread Starter MacUser Mitglied

    Beiträge:
    4.793
    Zustimmungen:
    79
    Registriert seit:
    14.10.2003
    Kann ich davon ausgehen, dass BSD und Linux sich in Crontab nicht unterscheiden? Mein EIS kennt anscheinend kein man - command not found.:confused:

    man 5 crontab auf dem Mac zeigt mir einigermaßen bekanntes, aber auch kein -*/2...


    animalchin
     
  7. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Den DNS Server Deines Providers.
    Der läuft immer und bekommt wenigstens Geld von Dir ;).
     
  8. animalchin

    animalchin Thread Starter MacUser Mitglied

    Beiträge:
    4.793
    Zustimmungen:
    79
    Registriert seit:
    14.10.2003
    Ah, sehr gut! :)
     
  9. ratti

    ratti MacUser Mitglied

    Beiträge:
    1.515
    Zustimmungen:
    56
    Registriert seit:
    09.05.2004
    Huch. Gibt's periodic auch unter Linux? Ne, oder?
    Er hat doch'n Linux Router...

    Es gibt mehrere Programme, die die aufgabe von cron übernehmen.
    Allein auf meinem Debian finde ich beim groben durchgucken cron, fcron, bcron, anachron,... Bei mir ist der default-cron installiert, der bei den meisten Linux-Distris genutzt wird, und laut manpage ist das der cron aus BSD.

    ...und selbst bei Derivaten würde ich erstmal davon ausgehen, dass die crontab kompatibel ist...

    Also: Ja. Kannst Du erstmal von ausgehen.


    Zwei Wichtigkeiten noch:
    1.
    Die Ausgabe von cronjobs landet per default in einer eMail an root.Kann man in der crontab ändern:
    MAILTO=ratti@example.com

    Das wirkt immer erst ab der Zeile, in der es steht. Man kann es also mehrfach verwenden.


    2.
    cronjobs werden in der Umgebung von cron ausgeführt, nicht in der Umgebung des Users. Üblicherweise ist daher der Pfad nicht gesetzt, sodass man sich fast die Haare ausreissen will, weil einfach Befehle wie "ping" nicht gefunden werden.
    ENTWEDER:
    - Du schreibst jedesmal den Pfad dazu, also "/bin/ping" oder "/usr/bin/host" und so weiter...
    ODER:
    - Du setzt den Pfad selbst:
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    Ich schicke mal meine crontab als Beispiel mit:

    Code:
    # DO NOT EDIT THIS FILE - edit the master and reinstall.
    # (/tmp/crontab.4nnKPV/crontab installed on Sun Apr 17 21:22:43 2005)
    # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    MAILTO=ratti@g3.local
    
    # Fetch font newsgroup
    0       0-23/2  *       *       *       /disk2/fontdownload/cron_get_nntp_fonts
    11      21      *       *       *       /disk2/_fontlinge_nightly/download.sh
    0       21      *       *       *       /disk3/Projects/upload_bookmarx.pl
    


    Aber um mal von deinem Gedankengebäude wegzukommen - Eigentlich sollte der pppd solche Aufgaben wie reconnect selbst übernehmen.
    Die einfachste Methode ist das pppd-downscript.

    Es gibt irgendwo in /etc/ppp/ einen Ordner oder eine Datei, in der man selbsr Befehle eintragen kann, die der pppd bei der Einwahl oder der Trennung ausführt. Jede Distri handhabt das anders - bei Debian muss ein ausführbares Script nach
    /etc/ppp/ip-down.d/
    gelegt werden und mit einer Ziffer im Namen anfangen (Damit die Scripte nach Reihenfolge ausgeführt werden).

    Man kann also einfach in diesen Ordner ein script namens "999wiedereinwahl" legen und sowas reinschreiben wie "ping -c 1 dns.example.com".

    Bei der Trennung führt der pppd dann dieses Script aus, was eine Wiedereinwahl erzwingt.


    Meines Wissens hat der pppd sogar selbst eine Wiedereinwahl-Option, dann braucht man überhaupt keine Handstände zu machen - allerdings habe ich die nicht mehr im Kopf, und seit ich aus Stromspargründen meinen Linux-Router durch einen normalen Router ersetzt habe, nutze ich das leider nicht mehr

    (Bei der Gelegenheit: Wer immer mit diesem Gedanken spielt - macht das bloß nicht! Die Qualität eines Linux-Routers ist deutlich besser als diese 40-Euro-Dinger, bei denen immer irgendwas hakt...)

    Gruß,
    Jörg
     
  10. Kryptaesthesie

    Kryptaesthesie MacUser Mitglied

    Beiträge:
    573
    Zustimmungen:
    6
    Registriert seit:
    17.05.2004
    Hallo.
    Ich möchte auch ein Shellscript auf meinem OS X Rechner laufen lassen.
    Bekomme halt auch so Mails in denen steht, das Progs wie wget nicht gefunden wurden.
    Ist der Pfad oben der passende für OS X, oder muss dieser angepasst werden?


    Danke schon mal.
    MfG Gerrit
     
Die Seite wird geladen...

Diese Seite empfehlen