o título resume bastante.
como adiciono um startup.sh e shutdown.sh do meu aplicativo de servidor à sequência de inicialização e desligamento do sistema operacional Debian?
No Debian, os scripts de inicialização e desligamento de serviços e aplicativos devem ser colocados /etc/init.d/
.
O Debian fornece um exemplo de script /etc/init.d/skeleton
que você pode modificar a seu gosto para sua aplicação específica.
Depois de instalado, ligue para:
# update-rc.d YOURAPP defaults
Para que o Debian adicione os /etc/rc?.d/
links simbólicos para você.
Se você preferir um menu ou interface gráfica, dê uma olhada no pacote sysv-rc-conf
ou ksysv
.
Você pode chamar seu script em /etc/rc.local , antes da linha que diz exit 0
Quanto ao encerramento do seu aplicativo, sugiro colocar um script em /etc/rc0.d . Você precisa nomeá-lo com K maiúsculo e, em seguida, um número de 2 dígitos que especifica a ordem em que esses scripts são executados e, em seguida, um nome. Ele será chamado com um parâmetro "stop", mas você pode ignorá-lo para um script de parada simples.
Para a inicialização, dê uma olhada nisso .
Para encerrar, crie um link / copie seu script em uma das pastas /etc/rcX.d em que X é o nível de execução em que você deseja que ele seja executado. 0 é o nível de execução de desligamento do Debian, acredito.
fonte
O mais fácil é modificar os scripts existentes, funciona no meu sistema, usado para sons :)
/etc/init.d/rc.local
, adicione seu sh no final do arquivo, antes: (ele será executado imediatamente antes do login na "tela")/etc/init.d/halt
, adicione seu sh no início do arquivo, logo após os comentários iniciais (ele será executado antes do comando shutdown real, chamado por este arquivo de script/etc/init.d/reboot
fonte
Desde o Debian Jessie, o
init
programa antigo foi substituído porsystemd
!Confira você mesmo. Execute:
ls -l /sbin/init
e veja o que está apontando. Atualmente, aponta parasystemd
(/sbin/init -> /lib/systemd/systemd
), um programa de inicialização mais novo e melhor.ASSIM, AS ESCOLHAS E OUTRAS RESPOSTAS AQUI ESTÃO ATUALIZADAS !!!
* Embora você ainda possa instalar scripts da maneira antiga com as ferramentas do System-V, não é uma boa idéia de um modo geral.
man systemd.service
diz: *Para sistemas Debian mais novos (ou seja, Jessie, Stretch, Buster, etc ...)
É mais fácil do que você pensa. (-:
Aqui está o método novo e preferido para instalar programas de inicialização ou desligamento.
Com
systemd
você primeiro deseja criar um arquivo de unidade . Um arquivo de unidade é principalmente declarações, não código.Em seguida, você usará o
systemctl
comando para ativar ou iniciar essa unidade.systemd
faz grande parte do trabalho para você, facilitando, por exemplo, que um programa crítico seja reiniciado automaticamente se travar ou for morto. Além disso, ele desliga o programa onde e quando deveria, por padrão, sem trabalho extra de sua parte.Comece a aprender
systemd
aqui:De Debian e em outros lugares e etc e etc .
Páginas de manual para começar:
man systemd.unit
- Sobre arquivos de unidades em geralman systemd.service
- Sobre arquivos de unidades de serviço, por exemplo, daemons e programas de execução única.man systemctl
- Interface de usuário da linha de comandoman journalctl
- Veja o log do que systemd fezman systemd
- Sobre o próprio programa initHá também uma variedade de outros tipos de arquivos de unidades, por exemplo
man systemd.target
- para grupos e destinos sincronizados comuns.Depois de digerir o básico acima,
man -k systemd
procure em outras páginas do manual relacionadas.Faça o que fizer, no Debian não use nenhum destes :
update-rc.d
- instalar e remover links de script init do estilo System-Vsysv-rc-conf
- Configuração em nível de execução para SysV como links de script initrunlevel
- Imprima o nível de execução SysV anterior e atualBUM
- B oot U p M anager - um editor de nível de execução gráficasystemadm
- Interface gráfica para o gerente de sistema e serviço systemd(BTW, o autor me disse por e-mail que está muito quebrado agora).
UM EXEMPLO:
Esse arquivo de unidade inicia o daemon NoIP.com quando eu inicializo e o encerra quando eu desligo.
Este daemon, de tempos em tempos, envia o meu endereço IP atual para atualizar meu DDNS ( D inâmica DNS ( D OMain N ame S erver)) base de dados do provedor, mantendo assim o meu nome de domínio que aponta no meu computador onde quer que ele viaja para.
Os arquivos desta unidade estão localizados no meu sistema neste arquivo de configurações:
/etc/systemd/system/noip2.service
Aqui está o que está no arquivo da unidade:
Execute manualmente um arquivo de unidade (por exemplo, para teste):
$ sudo systemctl start noip2
.$ sudo systemctl restart noip2
.$ sudo systemctl stop noip2
.Configure o sistema para executar automaticamente um arquivo de unidade ao iniciar ou desligar:
$ sudo systemctl enable noip2
.$ sudo systemctl disable noip2
.Visualizar log
$ sudo journalctl -u noip2
fonte