Try to run the restart in a forked subshell with a sleep in front. In the hope that mcollective returns before restarting itself