Is there a way to wait starting a service until a device is ready for being 
used?

 That's a service-specific and nonportable thing, so, there's no generic
solution.
 However, if for a given service you have a way to wait until the
device appears, then it's easy.

 Pure s6 solution: put the wait-until-device-appear program at the
start of your run script. It will be run every time the service
restarts, but the check should be instant after the first time.

 s6-rc solution (better, because it's really a service management
pattern, not a supervision pattern) : make your longrun depend on a
oneshot that runs your device-waiting program.

 If you don't have a program that waits until a device is there, then
you have to resort to polling, unfortunately. For the pure s6 way,
s6-notifyoncheck can help you.

 But if you're just waiting for nodes to appear in /dev, on Linux,
you can use inotify: it works on devtmpfs. I could probably add a
program to s6-linux-utils that waits for a set of devices to appear,
then exits (or execs).

--
 Laurent

Reply via email to