Em uma instância do Amazon S3 Linux, tenho dois scripts chamados start_my_app
e stop_my_app
que iniciam e param para sempre (que, por sua vez, executa meu aplicativo Node.js.). Eu uso esses scripts para iniciar e parar manualmente meu aplicativo Node.js. Por enquanto, tudo bem.
Meu problema: também quero configurá-lo para que start_my_app
seja executado sempre que o sistema inicializar. Sei que preciso adicionar um arquivo init.d
e sei como vinculá-lo ao diretório apropriado rc.d
, mas não consigo descobrir o que realmente precisa ser inserido no arquivo em que coloco init.d
. Estou pensando que deveria ser apenas uma linha, tipo start_my_app
, mas que não tem funcionado para mim.
init.d
solução ( aqui ) deve ser preferida àrc.local
solução, porque a última é a ferramenta antiga que ainda é utilizável apenas porque a nova ferramenta é compatível com versões anteriores.Respostas:
No arquivo que você colocou,
/etc/init.d/
você deve configurá-lo como executável:Graças a @meetamit, se isso não funcionar, você deverá criar um link simbólico para
/etc/rc.d/
Observe que no Debian mais recente, isso não funcionará, pois seu script deve ser compatível com LSB (forneça, pelo menos, as seguintes ações: iniciar, parar, reiniciar, forçar recarregar e status): https: //wiki.debian .org / LSBInitScripts
Como uma observação, você deve colocar o caminho absoluto do seu script em vez de um relativo, pois ele resolve problemas inesperados:
E não se esqueça de adicionar em cima desse arquivo:
fonte
ln
comando) para um diretório dentrorc.d
/etc/rc.d
pasta, mas tenho/etc/rcX.d
pastas (ou seja , /etc/rc0.d , /etc/rc1.d , /etc/rcS.d ), também há um arquivo /etc/rc.local . Eu acho que você deve criar links simbólicos em pasta personalizada como/etc/rc9.d
ou em um dos existentes ... (Servidor Ubuntu 14.04)Defina um crontab para isso
após cada inicialização, ele executa o script de teste.
fonte
@reboot sh $HOME/test.sh
no crontab é ainda mais limpo #crontab -l
deve mostrar@reboot sh $HOME/test.sh
para confirmar que ele realmente foi definido.Uma abordagem simples é adicionar uma linha em
/etc/rc.local
:ou se você deseja executar o comando como um usuário especial:
(o e comercial final embasa o processo e permite que o rc.local continue executando)
Se você deseja um script init completo, a distribuição debian tem um arquivo de modelo, então:
e adapte um pouco.
fonte
stop_my_app
), eu precisaria fazê-losudo
, não? Além disso, estou me perguntando qual é exatamente a função do e comercial final (?).&
execute o processo em segundo planoinit.d
maneira de fazer as coisas (sua resposta era apenas uma solução mais simples para mim na época) . Esta postagem recebe muitas visualizações e votos, por isso é importante manter a precisão.É assim que eu faço no Red Hat Linux sistemas .
Coloque seu script
/etc/init.d
, de propriedade de raiz e executável. Na parte superior do script, você pode fornecer uma diretiva parachkconfig
. Exemplo, o script a seguir é usado para iniciar um aplicativo Java como usuário oracle.O nome do script é
/etc/init.d/apex
Isso indica que o script deve ser executado nos níveis 3, 4 e 5, e a prioridade para iniciar / parar é 99 e 10.
Em seguida, como usuário,
root
você pode usarchkconfig
para ativar ou desativar o script na inicialização:E você pode usar
service start/stop apex
.fonte
Entre
cron
usandosudo
:sudo crontab -e
Adicione um comando para executar na inicialização, neste caso, um script:
@reboot sh /home/user/test.sh
Salve :
Pressione ESC então: x para salvar e sair ou pressione ESC e ZZ (que é shift + zz)
Teste Teste Teste :
Execute seu script de teste sem cron para garantir que ele realmente funcione.
Certifique-se de salvar seu comando no cron, use
sudo crontab -e
Reinicie o servidor para confirmar que tudo funciona
sudo @reboot
fonte
sudo
se você deseja executar um determinado comando durante a inicialização usando o usuário atual./tmp
??Basta adicionar uma linha ao seu crontab.
Verifique se o arquivo é executável:
Para editar o arquivo crontab:
Linha que você precisa adicionar:
Que simples!
fonte
# uname -a Linux accton-xp70a0-26-a1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Outra opção é ter um comando @reboot no seu crontab.
Nem todas as versões do cron suportam isso, mas se sua instância for baseada na Amazon Linux AMI, ela funcionará.
fonte
Você consegue :
então use este comando
Por favor, veja esta página na Cyberciti .
fonte
Crie seu próprio / init executável
Não é isso que você quer, mas é divertido!
Basta escolher um arquivo executável arbitrário, mesmo um script de shell , e inicializar o kernel com o parâmetro de linha de comando:
No final da inicialização, o kernel do Linux executa o primeiro espaço de usuário executável no caminho especificado.
Vários projetos fornecem serviços populares
init
executáveis usados pelas principais distribuições, por exemplo, systemd, e na maioria das distribuições o init bifurca um monte de processos usados na operação normal do sistema.Mas podemos sequestrar
/init
lo para executar nossos próprios scripts mínimos para entender melhor nosso sistema.Aqui está uma configuração mínima reproduzível: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init
fonte
Essa solução simples funcionou para mim em uma instância do Amazon Linux executando o CentOS. Edite seu
/etc/rc.d/rc.local
arquivo e coloque o comando lá. É mencionado neste arquivo que será executado após todos os outros scripts de inicialização. Portanto, tenha cuidado a esse respeito. É assim que o arquivo está para mim atualmente. . Última linha é o nome do meu script.fonte
O método mais fácil absoluto, se tudo o que você deseja executar é um script simples (ou qualquer outra coisa), é se você tiver uma interface gráfica para usar as preferências do sistema e os aplicativos de inicialização.
basta procurar o script que você deseja e pronto. (torne o script executável)
fonte
Para o Debian 9, consulte /ubuntu/228304/how-do-i-run-a-script-at-start-up . Isso me ajudou. Versão curta para o Debian 9: adicione comandos (como root) ao /etc/rc.local
Provavelmente, /path_to_file/filename.sh deve ser executável (acho que sim).
fonte
No Lubuntu, tive que lidar com a situação oposta. O Skype começa a funcionar após a inicialização e eu encontrei no
~/.config/autostart/
arquivoskypeforlinux.desktop
. O conteúdo do arquivo é o seguinte:A exclusão deste arquivo me ajudou.
fonte
$ update-rc.d myScript.sh defaults NN
que NN é a ordem em que deve ser executado. 99, por exemplo, significa que seria executado após 98 e antes de 100.fonte
Trabalhando com microsserviços ou shell do Python 3; usando o Ubuntu Server 18.04 (Bionic Beaver) ou Ubuntu 19.10 (Eoan Ermine) ou Ubuntu 18.10 (Cosmic Cuttlefish), eu sempre gosto dessas etapas e funcionou sempre :
Criando um microsserviço chamado p exemplo "brain_microservice1.service" no meu caso:
Dentro deste novo serviço em que você está:
Dê as permissões:
Conceda a permissão de execução:
Habilite então, isso fará com que sempre inicie na inicialização
Então você pode testá-lo;
$ sudo reinicie agora
Concluir = SUCESSO !!
Isso pode ser feito com o mesmo script do corpo para executar o shell, reagir ... script de inicialização do banco de dados ... qualquer tipo de código OS ... espero que isso ajude ...
...
fonte
Eu me referi a este blog, sempre soa uma boa escolha
https://blog.xyzio.com/2016/06/14/setting-up-a-golang-website-to-autorun-on-ubuntu-using-systemd/
vim /lib/systemd/system/gosite.service
fonte
Aqui está um método mais simples!
Primeiro: escreva um shell script e salve-o como .sh, aqui está um exemplo
esse script desativará o teclado interno na inicialização.
Segundo: abra o aplicativo "Preferências do aplicativo de inicialização"
insira a descrição da imagem aqui
insira a descrição da imagem aqui
Terceiro: clique em Adicionar. quarto: na seção NAME, dê um nome. quinto: Na seção de comando, navegue até o seu .sh. sexta: edite sua seção de comando para:
sétimo: clique em Adicionar. É isso aí! Acabado!
Agora confirme reiniciando o seu PC.
Felicidades!
fonte
O método indolor, mais fácil e mais universal é simplesmente executá-lo com
~.bash_profile
ou~.profile
(se você não tiver o arquivo bash_profile) .Basta adicionar o comando de execução na parte inferior desse arquivo e ele será executado quando o sistema for iniciado.
Eu tenho este na parte inferior um exemplo;
~\Desktop\sound_fixer.sh
fonte
~/.bash_profile
executa quando o usuário efetua login - não quando o sistema é inicializado. Na pergunta original, a intenção é executar um servidor de aplicativos Node.js. na inicialização da máquina. Sua solução exigiria que um usuário humano fizesse primeiro login na máquina antes da execução do servidor Node.js. E, se algum tipo de problema faz com que uma reinicialização do servidor durante a noite, o aplicativo nunca mais voltar à vida até que os registros humanos de volta.Para algumas pessoas, isso funcionará:
Você pode simplesmente adicionar o seguinte comando em Sistema → Preferências → Aplicativos de Inicialização :
fonte