Pour ceux qui installent manuellement les versions du noyau, le /boot
peut grossir avec le temps. J'aimerais trouver les versions du noyau qui n'ont pas été démarrées depuis longtemps en tant que candidats à la suppression.
Pour faciliter ce projet, je devrais savoir quand chaque noyau a été démarré pour la dernière fois. J'ai vu un Q & A pour trouver des fichiers plus anciens qu'une certaine date en utilisant le atime
. Cependant, ce Q&R est allé chercher des fichiers de plus de x jours. Je recherche tous les fichiers et je veux connaître la dernière heure d'accès.
Via le script bash, comment déterminer le dernier temps d'accès d'un fichier donné?
Lorsque grub monte le noyau, il est en mode ro
(lecture seule) et la dernière heure d'accès n'est pas mise à jour.
Si vous exécutez update-initramfs -u -k all
le fichier initrd.img
la dernière heure d'accès est mise à jour pour tous les noyaux même s'ils n'ont pas été démarrés aujourd'hui.
Lors de l'installation d'un nouveau noyau, tous les fichiers de la version précédente du noyau system.map-w.x.yy-zzz
la dernière heure d'accès est mise à jour même si elle n'a pas été démarrée aujourd'hui.
Pour enregistrer correctement quand une version du noyau a VRAIMENT démarré, nous devons touch
le fichier vmlinuz-w.x.yy-zzz
. En utilisant les pouvoirs Sudo, créez un fichier comme celui-ci dans /etc/cron.d/
:
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root touch "/boot/vmlinuz-"`uname -r`
Maintenant, lors de la liste des fichiers dans /boot
en utilisant la réponse de muru:
trouver/boot/vm * -printf "% Ac% p\n"
Thu 21 Jul 2016 05:02:48 AM MDT /boot/vmlinuz-3.13.0-92-generic
Wed 26 Oct 2016 05:10:08 PM MDT /boot/vmlinuz-3.2.0-113-generic
Sat 15 Oct 2016 10:45:41 AM MDT /boot/vmlinuz-4.4.0-43-generic
Thu 20 Oct 2016 06:09:00 PM MDT /boot/vmlinuz-4.4.0-45-generic
Sat 06 Aug 2016 09:32:02 PM MDT /boot/vmlinuz-4.6.3-040603-generic
Sun 21 Aug 2016 12:59:04 PM MDT /boot/vmlinuz-4.7.1-040701-generic
Fri 26 Aug 2016 04:51:04 AM MDT /boot/vmlinuz-4.7.2-040702-generic
Thu 08 Sep 2016 06:46:52 PM MDT /boot/vmlinuz-4.7.3-040703-generic
Sun 25 Sep 2016 07:25:46 PM MDT /boot/vmlinuz-4.7.5-040705-generic
Sat 08 Oct 2016 03:08:45 PM MDT /boot/vmlinuz-4.8.1-040801-generic
Sat 22 Oct 2016 08:16:44 AM MDT /boot/vmlinuz-4.8.4-040804-generic
Sun 30 Oct 2016 12:56:12 PM MDT /boot/vmlinuz-4.8.5-040805-generic
Avant d'installer un nouveau noyau, c'est une bonne idée de vérifier combien d'espace est disponible dans /boot
et/ou combien est déjà utilisé avec ces commandes:
rick@Dell:~$ df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdc3 30106300 20449376 8104556 72% /
────────────────────────────────────────────────────────────────
rick@Dell:~$ du /boot --max-depth 0 -h
565M /boot
Pour voir combien d'espace sera économisé en supprimant un noyau précédent spécifique, utilisez cette commande:
rick@Dell:~$ du /boot/*4.8.1* -h
1.4M /boot/abi-4.8.1-040801-generic
204K /boot/config-4.8.1-040801-generic
44M /boot/initrd.img-4.8.1-040801-generic
3.6M /boot/System.map-4.8.1-040801-generic
4.8M /boot/vmlinuz-4.8.1-040801-generic
Utilisez la commande stat
:
%x time of last access, human-readable
%X time of last access, seconds since Epoch
Donc:
stat -c %X /some/file
Ou avec find
:
find /some/path -printf "%A@ %p\n"
Puisque pour find
's -printf
:
%a File's last access time in the format returned by the C
`ctime' function.
%Ak File's last access time in the format specified by k,
which is either `@' or a directive for the C `strftime'
function. The possible values for k are listed below;
some of them might not be available on all systems, due
to differences in `strftime' between systems.
@ seconds since Jan. 1, 1970, 00:00 GMT, with
fractional part.
J'ai accepté la réponse de muru car elle montre correctement comment trouver la dernière heure d'accès à un fichier. Cependant, quand grub monte le noyau, il est en mode ro
en lecture seule donc la dernière heure d'accès n'est pas mise à jour.
De plus, lorsque vous exécutez update-initramfs -u -k all
le fichier initrd.img
est mis à jour avec l'heure actuelle pour tous les noyaux même s'il n'a pas été démarré aujourd'hui.
Lors de l'installation d'un nouveau noyau, tous les fichiers du noyau system.map-w.x.yy-zzz
sont accessibles même s'il n'a pas été démarré aujourd'hui.
Pour enregistrer correctement le dernier démarrage d'un noyau à l'aide des pouvoirs Sudo, créez un fichier comme celui-ci dans /etc/cron.d/
:
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root touch "/boot/vmlinuz-"`uname -r`
Maintenant, lors de la liste des fichiers dans /boot
en utilisant la réponse de muru vmlinuz-x.w.yy-zzz
s'affichera lors du dernier démarrage de ce noyau.