GNU/Linux >> Tutoriels Linux >  >> Linux

Commande pour nettoyer les anciens fichiers journaux ?

J'essayais d'automatiser un nettoyage automatique de mon système Ubuntu, avec Cron Jobs

J'ai essayé de simplifier ceci :

sudo find /var/log -type f -name "*.1.gz" -delete
sudo find /var/log -type f -name "*.2.gz" -delete
sudo find /var/log -type f -name "*.3.gz" -delete
sudo find /var/log -type f -name "*.4.gz" -delete
,etc...

dans une commande comme celle-ci ci-dessous mais ne fonctionne pas, probablement parce que je ne sais pas…

for i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"

J'en ai essayé des similaires mais ça n'a pas marché aussi... :

$i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"
i=[^0-9]; sudo find /var/log -type f -name "*.$i.gz"
i=[^0-9]+$; sudo find /var/log -type f -name "*.$i.gz"

Je ne vois aucune sortie avec ces quatre derniers… et quelqu'un produit des erreurs…

Alors, quelle est la bonne commande/syntaxe ?
Et d'autres idées pour garder mon "mini" serveur propre ?

Autre question :
Si j'exécute sudo find / -type f -name "*.7.gz"
apparaîtra celui-ci :
"/usr/share/doc/libruby1.9.1/NEWS-1.8.7.gz"

Je peux résoudre avec ceci :

si je lance :sudo find / -type f -name "*log.7.gz"
MAIS je vais probablement sauter ceux avec *error.(0-9).gz extension et bien d'autres…

Une idée pour nettoyer les anciens journaux sous / sans trouver/supprimer comme ceux-ci :
"/usr/share/doc/libruby1.9.1/NEWS-1.8.7.gz"

MODIFIER

dans mon /etc/logrotate.d sont :

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
                if /etc/init.d/apache2 status > /dev/null ; then 
                    /etc/init.d/apache2 reload > /dev/null; 
                fi;
    endscript
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then 
            run-parts /etc/logrotate.d/httpd-prerotate; 
        fi; 
    endscript
}
/var/log/apport.log {
       daily
       rotate 7
       delaycompress
       compress
       notifempty
       missingok
}

/var/log/apt/term.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

/var/log/apt/history.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

/var/log/aptitude {
  rotate 6
  monthly
  compress
  missingok
  notifempty
}
/var/log/cups/*log {
    daily
    missingok
    rotate 7
    sharedscripts
    prerotate
        if [ -e /var/run/cups/cupsd.pid ]; then
            invoke-rc.d --quiet cups stop > /dev/null
            touch /var/run/cups/cupsd.stopped
        fi
    endscript
    postrotate
        if [ -e /var/run/cups/cupsd.stopped ]; then
            rm /var/run/cups/cupsd.stopped
            invoke-rc.d --quiet cups start > /dev/null
            sleep 10
        fi
    endscript
    compress
    notifempty
    create
}
/var/log/dpkg.log {
    monthly
    rotate 12
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
}
/var/log/alternatives.log {
    monthly
    rotate 12
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
}
# - I put everything in one block and added sharedscripts, so that mysql gets 
#   flush-logs'd only once.
#   Else the binary logs would automatically increase by n times every day.
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/error.log {
    daily
    rotate 7
    missingok
    create 640 mysql adm
    compress
    sharedscripts
    postrotate
        test -x /usr/bin/mysqladmin || exit 0
        # If this fails, check debian.conf! 
        MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
        if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
          # Really no mysqld or rather a missing debian-sys-maint user?
          # If this occurs and is not a error please report a bug.
          #if ps cax | grep -q mysqld; then
          if killall -q -s0 -umysql mysqld; then
            exit 1
          fi 
        else
          $MYADMIN flush-logs
        fi
    endscript
}
/var/log/pm-suspend.log /var/log/pm-powersave.log {
       monthly
       rotate 4
       delaycompress
       compress
       notifempty
       missingok
}
/var/log/ppp-connect-errors {
    weekly
    rotate 4
    missingok
    notifempty
    compress
    nocreate
}

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}
/var/log/speech-dispatcher/speech-dispatcher.log /var/log/speech-dispatcher/speech-dispatcher-protocol.log {
  daily
  compress
  missingok
  sharedscripts
  rotate 7
  postrotate
    /etc/init.d/speech-dispatcher reload >/dev/null
  endscript
}

/var/log/speech-dispatcher/debug-epos-generic /var/log/speech-dispatcher/debug-festival /var/log/speech-dispatcher/debug-flite {
  daily
  compress
  missingok
  sharedscripts
  rotate 2
  postrotate
    /etc/init.d/speech-dispatcher reload >/dev/null
  endscript
}
/var/log/ufw.log
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        invoke-rc.d rsyslog reload >/dev/null 2>&1 || true
    endscript
}
/var/log/unattended-upgrades/unattended-upgrades.log 
/var/log/unattended-upgrades/unattended-upgrades-shutdown.log
{
  rotate 6
  monthly
  compress
  missingok
  notifempty
}
/var/log/upstart/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
    nocreate
}
/var/log/vsftpd.log
{
    create 640 root adm

    # ftpd doesn't handle SIGHUP properly
    missingok
    notifempty
    rotate 4
    weekly
}

et dans /etc/logrotate.conf :

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

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

# 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

Puis-je configurer jusqu'à 100 000 rotations de 3 tous les journaux par exemple ? Comment? et combien de journaux dureront au minimum avec cette configuration ?

En relation :Comment supprimer les entrées en double dans la boîte de dialogue "Ouvrir avec" Nautilus ?

Réponse acceptée :

Pas besoin d'utiliser une boucle for ici, vous pouvez simplement utiliser find :

sudo find /var/log/ -type f -regex '.*.[0-9]+.gz$' -delete

Cependant, comme il a été suggéré, consultez la page de manuel de logrotate pour savoir comment réduire le nombre de fichiers.


Linux
  1. Supprimer les anciens fichiers journaux à l'exception du dernier (trié par ordre alphanumérique) ?

  2. Fichiers journaux Linux

  3. Commande Linux ls - Lister les fichiers

  4. Options de la commande grub-mkconfig

  5. Commande mcopy sous Linux

Commande Cp sous Linux (Copier des fichiers)

Commande Rm sous Linux

Commande lsof sous Linux (10 exemples)

Comment afficher et surveiller les fichiers journaux dans CentOS 8

Commande ls sous Linux/UNIX

Comment nettoyer les fichiers inutiles