10 votes

Pourquoi mes utilitaires de ligne de commande fonctionnent-ils si lentement sur mon Mac ?

Je viens de remarquer que les utilitaires de ligne de commande tels que ls ( /bin/ls ), touch ( /usr/bin/touch ), cat ( /bin/cat ), etc. sont très lents lorsque je les exécute depuis Terminal ou iTerm sur mon MacBook. Par exemple :

  • ls Dans un répertoire vide, le processus prend 1 seconde (il prend également 1 seconde dans un répertoire non vide, qu'il y ait beaucoup ou peu de fichiers) ;

  • touch La création d'un nouveau fichier prend 1 seconde (il faut également 1 seconde pour touch un fichier existant) ;

  • cat La création d'un fichier vide prend 1 seconde (il y a également un délai d'une seconde avant que quelque chose ne se produise lorsque j'utilise la fonction cat un fichier non vide).

J'ai essayé de diagnostiquer ce problème de plusieurs façons, mais en vain. Je ne pense pas que ce soit un problème de système de fichiers, puisque :

  • J'ai lancé l'utilitaire de disque et il ne signale aucun problème.

  • Tout semble fonctionner parfaitement dans le Finder, par exemple le contenu des répertoires s'affiche instantanément dans le Finder.

  • J'ai installé GNU coreutils en utilisant Homebrew et j'ai essayé d'utiliser gls , gtouch , gcat etc., et toutes les opérations que j'ai énumérées ci-dessus se produisent instantanément lorsqu'elles sont exécutées avec la version GNU.

Des idées sur ce qui pourrait se passer ? Une idée sur la façon de résoudre ce problème ?


EDIT : Lorsque je redémarre l'ordinateur ou que j'essaie un autre utilisateur, ces problèmes disparaissent temporairement, mais après quelques minutes, ils semblent réapparaître. Une autre chose étrange que j'ai remarqué :

$ time date
Wed Jan 28 10:07:11 PST 2015

real    0m0.151s
user    0m0.001s
sys     0m0.003s

$ time date
Wed Jan 28 10:07:13 PST 2015

real    0m0.029s
user    0m0.001s
sys     0m0.002s

$ time date
Wed Jan 28 10:07:16 PST 2015

real    0m1.005s
user    0m0.001s
sys     0m0.002s

$ time date
Wed Jan 28 10:07:18 PST 2015

real    0m1.005s
user    0m0.001s
sys     0m0.002s

Cela se produit pour tous les utilitaires que j'ai essayés, mkdir , scp , sftp , more , cat La première fois que je l'exécute après un redémarrage, c'est moyennement lent. La deuxième fois que je l'exécute, c'est plutôt rapide. Toutes les fois suivantes, il est lent.

7voto

cmsjr Points 16766

En fait, j'ai trouvé le problème aujourd'hui. Il a été causé par un logiciel anti-malware appelé Sourcefire AMP (Advanced Malware Protection) . Tous mes problèmes ont disparu après l'avoir désactivé/désinstallé.

Je suppose qu'il faisait quelque chose comme mettre un délai sur les choses dans /bin , /usr/bin etc. pour des "raisons de sécurité"... Je suppose que les outils GNU n'ont pas été retardés parce qu'ils n'étaient pas dans les répertoires de la "liste noire".

2voto

Oskar Points 1242

La première chose que je vérifierais est que vous n'avez pas un $PATH bizarre - les temps d'exécution d'un fichier qui n'existe pas et un qui devrait être rapide :

Mac:~ bmike$ time /bin/ls /private/xyz
ls: /private/xyz: No such file or directory

real    0m0.004s
user    0m0.001s
sys     0m0.002s

Mac:~ bmike$ time /bin/ls /private/tmp
com.apple.launchd.q2QmVhsPCV    com.apple.launchd.zQ5EK6R6AZ

real    0m0.006s
user    0m0.002s
sys     0m0.003s

La prochaine étape consiste à vérifier l'activité globale du système :

Mac:~ bmike$ vm_stat 5
Mach Virtual Memory Statistics: (page size of 4096 bytes)
    free   active   specul inactive throttle    wired  prgable   faults     copy    0fill reactive   purged file-backed anonymous cmprssed cmprssor  dcomprs   comprs  pageins  pageout  swapins swapouts
  306160  1168138    79266    53096        0   299239   613825 20971811   345367 15995721      237  2472732      203216   1097284   328691   190541   260034   646113   623838      285   286101   299172 
  305613  1172072    79345    53098        0   295915   618898     1191        1      680        0        0      203297   1101218   328691   190541        0        0        0        0        0        0 
  306163  1188285    79345    53088        0   279370   621180     1055        0      600        0        0      203287   1117431   328682   190541        9        0        0        0        0        0 
  306039  1186031    79345    53088        0   281598   621176      729        0      293        0        0      203287   1115177   328664   190541       18        0        0        0        0        0 
^C
Mac:~ bmike$ iostat 5
          disk0       cpu     load average
    KB/t tps  MB/s  us sy id   1m   5m   15m
   31.31  12  0.35   9  4 86  1.32 1.41 1.43
    0.00   0  0.00   2  2 96  1.21 1.38 1.42
   18.40   1  0.02   5  2 93  1.20 1.38 1.42
   22.00   1  0.02   3  2 95  1.20 1.38 1.42
^C

Ensuite, je quitte toutes les applications, je déconnecte tous les utilisateurs et je redémarre. Si votre Mac vous permet de vous connecter, désactivez cette fonction dans les préférences système afin de pouvoir effectuer une connexion sécurisée après le redémarrage. (Maintenez la touche shift immédiatement après avoir appuyé sur return si vous tapez un mot de passe pour vous connecter à votre utilisateur ou maintenez shift juste après avoir sélectionné l'icône de votre utilisateur si vous n'avez pas de mot de passe).

Répétez les mesures (et éventuellement le chronométrage des outils gnu alternatifs) pour savoir si le problème est temporaire ou systématique.

1voto

Kent Points 6002

Comme @bmike, il se peut que votre $PATH contienne quelque chose qui retarde la recherche par l'interpréteur de commandes de la commande que vous essayez d'exécuter. Outre le date commandement, time doivent également être nommés explicitement sur la ligne de commande.

Essayez /usr/bin/time /bin/date y time date plusieurs fois de suite pour voir s'il y a une différence dans la sortie. Si c'est le cas, alors echo $PATH devrait vous donner un indice sur ce qui cause le retard.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X