Archiv verlassen und diese Seite im Standarddesign anzeigen : Archivierungsscript für Log_Files !!!
hallo,
ich habe dieses kleine script geschrieben um , log_files zu archivieren/packen.. es funktioniert leider nicht. Ich habe keinen plan wieso !kann mir jemand weiterhelfen, der vielleicht schon mit solchen scripts arbeitet ?
#!/bin/sh
OLD_ACCESS_LOG=/pfad/logs/old/access_log. `date +%y%m%d-%H%M%S`
OLD_ERROR_LOG=/pfad/logs/old/error_log. `date +%y%m%d-%H%M%S`
mv /pfad/log/access_log. `echo $OLD_ACCESS_LOG`
mv /pfad/log/error_log. `echo $OLD_ERROR_LOG`
/bin/gzip $OLD_ACCESS_LOG
/bin/gzip $OLD_ERROR_LOG
Die Zeile
<pre>
mv /pfad/log/access_log. `echo $OLD_ACCESS_LOG`
</pre>
enthält meiner Meinung nach einen Fehler.
Ich nehme an, Du möchtest /pfad/log/access_log" verschieben, tatsächlich steht aber dahinter noch ein Punkt, sodass mv die Datei nicht findet (da es sie nicht gibt). Entferne den Punkt und es sollte klappen. Ach ja, die Kommandosubstitution bei dem mv-Aufrufen kannst Du Dir ersparen:
<pre>
mv /pfad/log/access_log $OLD_ACCESS_LOG
</pre>
Thomas
danke ! aber das ergebnis ist das gleiche :
./name: 010122-111514: command not found
./name: 010122-111514: command not found
mv: missing file argument
Try `mv --help' for more information.
mv: missing file argument
Try `mv --help' for more information.
und wenn ich -f oder -b mv hinzufüge ist auch keine änderung !
Hast Du die Kommandosubstitution entfernt? Sonst versucht die Bash, den Inhalt der Variablen auszuführen, was natürlich zu der Ausgabe "Command not found" führt!
Thomas
<pre>
mv /pfad/log/access_log $OLD_ACCESS_LOG`
mv /pfad/log/error_log $OLD_ERROR_LOG`
</pre>
Betrachte mal die letzten Zeichen auf den Zeilen. Dies bewirkt eine Kommandosubsitution!!! Entferne sie und es solle klappen.
Thomas
das war nur hier im beitrag ein druckfehler . im script sind die zeichen nicht vorhanden !
Setze an den Anfang des Scripts die Zeile
<pre>
set -x
</pre>
Damit wird jede Zeile nach der Expansion ausgegeben. Jetzt solltest Du erkennen, welche Zeile das Problem hervor ruft. Zum Debuggen in Shellskripten kannst Du auch mal in die Linuxfibel schauen, dort stehen zahlreiche Hinweise, wie man so einem Fehler auf die Schliche kommt.
Ich erkenne keinen Fehler im Skript; kann es aber leider auch nicht testen, da ich kein Linuxsystem bei der Hand habe.
Thomas
das ergebnis ist dann das :
++ date +%y%m%d-%H%M%S
+ OLD_ACCESS_LOG=/pfad/logs/old/access_log.
+ 010122-144747
./name: 010122-144747: command not found
++ date +%y%m%d-%H%M%S
+ OLD_ERROR_LOG=/pfad/logs/old/error_log.
+ 010122-144747
./name: 010122-144747: command not found
+ mv /pfad/log/access_log
mv: missing file argument
Try `mv --help' for more information.
+ mv /pfad/log/error_log
mv: missing file argument
Try `mv --help' for more information.
+ /bin/gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
+ /bin/gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
der scheint ein problem mit dem datum zu haben. aber das soll doch kein befehl sein. vielleicht ist was am aufbau falsch.
ziel des scriptes solll es sein :
nachdem der cronjob webalizer alle neuen zugriffe aus access_log rausgeholt hat, soll er die access_log quasi löschen ins verzeichnis old verschieben, dann packen. und das mit dem datum am ende !
Alles klar, Du hast ein Leerzeichen zwischen Dateinamen und der Kommandosubstitution:
<pre>
OLD_ACCESS_LOG=/pfad/logs/old/access_log.LEERZEICHEN`date +%y%m%d-%H%M%S`
</pre>
=> Entfernen!!!!!!!!!!!!!!!
Thomas
DANKE !!! es läuft !!!
nur noch eine kleine frage muss ich da eine neue access_log und error_log reinkopieren oder legt apache selber eine an sobald jemand drauf zugreift ?
Kommandosubstitution ? ich hab nichts entfernt ! ich vertstehe die frage nicht ganz !
#!/bin/sh
OLD_ACCESS_LOG=/pfad/logs/old/access_log. `date +%y%m%d-%H%M%S`
OLD_ERROR_LOG=/pfad/logs/old/error_log. `date +%y%m%d-%H%M%S`
mv /pfad/log/access_log $OLD_ACCESS_LOG`
mv /pfad/log/error_log $OLD_ERROR_LOG`
/bin/gzip $OLD_ACCESS_LOG
/bin/gzip $OLD_ERROR_LOG
das ist das script.
Keine Ahnung;(
Musst es eben austesten.
Thomas
netzmeister
23-01-2001, 09:01
Hallo,
Du mußt eine neue access_log anlegen. (Und error_log)
Von selber macht der apache das nicht. Wenn er keine Log dateien findet hängt er auch beim Neustart!
Eicke
[Dieser Beitrag wurde von netzmeister am 23. Januar 2001 editiert.]
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.