Les effets problématiques incluent une résolution lente du nom d'hôte (à moins que le système d'exploitation ne convertisse d'une manière ou d'une autre la liste linéaire en une structure de recherche plus rapide ?) Et le potentiel d'une interaction surprenante avec le shell tab l'achèvement bien avant qu'une taille de fichier significative ne soit atteinte.
Par exemple! Si l'on place 500 000 entrées d'hôte dans /etc/hosts
# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts
pour la science, le nom d'hôte par défaut tab l'achèvement dans ZSH prend environ 25 secondes sur mon système pour renvoyer une invite d'achèvement (d'accord, c'est sur un ordinateur portable de 2008 avec un disque à 5 400 tr/min, mais quand même).
Je ne pense pas qu'il y ait une limite de taille en termes de nombre de lignes.
Avant DNS (qui a été mis en service en 1985), c'était ce fichier qui servait de seul moyen pour effectuer des recherches de nom d'hôte, donc je suppose que cela signifie que le fichier devrait pouvoir avoir des milliers ou au moins des centaines d'entrées à être en mesure de prendre en charge les nœuds Internet antérieurs à 1985 les mieux connectés.
Voici un exemple de 1985 (le format a quelque peu changé):http://jim.rees.org/apollo-archive/hosts.txt Ce fichier contient 1680 lignes dont 1325 sont des lignes hôtes. Les 355 lignes restantes sont vides, commentaires, réseaux ou passerelles.
La seule vraie limite que j'ai pu trouver était que sur certains systèmes, les lignes individuelles sont limités à moins de BUFSIZ
caractères (1024 sur ma machine OpenBSD).
Si vous avez plus de quelques entrées dans /etc/hosts
, vous devriez plutôt envisager de configurer un serveur de noms local, mais c'est mon opinion personnelle.
Merci à Jeff Schaller d'avoir creusé cela.
Comment puis-je déterminer la taille limite de /etc/hosts ?
C'est un fichier normal, donc la limite correspondrait aux limites du système de fichiers sous-jacent (qui serait lui-même plafonné par le nombre de disques derrière lui), moins l'espace utilisé par tout autre fichier dans le même (probablement root (/
)) système de fichiers :
- ext2/3 : 2 Tio
- ext4 :16 Tio (avec la taille de bloc par défaut de 4 Kio)
- xfs :500 Tio
Comment puis-je définir la taille limite de /etc/hosts ?
Puisqu'il s'agit d'un fichier édité manuellement, uniquement manuellement :
sed -i '100,$d' /etc/hosts
(pour supprimer les lignes 100 et au-delà).