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
