On 17/07/2015 09:26, Rafal Bisingier wrote:
So I run them as a service with "sleep BIG" in finish script (it's usually unimportant if this runs on same hours every day). I can have this sleep in the main process itself, but it isn't really it's job
I also use a supervision infrastructure as a cron-like tool. In those cases, I put everything in the run script: if { periodic-task } sleep $BIG periodic-task's run time is usually more or less negligible compared to $BIG, and I'm not expecting to be controlling it with signals anyway - but I like to being able to kill the sleep if I want to run periodic-task again earlier for some reason. So I don't mind executing a short-lived (even if it takes an hour or so) process in a child, and then having the run script exec into the sleep. And since periodic-task exits before the sleep, it doesn't block resources needlessly. Whereas if your sleep is running in the finish script, you have no way to control it. You stay in a limbo state for $BIG and your service is basically unresponsive that whole time; it's reported as down (or "finish" with runit) but it's still the normal, running state. I find this ugly. What do you think ? Is putting your periodic-task in a child an envisionable solution for you, or do you absolutely need to exec into the interpreters ? -- Laurent