Je ne sais pas si les versions ultérieures le font, mais après avoir fait des recherches supplémentaires, j'ai découvert que les caractères génériques Shell sont pris en charge. Les deux *
(correspond à plusieurs caractères) et ?
(correspondre à un seul caractère) peuvent être combinés pour correspondre à des fichiers spécifiques.
À titre d'exemple, voici des motifs qui correspondent à votre cas d'utilisation ainsi que le reste d'un fichier qui pourrait se trouver à l'adresse suivante /etc/logrotate.d/process
/path/to/my/logfiles/process.????.????????.log
/path/to/my/logfiles/process.????.log
{
# Look for previously matched log files and rotate daily if found
daily
# use date as a suffix of the rotated file
dateext
# Compress log file, optional if the files are small enough
compress
# Allow for a log file pattern to NOT match in order to support both
# filename formats
missingok
# Do not create replacement log files, the application will do that
nocreate
# Keep 30 days worth of rotated logs
maxage 30
}
Cependant, si vous avez l'intention de process
pour être un caractère de remplacement pour un identifiant de processus réel, alors je pense que vous pouvez vous en sortir en utilisant un caractère de remplacement à la place de l'identifiant de processus comme suit :
/path/to/my/logfiles/*.????.????????.log
/path/to/my/logfiles/*.????.log
{
...
}
J'espère que cela vous aidera. Moi aussi, j'ai cherché une approche regex qui fonctionnerait et j'ai finalement décidé d'utiliser les jokers Shell au lieu de ce qui me semblait être des solutions réalisables, mais plus complexes.
Un exemple :
En cherchant une solution regex, j'ai trouvé un article de blog intitulé " Exclusion des fichiers des correspondances globales de logrotate " qui a fourni cette solution :
/var/log/upstart/*.log {
daily
missingok
rotate 7
compress
notifempty
nocreate
nosharedscripts
prerotate
bash -c "[[ ! $1 =~ testprogram ]]"
endscript
}
J'ai fini par retirer deux éléments de cet exemple et j'ai légèrement modifié la correspondance. Dans ma situation, je voulais faire pivoter tous les fichiers d'un répertoire sauf pour certains fichiers d'entrée qui ont un .inp
extension.
C'est ce que j'ai trouvé :
# Force the prerotate "script" below to be run on each individual file
# in order to verify that it isn't an unprocessed input file
nosharedscripts
# Skip rotating any unprocessed input files (*.inp extension)
prerotate
bash -c "[[ ! $1 =~ \.inp$ ]]"
endscript
Selon logrotate -d /etc/logrotate.d/myfilename
cela semble fonctionner. Cependant, comme je l'ai mentionné, j'ai opté pour l'approche des jokers Shell car elle semblait plus facile à maintenir pour quelqu'un qui viendrait derrière moi.