Executar programa automaticamente na inicialização no linux ubuntu [closed]

140

Eu precisaria de um programa para ser executado toda vez que eu inicializar meu ubuntu linux. Então, eu precisaria adicioná-lo à minha lista de programas de inicialização. Apenas um problema: eu precisaria fazê-lo via terminal.

Matteo Monti
fonte
23
@Flexo Esta resposta não está presente em nenhum dos links que você forneceu. +1 a esta pergunta e resposta
Francisco Valdez
2
De fato, a resposta aqui é referenciada na primeira dessas perguntas.
Wilson F
4
Para uma maneira simples e portátil de fazer isso, você pode usar o Cron. Execute crontab -epara editar o crontab do usuário; adicione @reboot commandpara executar commandem cada inicialização.
appas 27/05
2
Eu não sei se é uma duplicata ou não, mas é o primeiro hit google ..
Vladimir verleg

Respostas:

178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Agora o script deve iniciar na inicialização. Observe que esse método também funciona com links físicos e simbólicos ( ln).

Editar

Neste ponto do processo de inicialização, o PATH ainda não está definido, portanto, é fundamental que caminhos absolutos sejam usados ​​por toda parte. MAS, como apontado nos comentários de Steve HHH, declarar explicitamente o caminho completo do arquivo ( /etc/init.d/filename) para o comando update-rc.d não é válido na maioria das versões do Linux. Per a página de manual para update-rc.d , o segundo parâmetro é um script localizado no /etc/init.d/*. Atualizado acima do código para refletir isso.

Outra Edição

Também como indicado nos comentários (por Charles Brandt), /filenamedeve haver um script no estilo init. Um bom modelo também foi fornecido - https://github.com/fhd/init-script-template .

Outro link para outro artigo apenas para evitar possível apodrecimento do link (embora seja triste se o GitHub morrer) http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

Outras edições

Como apontado nos comentários (por Russell Yan), isso funciona apenas no modo padrão de update-rc.d.

De acordo com o manual do update-rc.d, ele pode ser executado em dois modos, "as máquinas que usam o modo legado terão um arquivo /etc/init.d/.legacy-bootordering"; nesse caso, você deve passar a configuração da sequência e do nível de execução através dos argumentos da linha de comando.

O argumento equivalente definido para o exemplo acima é

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

Dave Lasley
fonte
1
Assim como um FYI, a opção “defaults” coloca um link para iniciar o script em níveis de execução 2, 3, 4 e 5. (e coloca um link para parada em 0, 1 e 6.)
Dave Lasley
5
Eu apenas tentei isso no Ubuntu Server 12.04 LTS, mas no 12.04 você não pode ter o prefixo /etc/init.d. É só sudo update-rc.d filename defaults.
21712 Steve
1
@puk Ambos os links de disco rígido e links simbólicos irá trabalhar com este método
Dave Lasley
14
Só queria adicionar que / filename neste caso deve ser um script no estilo init. Aqui é um modelo para iniciar o seu próprio script de inicialização personalizado: github.com/fhd/init-script-template
Charles Brandt
1
A leitura deste - unix.stackexchange.com/questions/28679/... - juntamente com a resposta vai ser útil
Arjun Sreedharan