Re: udev remove event not sent untill the device is closed

From: Greg KH
Date: Fri Oct 01 2004 - 13:13:06 EST


On Mon, Sep 27, 2004 at 10:52:36PM +0100, Thomas Stewart wrote:
> Hi,
>
> I'm running 2.6.8.1 with udev-031. I have a usb2serial converter which has a
> udev rule to give it a persistent name in my dev tree. I want to run a script
> when the converter is attached, and another when the converter is removed.
>
> I tried both the /etc/hotplug.d and /etc/dev.d methods to do this (I like the
> dev.d method better as I can use my persistent device name). Unfortunately I
> ran into problems.
>
> I'm catching the tty event as it sets $DEVPATH to something useful
> (e.g. /devices/sys/class/tty/ttyUSB0). And then running a different script
> depending on $ACTION.
>
> I made a short script to do this, and put it in /etc/dev.d/default/ttyUSB.dev:
> #!/bin/sh
> test "$1" != "tty" && exit
> test "$ACTION" == "add" && /usr/local/bin/on
> test "$ACTION" == "remove" && /usr/local/bin/off
>
> (I removed the various error checking that actually makes sure the tty event
> in question was actually the serial converter, and not some other device.)
>
> This works fine, I can add and remove the converter to my hearts content and
> both scripts run accordingly.
>
> However, if I attach the device, open it with say a "cat /dev/ttyUSB0" and
> then remove the device. No tty events get sent untill I kill the cat.

This is because the tty device remains until the last userspace process
releases the device. You might want to trigger your script off of the
removal of the USB device instead.

Hope this helps,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/