31

Внутрь бесконечного цикла while ((1)); do ... done добавьте небольшую задержку, от секунды и выше.
Надеюсь, вы его не по событию udev зовёте, на это намекают ошмётки от предыдуших экспериментов.
В условии if что-то совсем непонятное (/user/bin/grep ... /user/bin/lsusb).

32 (12.04.2012 09:38:32 отредактировано bormant)

По каждому событию извлечения usb_device

SUMSYSTEM=="usb_device", ACTION=="remove", RUN+="/sbin/need_reboot"

проверяем присутствие интересующего устройства, например, по серийному номеру. Если отсутствует, перегружаемся
/sbin/need_reboot

#!/bin/bash
SERIAL=012345678abcdef
GREP=/usr/bin/grep
REBOOT=/sbin/reboot
$GREP "$SERIAL" /sys/bus/usb/devices/*/serial &> /dev/null || $REBOOT

33

bormant
попробовал Ваш метод... получилось, но вот если я вытягиваю другую флешку ПС тоже перегружается )))

34 (12.04.2012 14:48:20 отредактировано bormant)

Вы ведь в строчке $SERIAL= вписали номер своей флешки, так?

Покажите строчку с $SERIAL= вашего скрипта /sbin/need_reboot, результат выполнения при обоих вставленных флешках, "правильной" и "неправильной"

$ cat /sys/bus/usb/devices/*/serial

Поменяйте последнюю строчку в /sbin/need_reboot на:

$GREP "$SERIAL" /sys/bus/usb/devices/*/serial >> /var/log/udev.log 2>&1

вытащите "неправильную" флешку, немного подождите, вытащите правильную. Что упало в /var/log/udev.log?

35

вот скрипт

#!/bin/bash
LOG="/etc/udev/log.log"
SERIAL=ea346d043af222
GREP=/usr/bin/grep
REBOOT=/sbin/reboot
$GREP "$SERIAL" /sys/bus/usb/device/*/serial >> $LOG 2>&1

а вот лог

/etc/udev/scripts/udev-myflash-remov: line 6: /usr/bin/grep: No such file or directory
/etc/udev/scripts/udev-myflash-remov: line 6: /usr/bin/grep: No such file or directory
/etc/udev/scripts/udev-myflash-remov: line 6: /usr/bin/grep: No such file or directory

почему три строчки не пойму, всего 2е флешки использую

36 (12.04.2012 17:02:36 отредактировано bormant)

Fogord пишет:

/usr/bin/grep: No such file or directory

у вас grep отсутствует или лежит где-то ещё, поправьте к нему путь. Поэтому и прошлые варианты с ним не работают. Посмотреть, где он у вас:

$ which grep

ps. А где вот это:

bormant пишет:

результат выполнения при обоих вставленных флешках, "правильной" и "неправильной"
$ cat /sys/bus/usb/devices/*/serial

?



pps. Тема всё больше напоминает анекдот про Вовочку, в котором он спрашивает у мамы, что такое аборт.

37 (12.04.2012 17:19:57 отредактировано Fogord)

сейчас лог выдал это

/bin/grep: /sys/bus/usb/device/*/serial: No such file or directory
/bin/grep: /sys/bus/usb/device/*/serial: No such file or directory
/bin/grep: /sys/bus/usb/device/*/serial: No such file or directory

38 (12.04.2012 17:24:27 отредактировано bormant)

Fogord пишет:

сейчас лог выдал это

/bin/grep: /sys/bus/usb/device/*/serial: No such file or directory

Флешка вставлена? Если нет, откуда ему там взяться? Если да, посмотрите, что там у вас есть вместо, мне-то  отсюда не видно...

Выражение
$GREP "$SERIAL" /sys/bus/usb/devices/*/serial
истинно только в одном случае, если среди устройств в /sys/bus/usb/devices/ есть такое, у которого в файле serial серийник совпадает с $SERIAL, то есть флешка вставлена. Во всех остальных случаях будет выполнена команда после ||, даже если искомых файлов нет, и это желаемое поведение, насколько помню условие задачи.



ps. А теперь анекдот про фонарь и потерянные ключи:

bormant пишет:

/sys/bus/usb/devices/*/serial

Fogord пишет:

/sys/bus/usb/device/*/serial

то есть как раз отсутствие файла по указанному вами неверному пути (device вместо devices) и приводит к ожидаемой перезагрузке.

39

не внимательный ((

ОГРОМНОЕ спасибо!!! все работает!!!

ps. засветился в анекдоте)