If you are using unit files for splunk service, then check the value that is set for Restart option.
If the value is on-failure, then it wont be restarted upon clean exit. The service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered.
Trying setting it to always and see what happens.
If you are going to use always then ensure that ExecStop=/opt/splunk/bin/splunk stop is also part of your unit file.