escreve uma regra do udev que primeiro monta a unidade USB e a segunda executa o meu-script
# cat /etc/udev/rules.d/11-media-by-label-with-pmount.rules
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"
# Get label
PROGRAM=="/sbin/blkid -o value -s LABEL %N", ENV{dir_name}="%c"
# use basename to correctly handle labels such as ../mnt/foo
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/su YOURUSERNAME -c '/usr/bin/pmount %N %E{dir_name}'", RUN+="/etc/udev/scripts/my-script.sh"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/su YOURUSERNAME -c '/usr/bin/pumount /media/%E{dir_name}'"
LABEL="media_by_label_auto_mount_end"
nota: A unidade é montada pela raiz mas pode ser desmontada pelo usuário dado. No último bloco, você precisa alterar YOURUSERNAME com seu nome de usuário e /etc/udev/scripts/my-script.sh com o caminho para seu script. Fonte e mais scripts: link
Outra solução é usar um wrapper do udisks como devmon .