У меня есть сервер, на котором смонтирован общий ресурс cifs (файлы хранилища Azure). Иногда ls возвращается медленно (20 секунд). После небольшой отладки я обнаружил, что:
ls /data/some/symlink/directory
вернуться через 20 секундls .
занимает 0,02 секундыls /data/original/location/that/symlinkpoints/to/directory
также возвращает субсекундувремя возврата 20 секунд для ls, похоже, зависит от количества файлов в каталоге. Чем больше каталог, тем больше времени потребуется.
Это заставило меня подумать, что это как-то связано с тем, как символическая ссылка обрабатывалась ls. Как будто он должен был разрешить это для каждого файла или чего-то в этом роде.
Чтобы отладить это, я хотел запустить ls через strace, чтобы увидеть, могу ли я увидеть разницу в системных вызовах между разными случаями. Однако если я убегу
strace ls /data/some/symlink/directory it also returns sub second suddenly.
Есть идеи, почему запуск через strace делает его быстрым и как отлаживать дальше?
Оказалось, что это псевдоним для ls /home/someuser/.bashrc: alias ls = 'ls --color = auto'
опция --color = auto заставляет ls возвращать цвета в моем терминале, но не в strace. Для поддержки цветов необходимо статовать файлы.