Site Mascot
 

Не удивляйтесь, сайт переехал: был http://smacker.fatal.ru, стал http://smacker.heliohost.org.

Скажем "нет!" забытым в CDROM дискам!

10.04.2005 6:52

В общем-то, ничего особенно интересного тут нет - просто хотелось бы рассказать, как я однажды решил проблему забывания компакт-дисков в CDROM при выключении компьютера.

 
Посвящается Барбаре 8-)

 

Вводная
Однажды — кажется, ещё ранней осенью прошлого года — по дороге в университет я встретился в метро со своей однокурсницей — назовём её условно... эээ... Барбара (кого я имею в виду, впрочем, не будет загадкой для посвящённых). Как и следовало ожидать — имеется в виду: «от меня» — разговор шёл на околокомпьютерные темы. И в ходе этого самого разговора Барбара подняла следющий вопрос: при выключении компьютера (к сожалению, осквернённого неверной операционной системой) она часто забывала диски в сидироме, что ей не слишком нравилось. Собственно, вопрос был в том, как заставить мастдай при выключении самостоятельно отдавать диски. Как и следовало ожидать, по поводу мастдая я ничего конкретного сказать не смог (кроме, разумеется, обычных проповедей во имя Пингвина), но меня эта проблема, как ни странно, тоже заинтересовала. Не то, чтобы я часто забывал диски в приводе — но каждый раз, когда я их забывал, это всегда случалось очень некстати.

 

Собственно, решение
Итак, для решения этой проблемы я выбрал самый простой метод. На тот момент я выключал компьютер скриптом в одну строчку shutdown -h now, удобно названным мной off (ибо кратко и ёмко). задача сводилась к тому, чтобы модифицировать этот скрипт так, чтобы он проверял, подмонтирован ли диск в сидироме, и если да, то чтобы он отмонтировал сидиром и открывал бы его трей.

 

Вот скрипт, который я для этого написал (не бог весть что, конечно):
 #! /bin/bash
 # SHUTDOWN SCRIPT
 
 if mount | grep /dev/cdrom > null
 	then
 		umount /dev/cdrom;
 		eject;
 		sleep 5;
 fi
 # Shutting power down
 shutdown -h 0; 

 

Некоторые пояснения: у меня на машине только один привод CDROM, так что пояснять, какой именно имеется в виду для команды eject не имеет смысла. Для проверки того, подключен ли сидиром или нет, я использую именно файл устройства (/dev/cdrom), а не точку монтирования (у меня это /mnt/cdrom), так как вместо настоящего диска к ней же может быть подмонтирован iso образ, а в этом случае открывать трей бессмысленно. Проверку же ошибок при выполнении umount делать, по-моему, бессмысленно, потому что если у меня запущено приложение, использующее привод CDROM (например, файловый менеджер или xmms), то я, очевидно, не забуду о том, что в приводе есть диск. Паузу в пять секунд я отвёл для того, чтобы иметь возможность абсолютно не торопясь взять диск с трея и закрыть сидиром.

 

Итог
Итак, выключая компьютер с помощью этого скрипта, я уже не раз оценил его полезность, получив в руки забытый бы иначе в сидироме диск. При этом проблем с umount (device is busy и т.д.) у меня и вправду не возникает.
  1. Bircoph
    Email: Bircoph гав-гав rambler.ru  
    Маленькое дополнение
    Я бы добавил в этот скрипт засовывание каретки сидюка назад,
    дабы не выполнять личных действий вручную. Сделать это можно,
    добавив mount /dev/cdrom после "sleep 5".

    [ Запись от 01.06.2005, отправлена в 16:52 ]
    Тогда лучше уж сразу eject -t 8-)
  2. Я буду рад, если вы оставите свой отзыв об этой заметке:

    Никнейм

    Email

    URL

    Заголовок комментария

    Проверка на человечность
    - Введите буквы:
    The CAPTCHA image