Você pode instruir o init para executar apenas uma instância do seu software - na verdade, isso acontecerá naturalmente se você iniciar seu software a partir do init. Mas o trabalho do init não tem nada a ver com impedir que outros programas iniciem outras instâncias do seu software.
Se você quiser garantir que apenas uma única instância do seu programa seja executada, em vez de executar o programa diretamente, execute um script de wrapper que verifique se o software já está em execução. A resposta do LatinSuD dá um exemplo de tal script wrapper.
É claro que um usuário pode ignorar o script wrapper e executar outra instância do seu software. Mas um usuário também pode criar um arquivo executável que seja idêntico ao seu e executá-lo. Então, passar por um script de wrapper implementa a restrição desejada de uma maneira que faz sentido.
Ter várias instâncias do mesmo executável em execução não é um problema. O que pode ser um problema é se eles acessam o mesmo recurso: arquivos, portas de rede, etc. Se você precisar proteger contra o acesso simultâneo ao mesmo recurso, os métodos possíveis dependerão de qual é o recurso. Se o recurso for uma porta TCP ou UDP, somente um processo poderá escutar nessa porta de qualquer maneira. Se o recurso for um arquivo, certifique-se de que apenas o usuário que está executando a instância iniciada por um script de inicialização tenha o direito de acessar esse arquivo.