Вот такой простой скрипт:#!/bin/sh
retval=`/sbin/mount | grep /mnt/cdrom`
if [ -n "$retval" ];
then /sbin/umount /mnt/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Не могу размонтировать CDROM"
else echo "Размонтировал CDROM"
eject /dev/cdrom
fi
else /sbin/mount /dev/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Не могу смонтировать CDROM"
else echo "Примонтировал CDROM"
fi
fi
П.С. копируем в каталог /sbin под именем cdm. Сам определяет состояниеURL:
Обсуждается: http://www.opennet.me/tips/info/973.shtml
можно еще сюда добавить уничтожение процессов которые блокируют cd.
Полезно когда cdrom расшарен по sambe ,его не отмонтируеш пока не грохнеш процессы подключений.
workaround по этой теме для Debian :
# apt-get install autofsтеперь проверяем :
# cat /etc/auto.master | grep -v ^#
/misc /etc/auto.misc --timeout=2
# cat /etc/auto.misc | grep -v ^#
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
# /etc/init.d/autofs restartвставляем CD
# ls /misc/cd
А зачем удалть процессы? Достаточно поставить в команду umount в скрипте параметр "-l" и размонтирование будет происходить принудительно.
а ну если кто акцессовой базой с другой шары во время убивания smbd пользуентся, очень интересно, да???
Если не ошибаюсь:
fuser -km /mnt/cdromman fuser
.....
EXAMPLES
fuser -km /home kills all processes accessing the file system /home in any way.
пользоваться supermount и никого убивать ненадо
supermount subfs и иже с ним часто ставят больше вопросов чем дают ответов.
у меня на работе врачи сидят под Linux, так вот они обычно где то о нем либо слышали либо читали...
И самое главное что больше всего вопросов задают и боятся темы на монтирование дискет и сидиромов.
А оказывается что ничего и монтировать не надо.
Даа... чукча писатель. Вот более простой скрипт, гыгыгы. Хотя это и скриптом не назвать:mount /mnt/cdrom || umount /mnt/cdrom
Ошибка: не /sbin/mount, а /bin/mount. По крайней мере, в линуксах.
У меня в Линухе:
lrwxrwxrwx 1 root root 10 2004-10-26 12:49 /sbin/mount -> /bin/mount
lrwxrwxrwx 1 root root 11 2004-10-26 12:49 /sbin/umount -> /bin/umount
С учётом что этой мой второй скрипт, моно и глаза на это закрыть,
данный скрипт лежит себе на диске и не кому не мешает, понадобился вызвали и не надо автомаунтом и всякими допольнительными патчами на ядро пользоватся которые жрут память.
такую мелочь можно и руками (на автомате) делать , какой к чёрту скрипт
Честно говоря херней страдаете... Посмотрите в сторону демона amd.
>Честно говоря херней страдаете... Посмотрите в сторону демона amd.amd даст смонтировать, а размонтировать он розданное самбой не будет. Вообще, не вижу препятствий реализовать в ядре и в самбе интерфейс типа демон устройств поймал событие Eject --- отправляет сигнал самбе и кому там ещё перестать использовать каталог сидюка, самба перестаёт, посылается сигнал в автомонтировщик amd или autofs размонтировать и сэджектить.
Все довольны.
Можно ж так?
если не ошибаюсь, supermount, идущий в виде патча на ядро и требующий для работы специальной строки к каждому девайсу в fstab-е, вообще чихать хотел на разнообразные процессы, если только они не осуществляют запись на девайс. В итоге система ведёт себя как винда при работе с дискетами и сидюками.
ммм. а перемонтирует он как надо?? у самбы крыша не съезжает, она нормально видит перемонтированную ФС?>если не ошибаюсь, supermount, идущий в виде патча на ядро и требующий
>для работы специальной строки к каждому девайсу в fstab-е, вообще чихать
>хотел на разнообразные процессы, если только они не осуществляют запись на
>девайс. В итоге система ведёт себя как винда при работе с
>дискетами и сидюками.
Стандартные средства без всяких патчей давно позволяют автоматически монтировать без левых патчей вроде supermount, называется udev+hal+dbus+ivman.
А udev.... насколько давно заброшен в ядре?