13 liens privés
Après avoir discuté avec plusieurs recruteurs spécialisés dans le recrutement des devs, j’ai pu établir une liste pour optimiser son CV en tant que développeur.
Problème d'espace disque sur le serveur
Description
Je reçois quotidiennement des mels depuis mon serveur pour me signaler la diminution de l'espace disponible sur le répertoire /
de /dev/root
du serveur.
Analyse
Connexion au serveur en root
Résultat d'exécution des commandes ...
❯ grep "root" /proc/cmdline
BOOT_IMAGE=/boot/bzImage-4.9.58-xxxx-std-ipv6-64 root=/dev/md1 ro rootdelay=10
❯ mount | grep "/dev/md1"
/dev/md1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
❯ cd /
❯ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 20G 17G 1,4G 93% /
devtmpfs 2,0G 0 2,0G 0% /dev
tmpfs 2,0G 68K 2,0G 1% /dev/shm
tmpfs 2,0G 213M 1,8G 11% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup
/dev/md3 439G 239G 178G 58% /home
tmpfs 393M 0 393M 0% /run/user/1000
❯ du -h -d 1 /
24K /nonexistent
4,0K /mnt
239G /home
23M /boot
185M /root
4,0K /srv
68K /dev
du: impossible d'accéder à '/sys/kernel/slab/L2TP/IPv6': Aucun fichier ou dossier de ce type
du: impossible d'accéder à '/sys/kernel/slab/L2TP/IP': Aucun fichier ou dossier de ce type
0 /sys
4,0K /lib64
759M /tmp
15M /bin
8,0K /media
2,0G /opt
213M /run
du: impossible d'accéder à '/proc/4287/task/4287/fd/3': Aucun fichier ou dossier de ce type
du: impossible d'accéder à '/proc/4287/task/4287/fdinfo/3': Aucun fichier ou dossier de ce type
du: impossible d'accéder à '/proc/4287/fd/4': Aucun fichier ou dossier de ce type
du: impossible d'accéder à '/proc/4287/fdinfo/4': Aucun fichier ou dossier de ce type
du: impossible d'accéder à '/proc/4370': Aucun fichier ou dossier de ce type
0 /proc
23M /sbin
16K /lost+found
2,0G /usr
925M /etc
51M /lib
7,8G /var
256G /
Pour synthétiser :
/dev/root
"correspond à"/dev/mda1
et équivaut à/
/dev/mda3
héberge/home
Pour affiner le problème, j'installe rust
puis dutree
sur le serveur (voir [https://blog.shevarezo.fr/post/2018/06/13/dutree-outil-analyser-espace-disque]).
❯ dutree --exclude home -d1 / ─╯
Couldn't read IPv6 (NotFound)
Couldn't read IP (NotFound)
Couldn't read 13868 (NotFound)
[ / 24.07 GiB ]
├─ var │ ███████████████████████████████████████████████████████████████████████████│ 30% 7.44 GiB
├─ sys │ ███████████████████████████████████████████████████████████████████│ 27% 6.66 GiB
├─ swap_gitlab │ ███████████████████████████████│ 13% 3.17 GiB
├─ usr │ ███████████████████│ 8% 1.98 GiB
├─ opt │ ████████████████│ 7% 1.76 GiB
├─ root │ ██████████│ 4% 1.15 GiB
├─ etc │ ███████│ 3% 887.25 MiB
├─ tmp │ ██████│ 3% 755.80 MiB
├─ run │ █│ 0% 211.56 MiB
├─ lib │ │ 0% 49.30 MiB
├─ sbin │ │ 0% 22.00 MiB
├─ boot │ │ 0% 21.90 MiB
├─ bin │ │ 0% 14.07 MiB
├─ proc │ │ 0% 4.79 MiB
├─ dev │ │ 0% 87.80 KiB
├─ nonexistent │ │ 0% 16.31 KiB
├─ lost+found │ │ 0% 16.00 KiB
├─ media │ │ 0% 8.01 KiB
├─ lib64 │ │ 0% 4.03 KiB
├─ mnt │ │ 0% 4.00 KiB
├─ srv │ │ 0% 4.00 KiB
└─ .rnd │ │ 0% 1.00 KiB
Je vais dégager quelques applications du serveur. Ce sont celles dont je ne me sers pas. On va voir ce que ça donne.
- rss-bridge --> ok
- kanboard --> ok
- alltube --> ok
- blog ???
- diagramsnet --> ok
- phpmyadmin --> ok
- my-mind --> ok
Purge du dossier /tmp
❯ dutree -s /tmp ─╯
[ tmp 755.87 MiB ]
├─ tmp.c6YZAg7Z2H │ ███████████████████████████████████████████████████████████████████████████│ 98% 745.29 MiB
├─ tmp.rYLfDnmtWN │ │ 1% 10.39 MiB
└─ <aggregated> │ │ 0% 185.79 KiB
/home/admin_guillaume ······························································ root@principal 18:42:07 ─╮
❯ rm -rf /tmp/tmp* ─╯
/home/admin_guillaume ······························································ root@principal 18:42:57 ─╮
❯ dutree -s /tmp ─╯
[ tmp 166.58 KiB ]
└─ <aggregated> │ ███████████████████████████████████████████████████████████████████████████│ 97% 162.58 KiB
==> Gain de 750 Mo d'espace disque
Je gagne un peu de sursis ...
Retex : J'ai gagné < 12h ! Un noveau mel m'informe que :
[ERROR] L'espace de stockage / (sur lâappareil /dev/root) ne dispose que de 468 MiB (2%) espace restant (sur 18 GiB). Vous devriez vraiment envisager de nettoyer de lâespace !
❯ dutree --exclude home -s / ─╯
Couldn't read IPv6 (NotFound)
Couldn't read IP (NotFound)
Couldn't read 23525 (NotFound)
Couldn't read entry (InvalidInput)
Couldn't read entry (InvalidInput)
[ / 23.87 GiB ]
├─ var │ ███████████████████████████████████████████████████████████████████████████│ 35% 8.44 GiB
├─ sys │ ████████████████████████████████████████████████████████│ 26% 6.40 GiB
├─ swap_gitlab │ ███████████████████████████│ 13% 3.17 GiB
├─ usr │ ████████████████│ 7% 1.91 GiB
├─ opt │ ██████████████│ 7% 1.71 GiB
├─ root │ █████████│ 4% 1.15 GiB
├─ etc │ ██████│ 3% 817.93 MiB
├─ run │ │ 0% 209.15 MiB
├─ lib │ │ 0% 49.30 MiB
├─ sbin │ │ 0% 22.00 MiB
├─ boot │ │ 0% 21.90 MiB
├─ bin │ │ 0% 14.07 MiB
├─ proc │ │ 0% 4.04 MiB
└─ <aggregated> │ │ 0% 248.55 KiB
Constat : En une nuit, le répertoire /var
que j'avais un peu délesté hier pèse 1 Go de plus qu'avant mon intervention ...
Je décide de déqinstaller gitlab du serveur.
L’espace de stockage / (sur le périphérique /dev/root) a encore 9.8 GiB (54%) espace restant (sur 18 GiB) !
❯ dutree --exclude home -s / ─╯
Couldn't read IPv6 (NotFound)
Couldn't read IP (NotFound)
[ / 14.69 GiB ]
├─ sys │ ███████████████████████████████████████████████████████████████████████████│ 43% 6.40 GiB
├─ var │ ███████████████████████████████████████████████│ 27% 4.07 GiB
├─ usr │ █████████████████████│ 12% 1.91 GiB
├─ root │ ████████████│ 7% 1.15 GiB
├─ etc │ ████████│ 5% 817.60 MiB
├─ run │ █│ 1% 217.15 MiB
├─ opt │ │ 0% 51.93 MiB
├─ lib │ │ 0% 49.30 MiB
├─ sbin │ │ 0% 22.00 MiB
├─ boot │ │ 0% 21.90 MiB
├─ bin │ │ 0% 14.07 MiB
├─ proc │ │ 0% 3.13 MiB
└─ <aggregated> │ │ 0% 242.85 KiB
Merde ! Gitlab est un gouffre ! Je viens de gagner presque 10 Go dont 4 Go dans /var
...
Affaire réglée.
Le bon nommage des variables !
Problème de touches du clavier sous zsh ?
Aujourd'hui, je me démaquille devant mon fils de 4 ans, qui me demande ce que je fais. Je lui explique que j’enlève le maquillage de mon visage. Il hurle : "Ah non, surtout pas maman, tu va être moche après." VDM
4 erreurs parmi les plus courantes que l’on peut commettre en programmation C :
1 - Ne pas libérer la mémoire malloc allouée dynamiquement (ou la libérer plus d'une fois)
2 - Lire un tableau en dehors des limites
3 – Ne pas vérifier les résultats de malloc
4 – Utiliser void* pour les pointeurs génériques vers la mémoire
5 conseils pour éviter ces erreurs :
1 - Structurer les programmes de manière à ce que la propriété de mémoire reste claire
2 - Utiliser les options du compilateur C pour se prémunir des problèmes de mémoire
3 - Utiliser Cppcheck ou Valgrind pour analyser le code C afin de détecter les fuites de mémoire
4 - Automatiser la gestion de la mémoire C avec un ramasse-miettes
5 – Ne pas utiliser le C si un autre langage fait l'affaire
Il y’a quelques jours, j’ai passé mon premier entretien technique d’embauche, comme si je postulais pour un job. Et j’ai appliqué la méthode de Bob Bowman pour le préparer. Je te raconte tout ça dans cet article.