Como executar um script durante a inicialização como root

50

Eu tinha um script que habilita automaticamente meu wifi sem usar o networkmanager, mas não sei como executar o script como root enquanto o sistema está inicializando. Como faço o script rodar automaticamente durante a inicialização?

    
por user128712 03.05.2013 / 14:08

6 respostas

47

Coloque o script que você deseja executar no diretório /etc/init.d e torne o script executável.

chmod 755 myscript

Uma vez feito isso crie um link simbólico no diretório de nível de execução que você gostaria de usar, por exemplo, se você quisesse rodar um programa no runlevel gráfico 2, o nível de execução padrão para o Ubuntu, você o colocaria no% diretório/etc/rc2.d. Você simplesmente não pode colocá-lo no diretório, você deve indicar quando ele será executado, indicando a inicialização com um "S" e a ordem de execução é importante. Colocá-lo depois de tudo o que está no diretório, dando-lhe um número maior.

Se o último script a ser executado for rc.local e tiver o nome S99rc.local , será necessário adicionar seu script como S99myscript .

ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript

Cada diretório /etc/rc*.d compatível com versões anteriores possui links simbólicos para o diretório /etc/init.d/ .

    
por Radu Rădeanu 03.05.2013 / 14:28
25

Inclua o comando em /etc/rc.local . Ele será executado sempre que o nível de execução do usuário for alterado.

Nota: Você tem que colocar o comando antes da última linha em /etc/rc.local que contém: "exit 0".

    
por thefourtheye 03.05.2013 / 14:13
12

Use uma opção crontab para fazer seu script ser executado após a reinicialização,

você pode fazer isso adicionando o código @reboot no cron

@reboot yourScriptPath 

vai fazer isso

    
por hs.chandra 03.05.2013 / 14:19
5

Inclua seu arquivo de script em /etc/init.d/ com permissão executável em seguida, defina um nível de execução diferente

$ update-rc.d script-name default

Ele colocará seu script na inicialização.

    
por M S Parmar 05.06.2015 / 20:21
4

Crie um arquivo de texto como este em /etc/cron.d/ :

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot   root    yourScriptPath

(Você deve substituir yourScriptPath pelo caminho do script que deseja executar.)

    
por jarno 27.12.2015 / 14:43
4

Isso funcionou para mim no Ubuntu 17.04:

  1. crie um arquivo de script de turnê como disable_cdrom para você localização. No meu caso home/yterle/disable_cdrom . No meu caso:

    #!/bin/sh
    eject /dev/sr0 -i 1
    
  2. torne-o executável chmod 775 disable_cdrom

  3. navegue até /etc/systemd/system e crie um arquivo service . Por exemplo sudo gedit /etc/systemd/system/disable_cdrom.service

Meu disable_cdrom.service é assim:

[Unit]
Description=Disable cdrom

[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom

[Install]
WantedBy=multi-user.target

Em que ExecStart aponta para executar seu script com /bin/sh

Em seguida, execute systemctl enable vgaoff.service para ativar o serviço systemd

    
por YTerle 28.09.2017 / 23:11

Tags