Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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.

Geschrieben

Okay. Aber könnte ich auch definieren, dass nur *.log Dateien gelöscht werden ? Nicht das aus versehen andere DAtein die älter als 15Tage sind mit gelöscht werden .

Geschrieben

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 ?

Geschrieben
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

Geschrieben
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.)

Geschrieben

wenn ich

00 17 * * * find /var/log/tomcat -type f -mtime +30 -name "*.log" | xargs rm
ausführen lasse bekomme ich

rm: missing operand

Try `rm --help' for more information.

Versteh ich nicht... wenn ich den befehl normal eingebe funktioniert der.

Geschrieben

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

Geschrieben
Mir erschließt sich das überhaupt nicht, warum Du hier selbst Dir etwas zusammen baust, dass Du mit logrotate und klogd komplett fertig hast

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

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

Geschrieben
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?

Geschrieben
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 ; ?

Geschrieben
Der Befehl "find" bietet selbst die Option "-delete" an. Einfach hinten mit dranhängen. Dann brauchst du rm garnicht zu benutzen.

laut

man find

gibt es keinen -delete operator

Geschrieben

Du hättest ein bisschen weiter unten im Manual schauen müssen ;-)

ACTIONS

-delete

Delete files; true if removal succeeded. If the removal failed, an error message is issued. Use of this action automatically turns on the '-depth' option.

Geschrieben

  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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...