The 'restartifNeeded' set to true in the serverclass.conf may take care of the restart always when an app is deployed to the forwarder.
restartIfNeeded = true | false
* This is only valid on forwarders that are newer than 6.4.
* If true and issueReload is also true, then when an updated app is delpoyed
to the client, that client will try to reload that app. If it fails, it will
then restart.
* defaults to false
https://docs.splunk.com/Documentation/Splunk/6.5.1/Admin/Serverclassconf
Here is post on answers that may point you in the direction with working with 'upstart' and splunkd.
https://answers.splunk.com/answers/22511/integrating-splunk-with-upstart-ubuntu-debian.html
... View more