This is not a solution, but a workaround:
One way (simple) is to start your script "/bin/flashled.sh", like this
#!/bin/bash
if [[ $(pgrep -c "$0" ) -gt 1 ]]; then exit ;fi
... ... ...
However, this may be in some cases, the border is slightly subject to the conditions of the race (bash is a little slower, so there is no way to make sure that this will always work), but it can work fine in your case.
( , ) "/bin/flashled.sh" :
#!/bin/bash
while :
do
kill -SIGSTOP $$
... ...
sleep $TIME
done
(,/etc/rc.local), ... , "" ( ), $TIME
udev :
SUBSYSTEMS=="usb", ATTRS{serial}=="00000000", SYMLINK+="Kingston", RUN+="/usr/bin/pkill -SIGCONT flashled.sh"