Lorsque j'ouvre un terminal pour la première fois, ou que j'en ouvre un nouveau après ne l'avoir pas utilisé pendant un certain temps, tout type de complétion de tabulation dans mon répertoire personnel (par exemple, ls
et Tab ) prend plusieurs secondes. J'ai déjà vu ce comportement lors de l'utilisation de autofs
pour monter des lecteurs réseau, mais je n'en ai pas dans ~/
. Je monte des partages NFS avec le montage automatique de systemd, mais ceux-ci sont dans ~/badabing/
, donc tout dans ~/
lui-même n'est qu'un fichier local.
S'il s'agit d'un problème de montage automatique, voici le /etc/fstab
correspondant lignes (oui, le serveur s'appelle "badabing", je l'ai nommé lors d'une frénésie des Sopranos il y a quelques années) :
badabing:/nfs_shares/music /mnt/badabing/music nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
badabing:/nfs_shares/series /mnt/badabing/series nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
badabing:/nfs_shares/movies /mnt/badabing/movies nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
Puis, dans ~/badabing
J'ai :
$ ls -l ~/badabing/
total 0
lrwxrwxrwx 1 terdon terdon 32 Jan 10 2016 movies -> /mnt/badabing/nfs_shares/movies/
lrwxrwxrwx 1 terdon terdon 31 Jan 10 2016 music -> /mnt/badabing/nfs_shares/music/
lrwxrwxrwx 1 terdon terdon 31 Jan 10 2016 series -> /mnt/badabing/nfs_shares/series
J'aimerais enquêter davantage sur cela. Puis-je en quelque sorte strace
achèvement de l'onglet ? Est le seul moyen d'ajouter echo
commandes dans les différents scripts de complétion bash pour voir ce qui ne va pas ? Il y en a plusieurs, donc je préfère vraiment éviter cela.
Alors, qu'est-ce qui cause cela ou, du moins, comment puis-je le déboguer davantage ?
Réponse acceptée :
Je ferais ceci :
sudo strace -pXXXX -tfo /tmp/strace.log
où XXXX est l'identifiant du processus de bash. Lors d'une vérification rapide de l'achèvement du nom de fichier sur l'une de mes arborescences de répertoires montées sur NFS, cela fonctionne sans problème :
-f
Suivre les processus enfants tels qu'ils sont créés par les processus actuellement suivis à la suite de l'appel système fork(2).
-t
Préfixez chaque ligne de la trace avec l'heure de la journée.
Certaines personnes pourraient préférer -r
:
-r
Imprimer un horodatage relatif à l'entrée de chaque appel système. Cela enregistre la différence de temps entre le début des appels système successifs.