7
votes

Pourquoi Grep est-il suspendu lors de la course contre le répertoire /?

Ma question est en deux parties:

1) Pourquoi Grep est-il suspendu lorsque je grep tous les fichiers sous "/"?

Par exemple: xxx

(Remarque: juste avant le blocage / crash, je remarque que je vois des messages "Aucun périphérique ou adresse", en ce qui concerne les sockets ...

Bien sûr, je sais que le GREP ne devrait pas courir contre une prise, mais je pense que puisque les sockets ne sont que des fichiers à UNIX, il devrait renvoyer un résultat négatif, plutôt que Crashing.

2) MAINTENANT, ma question suivante: Dans tous les cas - Comment puis-je grep tout le système de fichiers? Existe-t-il certains répertoires * Nix que nous devrions laisser sortir lorsque cela fait cela? En particulier, je cherche tous les fichiers journaux récemment écrits.


1 commentaires

Grep n'est pas suspendu, votre -R signifie récursif tous les fichiers sur le système. Combien de gigaoctets est-ce? En outre, tous les fichiers montés NFS sont en cours de traitement à la vitesse de connexion réseau et non comme un fichier local sur un disque directement connecté à votre CPU. Cela prendra beaucoup de temps. Bonne chance.


3 Réponses :


1
votes

Si vous continuez à voir des messages d'erreur, alors grep n'est pas suspendu. GARDER IOTOP Ouvrir dans une deuxième fenêtre pour voir à quel point votre système fonctionne dur pour tirer tout le contenu de son support de stockage dans la mémoire principale, pièce par pièce. Cette opération devrait être lente, ou vous avez un système très barebone.

MAINTENANT, ma question suivante: dans tous les cas - Comment puis-je grep tout le système de fichiers? Existe-t-il certains répertoires * Nix que nous devrions laisser sortir lorsque cela fait cela? En particulier, je cherche tous les fichiers journaux récemment écrits.

Grepping The Whole FS est très rarement une bonne idée. Essayez de grepper le répertoire dans lequel les fichiers journaux auraient dû être écrits; probablement / var / journal . Encore mieux, si vous savez quoi que ce soit sur les noms des fichiers que vous recherchez (disons, ils ont l'extension .log ), puis effectuez un trouver ou ou localiser et grep les fichiers rapportés par ces programmes.



9
votes

Par défaut, grep essaie de lire chaque fichier. Utilisez -D sauter pour sauter les fichiers de périphérique, les fichiers de socket et les fichiers FIFO.


0 commentaires

19
votes

Comme @Ninjalj a dit, si vous n'utilisez pas -d skip code>, grep code> essaiera de lire tous les fichiers de votre appareil, des fichiers de socket et des fichiers FIFO. En particulier, sur un système Linux (et de nombreux systèmes UNIX), il essaiera de lire / dev / zéro code>, qui semble être infiniment long.

Vous attendez un moment. p>

Si vous recherchez un journal système, à partir de / var / journal code> est probablement la meilleure approche. p>

Si vous cherchez quelque chose Cela pourrait vraiment être n'importe où dans votre système de fichiers, vous pouvez faire quelque chose comme ceci: p>

find / -xdev -type f -print0 | xargs -0 grep -H pattern


1 commentaires

Ceci est plus rapide que Xargs: Trouver / -xdev -type F -exec Grep -H {} + .