Não existe um método universal para criar um serviço de sistema em todas as distribuições GNU / Linux, uma vez que eles usam uma variedade de sistemas init. Era uma vez todos eles usaram mais ou menos o mesmo init de estilo SysV (exceto alguns que usavam mais Sistema de estilo BSD), que permitia a escrita de scripts init genéricos que requeriam pouca modificação da distro para a distribuição.
Atualmente, o SysV ainda é usado por diversas distros, como Debian e RHEL / CentOS. No entanto, os sistemas init mais recentes - systemd (Fedora, Arch, et. Al.) E upstart (Ubuntu) 1 inclui mecanismos para suporte retroativo de scripts init estilo SysV, portanto, se você estiver procurando pelo método mais facilmente adotado para uso na maioria dos sistemas, ainda é isso.
Tenha em mente que o "linux" não é um sistema operacional no sentido de que "Windows 8" ou "OSX" são sistemas operacionais. Linux é um kernel do sistema operacional usado em uma ampla variedade de plataformas (por exemplo, Android); coloquialmente "GNU / Linux" refere-se à coleção de distribuições de SO discutidas acima, mas estas não são todas iguais. Não há intenção séria ou desejo de unificá-los, assim como não há intenção séria ou desejo de unificar o Windows e o OSX para que, por exemplo, alguém possa perguntar "Como posso executar o meu arquivo jar na inicialização do OSX e do Windows? " - você está sem sorte, você precisará empacotá-lo separadamente para cada um deles. Isto é, na verdade, como o software no mundo linux geralmente é distribuído; existem pacotes separados para cada distribuição.
1 MAS O Ubuntu (e o Debian) estão mudando para systemd , significando o upstart provavelmente desaparecerá, e a maioria das principais distros terá um sistema init comum.