La strings
commande se comporte bizarrement, apparemment, elle n'arrête pas d'écrire dans un fichier même si le lecteur manque d'espace. Ou peut-être que je manque quelque chose?
Je lance ce qui suit:
# strings /dev/urandom > random.txt
cela a continué à fonctionner et ne s'est pas arrêté même après avoir rempli le disque (un flash usb normal).
puis pour être plus rapide, j'ai créé un disque virtuel et réessayé la même commande. cela ne s'est pas arrêté non plus.
Je comprends que ce urandom
n'est pas un fichier normal et que strings
la sortie de est également redirigée, mais dans les deux cas ci-dessus, la cat
commande a signalé l'erreur lorsqu'il n'y avait plus d'espace.
# cat /dev/urandom > random.txt
cat: write error: No space left on device
- Est-ce le comportement normal des chaînes? Si oui, pourquoi?
- Où sont écrites les données après qu'il ne reste plus d'espace?
strace strings /dev/urandom > /dev/full
strings
implémentation de GNU binutils. Je parlais de lastrace
commande.Réponses:
Si GNU
cat
ne peut pas écrire ce qu'il a lu, il se fermera avec une erreur :GNU
strings
, d'autre part, ne se soucie pas s'il a réussi à écrire avec succès:Donc toutes ces écritures échouent, mais se
strings
poursuivent joyeusement, jusqu'à ce qu'elles atteignent la fin de l'entrée, ce qui ne sera jamais.la source
strings
.