pub fn try_restart_with_signal(&self, signal: Signal, grace: Duration) -> Ticket {
		if cfg!(unix) {
			self.control(Control::TryGracefulRestart { signal, grace })
		} else {
			self.try_restart()
		}
	}
Restart the command if it's running, but don't start it if it's not.

The command will be sent `signal` and then given `grace` time before being forcefully
terminated. If `grace` is zero, that still happens, but the command is terminated forcefully
on the next "tick" of the supervisor loop, which doesn't leave the process a lot of time to
do anything.
crates/supervisor/src/job/job.rs