tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
lordnoxx
Beiträge: 105
Registriert: 25.05.2009 22:14:01

tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Beitrag von lordnoxx » 20.06.2011 23:05:02

Guten Abend.

Habe mittels debootstrap Debian Squeeze erfolgreich auf einer CF-Card installiert. Das Squeeze läuft damit nun schön auf meinem Alix 2d13.

Meine /etc/fstab

Code: Alles auswählen

# /etc/fstab: static file system information.
#
# <file system>                 <mount point>   <type>  <options>                       <dump>  <pass>
proc                            /proc           proc    defaults                        0       0

# /dev/sda1
LABEL=CF                      /               ext2    noatime,errors=remount-ro       0       1

tmpfs                           /tmp            tmpfs   defaults,noatime                0       0
tmpfs                           /var/tmp        tmpfs   defaults,noatime                0       0
tmpfs                           /var/log        tmpfs   defaults,noatime                0       0
tmpfs                           /var/run        tmpfs   defaults,noatime                0       0
tmpfs                           /var/lock       tmpfs   defaults,noatime                0       0

meine /etc/cronttab

Code: Alles auswählen

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Und meine /etc/logrotate.conf

Code: Alles auswählen


# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

# system-specific logs may be configured here

Ich möchte nun, dass alle logs im tmpfs wöchentlich in das Verzeichnis /home/log_backups geschrieben werden. Und zwar in gepackter Form.
Außerdem sollen in diesem Zuge dann auch die logs im tmpfs gelöscht werden, um so wieder den Platz im RAM frei zu machen.

Bin zwar schon n paar Jährchen mit Linux unterwegs, aber mit solchen Konfigurationen und dem personalisieren des Systems habe ich mich noch nie befassen müssen. Darum wende ich mich jetzt mit der Bitte um Mithilfe an euch.

Was muss ich wie machen, um das oben beschriebene zu erreichen?

Netten Gruß

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Beitrag von rendegast » 21.06.2011 17:24:55

tmpfs /var/run tmpfs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,noatime 0 0
wird in debian über
RAMRUN=yes
RAMLOCK=yes
in /etc/defaults/rcS gemacht.
------------------------------------------------------------



Du könntest mit einem Skript in /etc/cron.weekly/ einfach die schon gepackten Dateien in /var/log/ wegsichern.
Diese *.gz werden nur noch rotiert, daher gibt das keine Zugriffsprobleme,
Das System / die Dienste bleiben dabei online.


Nur die syslog-Dateien: Dessen Handles in /var/log/ feststellen

Code: Alles auswählen

lsof | grep /var/log | grep syslog
- den syslog beenden, dessen Dateien (und deren schon rotierte) wegsichern und löschen, syslog neu starten.


Etwas differenzierter, denn nicht alle Dienste verwenden den syslog:
Feststellen, welche Dienste auf /var/log/ zugreifen, zBsp. lsof oder ps:

Code: Alles auswählen

SERVICES_VAR_LOG=$( lsof | grep /var/log | awk '{print $1}' )
Diese Dienste der Reihe nach beenden, dabei auch Spezialfälle wie "nmbd/smbd"=="/etc/init.d/samba" beachten.
Idee für eine automatisch Stop-Sortierung durch insserv:
- einen neuen Hilfs-Runlevel erstellen und die entsprechenden Startskripte als K00* dorthin verlinken,
dann insserv auf diesen Runlevel anwenden
- Per 'runlevel' oder 'who -r' den Runlevel feststellen
- In den Hilfs-Runlevel wechseln (die Dienste werden beendet), /var/log/ wegpacken, /var/log/ leeren
(eventuell muß die Ordnerstruktur gesichert und neuangelegt werden, Resp. nur die Dateien löschen).
- Wieder in den ursprünglichen Runlevel wechseln, um die Dienste wieder zu starten.




Mindestens (r)syslog(-ng) kann auch gleich an einen remote-syslog ins Netzwerk loggen.
Es könnte auch webspace als /var/log/ gemounted werden.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

lordnoxx
Beiträge: 105
Registriert: 25.05.2009 22:14:01

Re: tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Beitrag von lordnoxx » 21.06.2011 22:21:01

uiuiuiuiui das ist aber ne Menge Holz die du mir da vorsetzt 8O :wink:

Das muss ich Stück für Stück genaustens studieren. Ich war ja nebenbei auch nicht ganz untätig, und habe mich etwas zu logrotate informiert.
Wäre es nicht auch mit dem parameter "olddir" in den logrotate Configs getan?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Beitrag von rendegast » 22.06.2011 06:31:40

Wäre es nicht auch mit dem parameter "olddir" in den logrotate Configs getan?
Betrifft ja nur den ersten, einfachsten Fall.
Wäre eine Änderung der ursprünglichen Konfig-Dateien,
ich versuche sowas zumeist zu vermeiden, insbesondere solche, in die ich nicht oft hineinsehe.
(-> zBsp. spätere Distributions-Upgrades)
Und ob Du die *.gz und *.1 aus /var/log/ oder einem anderen Verzeichnis entfernst ist Jacke wie Hose.

Wenn /var/log ja schon ein tmpfs ist, wohin willst Du die old-Dateien verschieben lassen?
Auf die CF-Card wolltest Du doch vermeiden?
Und ein nicht ständig verfügbarer Speicherort wie ein backup-USBstick könnte die Rotation sogar stören.



Nebenbei,
/var/log/ belegt bei mir ~ 48MB, davon die *.1 ~ 4MB, und alle *.gz ~ 2MB.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

lordnoxx
Beiträge: 105
Registriert: 25.05.2009 22:14:01

Re: tmpfs, cronttab und logrotate: Bitte um Hilfestellung

Beitrag von lordnoxx » 22.06.2011 10:05:01

Wenn /var/log ja schon ein tmpfs ist, wohin willst Du die old-Dateien verschieben lassen?
Auf die CF-Card wolltest Du doch vermeiden?
Und ein nicht ständig verfügbarer Speicherort wie ein backup-USBstick könnte die Rotation sogar stören.
Hallo und danke für deine Antwort.
Doch ich möchte durchaus die old-Dateien auf die CF-Card schieben. Halt eben nur einmal in der Woche.
In der zweiten Woche sollen dann aber die bereits vorhandenen old-Dateien im Backupverzeichnis einfach überschrieben werden.

Aber auch deine Idee mit dem Skript in /etc/cron.weekly gefällt mir gut.

Antworten