Como executo um script na inicialização? [duplicado]

88

Eu tenho um script em uma pasta:

/path/to/my/script.sh

Eu preciso que este script seja executado toda vez que o sistema for iniciado (mesmo que ninguém faça login no sistema). O que preciso fazer para que isso aconteça?

    
por Rusty 12.12.2012 / 15:40

5 respostas

117

Você precisará de privilégios de root para qualquer um dos itens a seguir. Para obter root, abra um terminal e execute o comando

sudo -i

e o prompt de comando mudará para '#' indicando que a sessão de terminal tem privilégios de root.

Alternativa # 1: Adicione comandos a /etc/rc.local

vi /etc/rc.local

com conteúdo como o seguinte:

# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1   # Added by me
exit 0

Alternativa # 2: Adicionar um trabalho de Upstart (para sistemas anteriores a 15,04)

Crie /etc/init/myjob.conf

vi /etc/init/myjob.conf

com conteúdo como o seguinte

description     "my job"
start on startup
task
exec /path/to/my/script.sh

Alternativa # 3: Adicione um script de inicialização (obsoleto)

Crie um novo script em /etc/init.d/myscript .

vi /etc/init.d/myscript

(Obviamente, não precisa ser chamado de "myscript".) Nesse script, faça o que você quiser fazer. Talvez apenas execute o script que você mencionou.

#!/bin/sh
/path/to/my/script.sh

Torne-o executável.

chmod ugo+x /etc/init.d/myscript

Configure o sistema init para executar este script na inicialização.

update-rc.d myscript defaults
    
por jdthood 12.12.2012 / 16:07
42

Você não precisa de root nem de fazer login.

Você pode editar seu crontab ( crontab -e ) e criar uma entrada como esta:

@reboot /path/to/script.sh

Dessa forma, você pode executá-lo como um usuário comum. @reboot significa que ele é executado quando o computador é inicializado (não necessariamente quando é reinicializado).

    
por Dan Jones 12.12.2012 / 17:20
11

do terminal

  1. crie o arquivo newshell.sh.desktop na pasta ~/.config/autostart :

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. altere Exec , Name e Comment value e adicione ao arquivo: primeira linha

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. salve

ou

você pode fazer isso a partir da GUI:

  1. execute a ferramenta "aplicativos de inicialização" no Ubuntu 14.04, basta escrevê-la na caixa de pesquisa.
  2. adicione o mesmo Exec , Name e Comment .
por ChaosPredictor 16.09.2015 / 16:31
2

Em sua casa, você tem um arquivo chamado .bashrc. Este arquivo é executado na abertura da sua sessão.

Basta colocar algo assim no final do arquivo:

sh /path/to/your/script.sh

EDIT: desculpe, eu não respondi a sua pergunta porque a minha solução é executada quando um usuário está logado ...

Para executar algo antes do login, você pode tentar o rcconf ou rc-file: link

    
por Gp2mv3 12.12.2012 / 15:47
-1

Basta editar rc.local nano /etc/init.d/rc.local da seguinte forma:

/path/to/my/script.sh || exit 1 
exit 0
    
por Arcsector 26.08.2017 / 00:43