У меня есть сервер Ubuntu 14.04, который запрется после неопределенного количества времени, когда Вы делаете попытку к tab-auto-complete пути доли CIFS в/mnt каталоге. Я монтирую долю, и это, кажется, хорошо работает для неопределенного количества времени. Я могу сделать ls или выполнить du на папках в смонтированной доле. Затем я перейду к вкладке, путь к папке и моя консоль запираются. Я могу запустить новую сессию, но она заблокирует, как только я пытаюсь смешать со смонтированной долей; это даже происходит с другими пользователями, если я сделал, чтобы они попробовали также. Я понятия не имею, почему это происходит? Я никогда не видел эту проблему.
Это имеет отношение и к пути работы завершения удара и к пути cifs работы как протокол.
завершение удара работает таким образом:
На блочном уровне или локальной или в других отношениях обоснованно быстрой файловой системе, это все происходит невероятно быстро.
CIFS, к сожалению, не является файловой системой блочного уровня. Вместо этого CIFS является основанным на команде транзакционным протоколом. Каждый запрос, выполненный против CIFS:
Короче говоря, CIFS/SMB (по крайней мере, в SMB1, который почти конечно является тем, что Вы используете для монтирования этой доли CIFS), чрезвычайно болтливый.
В обычном, прямом использовании известных имен файлов, запрос является одиночным элементом. Вы выполняете запрос для файла, CIFS аутентифицирует Вас, подтверждает Ваш запрос, Вы подтверждаете их подтверждение и Ваши передачи файлов.
В случае заполнения клавишей Tab, тот цикл умножается на количество файлов в конкретном каталоге, возможно времена два (или больше!), если это разыменовывает Windows Shortcut.
На всем протяжении сети.
Это - рецепт для значительного замедления, поскольку readline ожидает удара, кто в свою очередь ожидает драйвера файловой системы для согласования с сервером CIFS.
можно хотеть работать вокруг этой проблемы путем выполнения вещей как выполнение сессии из screen
, тот путь, если сессия удара запирается, Вы можете ctrl-A-c
и получать бренд s, шлепающий новый терминал, таким образом, можно продолжить работать или даже уничтожать другой.