Библиотека сайта rus-linux.net
Размонтирования приходится слишком долго ждать
Некоторые из вас могут посмотреть на 60 секундный таймаут и подумать,
это слишком долго для того, чтобы просто вынуть дискету ... Может просто сделать sync и вынуть её не размонтируя и никто не заметит..
Осмелюсь предложить более разумные альтернативы
.
Во первых вы можете изменить таймаут. Но указать системе размонтировать
файловые системы после 15 секунд бездействия, может оказаться неэффективным.
В зависимости от ваших настроек, вы можете просто запустить umount, как обычный
пользователь. Но есть и другой путь заставить automount размонтировать файловую
систему. Если вы пошлете (с помощью kill) сигнал SIGUSR1
процессу automount, он размонтирует все файловые системы, какие сможет. Но, перед
тем, как вы начнете делать кнопку размонтирования для вашего оконного менеджера,
вы должны знать о одной проблеме.
Процесс automount запускается суперпользователем, поэтому он будет принимать только сигналы посланные им. В то же время, одна из главных причин использования automount в том, что вам *нет* необходимости быть root, чтобы монтировать и размонтировать файловые системы с его помощью. Самое быстрое решение этого - это создать suid-root C программу, которая будет делать это за вас. В тоже время используя sudo можно разрешить пользователям посылать нужный kill сигнал. Единственная проблема состоит в том, что sudo не позволит вам использовать подкоманды процесса, которые вам понадобятся, чтобы найти текущий PID. У вас должна быть программа killall, которая позволит вам сделать это (спасибо за предложения): ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount. Иначе вам придется разрешить пользователям посылать -SIGUSR1 любым процессам. Этот сигнал оказывает различное воздействие на программы; он перезапускает некоторые оконные менеджеры,но убивает xemacs. Поэтому будем надеяться что в killall нет переполнений буфера ....