Zum Inhalt springen

cronjob anlegen


Creek2k3

Empfohlene Beiträge

Moin,

ich wollte einen cronjob anlegen, der .log Files in einem Verzeichnis X löscht.

Das Ganze soll zur Mitte des Monats passieren. um 23:30Uhr.

Ich habe mir mal diesen Befehl zusammen gelegt.

30 23 15 * * find /data/temp -type f -mtime +15 -exec{} \;

Bei dem Befehl bin ich mir jetzt nicht ganz sicher. Weil das Script nur .log Dateien löschen soll, die älter sind als 15 Tage. keine Aktuellen Dateien.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sollte so funktionieren. Gerade lokal getestet. Wenn das viele Log-Dateien sind, könntest du anstelle von exec das xargs verwenden.

30 23 15 * * find /data/temp -type f -mtime +15 | xargs rm

Das hat den (geringen) Vorteil, dass nicht bei jedem Löschvorgang einer neuer Prozess erzeugt wird, sondern einmalig rm mit einer endlichen Anzahl von Dateinamen aufgerufen wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, mittels "-name":


30 23 15 * * find /data/temp -type f -mtime +15 -name "*.log" | xargs rm

Wenn du logrotate nutzt hast du eine Masse an Vorteilen (Komprimierung, Benachrichtigung, ...) gegenüber des jetzigen Befehls.

http://schlayer.org/logrotate.html

http://www.debian-administration.org/articles/117

Bearbeitet von lupo49
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, mittels "-name":


30 23 15 * * find /data/temp -type f -mtime +15 -name "*.log" | xargs rm

Wenn du logrotate nutzt hast du eine Masse an Vorteilen (Komprimierung, Benachrichtigung, ...) gegenüber des jetzigen Befehls.

Kurzanleitung zu logrotate

Creating logfile archives with logrotate

Ja super Danke, werd ich gleich mal testen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay klappt alles perfekt :)

Ich will nun das ganze Täglich ausführen lassen. Also bietet es sich ja an das "Script" in "/etc/cron.daily/" abzulegen. Muss ich da was beachten ? Oder schreib ich den Befehl einfach in eine Datei, die ich dort ablege ?

Du könntest ganz einfach den gewünschten cronjob mit "crontab -e" anlegen.

#min h dom m dow cmd

30 20 * * * <Befehl>

Somit würde an jedem Tag, in jedem Monat, um 20:30 Uhr dein Befehl ausgeführt werden.

Abspeichern kannst du dann die eingaben mit den üblichen vi-Befehlen -> ESC + :wq

Lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss ich da was beachten ? Oder schreib ich den Befehl einfach in eine Datei, die ich dort ablege ?

Wenn du das Skript in /etc/cron.daily/ ablegst, dann wird es halt einmalig pro Tag ausgeführt und nicht um 23:30 Uhr. (Die genaue Uhrzeit des Ausführens steht in der /etc/crontab.)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ohne das jetzt mal nachzustellen. Vielleicht ein Rechteproblem? Standardmäßig sind die meisten Dateien in /var/log/ ja auf den Benutzer root zugelassen. Hast du den Befehl manuell als root getestet, oder normaler user?

Wenn als root, dann den cronjob auch als root anlegen, dann sollte es klappen, denke ich.

Lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

es geht nicht um linux .logs sondern um log files von Thrid-Party-Software...

Ich weiß nicht wie das da mit logrotate ist...

Dann wäre es vielleicht zuerst sinnvoll, wenn Du Dir logrotate anschaust, denn logrotate beschränkt sich nicht auf Linux-Logs, sondern auf Dateien, die Du selbst angeben kannst.

So wie Du es schreibst hast Du Dir logrotate nicht wirklich angeschaut, sondern favorisierst immer noch Deine Lösung. Warum fragst Du dann überhaupt, wenn Du eh Deine Lösung beibehältst?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ohne das jetzt mal nachzustellen. Vielleicht ein Rechteproblem? Standardmäßig sind die meisten Dateien in /var/log/ ja auf den Benutzer root zugelassen. Hast du den Befehl manuell als root getestet, oder normaler user?

Wenn als root, dann den cronjob auch als root anlegen, dann sollte es klappen, denke ich.

Lg

Ich versteh´s nicht... Warum läuft der Befehl mit normaler Eingabe aber nicht über crontab -e ???


rm: too few arguments

Try `rm --help' for more information.

in der Crontab datei steht:
00 14 * * * find /var/log/xxx -type f -mtime +5 -name "*.log" | xargs rm

muss da hinter dem "rm" noch was stehen? muss ich das abschließen mit nem ; ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  Aktionen:

       -exec Kommando;

              führt das Kommando aus; die Aktion ist wahr, wenn das Kommando einen Status von Null liefert; alle auf den

              Kommandonamen folgenden Argumente bis zu einem Semikolon ; werden als Kommandozeilenargumente für das Kom-

              mando interpretiert; das Semikolon kann nicht weggelassen werden, und es muà durch mindestens ein  Whites-

              pace  von  der  letzen  Option  getrennt  werden;  die  Konstruktion {} wird durch den Pfadnamen der Datei

              ersetzt; die Klammern und das Semikolon müssen in der Kommandozeile für find quotiert  werden,  damit  sie

              nicht von der Shell bearbeitet werden


       -fprint Ausgabedatei

              schreibt  den  Pfadnamen  der getesteten Datei in die Ausgabedatei; wenn die Ausgabedatei nicht existiert,

              wird sie erzeugt, sonst wird sie erweitert; die Standardausgabe und die Standardfehlerausgabe  werden  als

              /dev/stdout und /dev/stderr angesprochen


       -fprint0 Ausgabedatei

              schreibt  den  Namen  der getesteten Datei in die Ausgabedatei und schlieÃt die Ausgabe mit einem Nullbyte

              ab, wie -print0


       -fprintf Ausgabedatei Format

              schreibt den Namen der getesteten Datei in die Ausgabedatei und benutzt dabei das Format mit Sonderzeichen

              wie bei printf


       -ok Kommando;

              wie  -exec,  vor  der Ausführung des Kommandos wird aber noch eine Bestätigung erwartet; nur eine Eingabe,

              die mit einem B oder einem y beginnt, führt zur Ausführung des Kommandos


       -print gibt den vollständigen Pfadnamen der getesteten Datei auf die Standardausgabe


       -print0

              gibt den Pfadnamen der getesteten Datei, von einem Nullbyte abgeschlossen, auf  die  Standardausgabe;  auf

              diese Weise können auch Pfadnamen korrekt weiterverarbeitet werden, die ein Zeilenende enthalten


       -printf Format

              gibt für die getestete Datei die Zeichenkette Format auf der Standardausgabe aus; Format kann verschiedene

              Sonderzeichen und Platzhalter enthalten, die von find bearbeitet werden:


              \a     Alarmton

das steht bei mir :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...