Eu tinha um script que ativa automaticamente meu wifi sem usar o gerenciador de rede, mas não sei como executar o script como root enquanto o sistema está inicializando. Como faço para que o script seja executado automaticamente durante a inicialização?
59
autostart
manifestos ou em*.service
arquivos em vários locais, assim como eminit.d
oucrontab
. Veja isto: unix.stackexchange.com/a/525845/43233Respostas:
Coloque o script que você deseja executar no diretório /etc/init.d e torne o script executável.
Uma vez feito isso, crie um link simbólico no diretório em nível de execução que você gostaria de usar, por exemplo, se você deseja executar um programa no nível de execução gráfico 2, o nível de execução padrão para o Ubuntu, coloque-o no
/etc/rc2.d
diretório 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. Coloque-o depois de todo o resto do diretório, atribuindo-lhe um número maior.Se o último script a ser executado for
rc.local
e tiver esse nomeS99rc.local
, você precisará adicionar seu script comoS99myscript
.Cada
/etc/rc*.d
diretório compatível com versões anteriores possui links simbólicos para o/etc/init.d/
diretório.fonte
/etc/rc2.d
, em vez derc3.d
como indicado no exemplo. Parece querc2.d
não é apenas o nível de execução gráfica.cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
levará você para qual/etc/rc?.d
diretório corresponde ao seu nível de execução padrão.rc.local
e tiver esse nomeS99rc.local
, você precisará adicionar seu script comoS99myscript
.". Você quis dizer: "Se o último script a ser executado émyscript
e é nomeadoS99myscript
, você precisa adicionar seu script comoS99myscript
."Inclua o comando no
/etc/rc.local
. Ele será executado sempre que o nível de execução do usuário for alterado.Nota: Você deve colocar o comando antes da última linha em /etc/rc.local que contém: "exit 0".
fonte
/etc/rc.local
que contém:exit 0
/etc/rc.local
no ubuntu 15.10 comentou que "Este script é executado no final de cada nível de execução multiusuário". Então o script pode ser executado várias vezes durante a inicialização, certo?Use uma
crontab
opção para executar seu script após a reinicialização,você pode fazer isso adicionando
@reboot
código no cronAbra o crontab pelo usuário root:
Adicione o próximo registro na parte inferior:
Isso fará o que você quiser.
fonte
crontab -e
, que não precisa de privilégios de superusuário? Gostaria de saber se ele pode executar scripts que precisam ser executados como root.sudo crontab -e
para fazê-lo executar o script como root durante a inicialização./var/run/crond.reboot
, se não, não vai executar a tarefaIsso funcionou para mim no Ubuntu 17.04:
Crie um arquivo de script de excursão, como é
disable_cdrom
conveniente para sua localização. No meu casohome/yterle/disable_cdrom
. No meu caso:torná-lo executável
chmod 775 disable_cdrom
/etc/systemd/system
e crie lá umservice
arquivo. Por exemplosudo gedit /etc/systemd/system/disable_cdrom.service
Minha
disable_cdrom.service
aparência é assim:Onde
ExecStart
aponta para executar seu script/bin/sh
Em seguida, execute
systemctl enable disable_cdrom.service
para ativar o serviço systemdfonte
systemctl enable disable_cdrom.service
Inclua seu arquivo de script
/etc/init.d/
com permissão de executável e defina diferentes níveis de execuçãoEle colocará seu script na inicialização da inicialização.
fonte
update-rc.d script-name enable
?Crie um arquivo de texto como este em
/etc/cron.d/
:(Você deve substituir
yourScriptPath
o caminho para o script que deseja executar.)fonte
Cuidado ao adicionar o script a
rc.local
- eu estava preso na tela inicial por causa disso. Pressionar Alt+ F1revelou o que estava acontecendo atrás da tela inicial (o scriptrc.local
estava em execução).Eu não pude sair disso.
nada funciona.
Eu tive que inicializar a partir de uma imagem USB do Ubuntu, encontrar
rc.local
, me dar permissões para arquivar e excluí-lo. Acho que você não deve fazer coisas se não souber o que está fazendo.fonte