.log Dateien in Unterordnern leeren

Bash, Shell, PHP, Python, Perl, CGI
Luk
Posts: 14
Joined: 2010-08-18 00:08

.log Dateien in Unterordnern leeren

Post by Luk »

Hallo Leute!

Ich habe eine kurze und knappe Frage:

Wie lautet der Befehl um alle Logdateien rekursiv in Unterordnern zu leeren?

Habe folgendes probiert:

Code: Select all

find ./ -name .log -type d -exec cat /dev/null > {} \;
Da ich mich mit den Befehlen nicht ganz auskenne, weiß ich auch nicht woran es hakt :ymblushing:

Würde mich sehr über eine Antwort freuen.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Ungetestet:

Code: Select all

find /path -type f -name \*.log -print0 | xargs -0 : >
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Hallo!

Danke für den Vorschlag :)

Funktioniert leider noch nicht ganz^^

Code: Select all

gamecreate@78:~$ find /gameserver/gamecreate -type f -name \*.log -print0 | xargs -0 : >
-sh: syntax error near unexpected token `newline'
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Tested

Code: Select all

bash -c 'for file in `find ./test -type f -name \*.log -print0 | xargs -0 ls` ; do : > $file ; done'
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: .log Dateien in Unterordnern leeren

Post by Roger Wilco »

Falls auf deinem System logrotate installiert ist, wuerde ich einfach das fuer das Rotieren und Leeren der Logdateien benutzen.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Danke für das Script Joe User!

@ Roger Wilco: Werde ich mir demnächst anschauen. Danke für die schnelle Hilfe :)
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Dein -exec fällt aber bei Leerzeichen auf die Schnauze ;)
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: .log Dateien in Unterordnern leeren

Post by Roger Wilco »

matzewe01 wrote:?!? Stimmt. Aber warum...
Weil {} von `find` durch den literalen Dateinamen ohne Escaping und ohne umfassende Single oder Double Quotes ersetzt wird.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Lass das -exec mal komplett weg, dann wirds deutlicher.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Hallöchen, ich nochmal :)

Anscheinend funktioniert der Befehl noch nicht 100%ig. Einige Logdateien leert er, andere nicht.

Er geht ja in alle Unterordner rein und sucht nach *.log Dateien. Leider leert er beispielsweise nicht:

Code: Select all

ls -l
-rw-r--r-- 1 gamecreate gamecreate 122519552 2010-09-07 19:02 console_mp.log
Weiß jemand eine Lösung?
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Welches Script verwendest Du denn nun? Welcher User führt das Script aus?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Ich verwende dieses Script:
Joe User wrote:Tested

Code: Select all

bash -c 'for file in `find ./test -type f -name \*.log -print0 | xargs -0 ls` ; do : > $file ; done'
Der ausführende Benutzer ist "gamecreate".

Komischerweise funktionierts mit root....... Hatte ich noch nicht getestet als ich den Beitrag schrieb. Eigentlich müsste es auch mit gamecreate gehen, oder nicht? Schließlich gehört gamecreate alles in den Ordnern.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Kannst Du bitte Dein komplettes Script und ein ungekürztes "ls -alh" aus dem Verzeichnis einer ungeleerten Datei posten, danke. Führst Du das Script manuell oder per Cron aus (genauer Aufruf bitte)?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Der Befehl, den ich von Zeit zu Zeit mal manuell eingebe:

Code: Select all

gamecreate@78:~$ bash -c 'for file in `find ./* -type f -name \*.log -print0 | xargs -0 ls` ; do : > $file ; done'
Ich hab den Befehl in diesem Ordner eingegeben:

Code: Select all

/gameserver/gamecreate
Nach Eingabe des Befehls sieht so beispielsweise einer der Ordner aus, in denen solche Logdateien enthalten sind:

Code: Select all

gamecreate@78:/gameserver/gamecreate/GameCreate-9666/callofduty4/mods/reignoftheundead$ ls -alh
total 21M
drwxr-xr-x 2 gamecreate gamecreate 4.0K 2010-09-07 19:12 .
drwxr-xr-x 4 gamecreate gamecreate 4.0K 2010-05-03 00:25 ..
-rw-r--r-- 1 gamecreate gamecreate  393 2010-09-07 19:05 ban.txt
-rw-r--r-- 1 gamecreate gamecreate  42M 2010-09-08 15:58 console_mp.log
-rw-r--r-- 1 gamecreate gamecreate    0 2010-09-08 15:58 games_mp.log
-rw-r--r-- 1 gamecreate gamecreate   90 2010-05-06 21:40 herb.cfg
-rw-r--r-- 1 gamecreate gamecreate 8.5M 2010-05-21 13:37 mod.ff
-rw-r--r-- 1 gamecreate gamecreate 6.6K 2010-08-03 18:24 rotu.cfg
-rw-r--r-- 1 gamecreate gamecreate  12K 2010-08-15 22:39 rotu_svr_hotfix.iwd
-rw-r--r-- 1 gamecreate gamecreate 477K 2010-05-03 00:18 skins.iwd
-rw-r--r-- 1 gamecreate gamecreate  156 2010-07-25 19:51 startup.cfg
-rw-r--r-- 1 gamecreate gamecreate  11M 2010-05-03 00:18 zombiesurvival.iwd
-rw-r--r-- 1 gamecreate gamecreate 1.2M 2010-06-01 18:08 zz_luks_edit_2.iwd
-rw-r--r-- 1 gamecreate gamecreate 109K 2010-06-07 07:06 zz_luks_edit_2_update.iwd
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Wenn Du ohnehin die BASH als Shell verwendest, kannst Du einfach Folgendes direkt in dem Verzeichnis verwenden:

Code: Select all

for file in `find . -type f -name \*.log -print0 | xargs -0 ls` ; do : > ${file} ; done
Last edited by Joe User on 2010-09-08 16:21, edited 1 time in total.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Wenn Du ausschliessen kannst, dass die Verzeichnisse und Dateien keine Leer/Sonderzeichen enthalten, dann reicht so gar:

Code: Select all

for file in `find . -type f -name \*.log` ; do : > ${file} ; done
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Also ich hab nun alle Befehle durchprobiert, bei keinem scheint die "console_mp.log" geleert zu werden.

Habe sicherheitshalber mal

Code: Select all

chown -R gamecreate.gamecreate /gameserver/
gemacht, um noch einmal die Dateirechte zu checken...

Die games_mp.log wird allerdings geleert........ Ich verstehe nicht, warum das nicht geht. Kann es sein, dass es nicht geht, da ein Programm (in dem Fall ein Gameserver) auf die Datei zugreift? :((
Last edited by Luk on 2010-09-08 18:42, edited 1 time in total.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11173
Joined: 2003-02-27 01:00
Location: Hamburg

Re: .log Dateien in Unterordnern leeren

Post by Joe User »

Luk wrote:Kann es sein, dass es nicht geht, da ein Programm (in dem Fall ein Gameserver) auf die Datei zugreift? :((
Ja, das kann sein, daher solltest Du den Gameserver kurz stoppen oder nach dem Leeren des Log "reloaden".
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

Okay, dann werde ich das beim wöchentlichen Backup machen :)

Danke für die schnelle Hilfe :)
Luk
Posts: 14
Joined: 2010-08-18 00:08

Re: .log Dateien in Unterordnern leeren

Post by Luk »

matzewe01 wrote:Blöde Frage zwischendurch, warum eigentlich nicht gleich logrotate?
Weil ich keine Ahnung hab, wie das funktioniert :-|

Ich werd' mich mal einlesen.....
Last edited by Luk on 2010-09-09 17:18, edited 1 time in total.