it-swarm-pt.tech

Como adicionar um script à inicialização e desligamento no debian?

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?

12
Amir Arad

No Debian, os scripts de inicialização e desligamento de aplicativos e serviços devem ser colocados em /etc/init.d/.

O Debian fornece um exemplo de script /etc/init.d/skeleton que você pode modificar a seu gosto para seu aplicativo em particular.

Depois de instalado, ligue para:

# update-rc.d YOURAPP defaults

Para que o Debian adicione o /etc/rc?.d/ links simbólicos para você.

Se você preferir um menu ou interface gráfica, dê uma olhada no sysv-rc-conf ou ksysv pacote.

15
MikeyB

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 letras maiúsculas K 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 o parâmetro "stop", mas você pode ignorá-lo para um script de parada simples.

4
Brent

Para iniciar, dê uma olhada em this .

Para encerrar, crie um link/copie seu script para 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.

3
squillman

Desde o Debian Jessie, o antigo programa init foi substituído por systemd!

Confira você mesmo. Corre: ls -l /sbin/init e veja o que está apontando. Atualmente, aponta para systemd (/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 modo geral.

man systemd.service diz: *

Se um serviço for solicitado com um determinado nome, mas nenhum arquivo de configuração da unidade for encontrado, o systemd procurará um script de inicialização do SysV com o mesmo nome ... e criará dinamicamente uma unidade de serviço a partir desse script. Isso é útil para compatibilidade com o SysV. Observe que essa compatibilidade é bastante abrangente, mas não 100%.


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, primeiro você deseja criar um arquivo de unidade . Um arquivo de unidade é principalmente declarações, não código.

Em seguida, você usará o comando systemctl para ativar ou inicie 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 sobre systemd aqui:

Do Debian e em outros lugares e etc e etc .


Páginas de manual para começar:

man systemd.unit - Sobre arquivos de unidades em geral
man systemd.service - Sobre arquivos de unidades de serviço, por exemplo daemons e programas de execução única.

man systemctl - Interface do usuário da linha de comandos
man journalctl - Veja o log do que systemd fez

man systemd - Sobre o próprio programa init


Há também uma variedade de outros tipos de arquivos de unidade, por exemplo.

man systemd.target - para grupos e destinos sincronizados comuns.

Depois de digerir o básico acima, faça uma digitação com man -k systemd para encontrar outras páginas de manual relacionadas.



Faça o que fizer, no Debian não use nenhum destes :

  • update-rc.d - instale e remova links de script init do estilo System-V
  • sysv-rc-conf - Configuração em nível de execução para SysV como links de script init
  • runlevel - Imprime o nível de execução SysV anterior e atual
  • BUM - [~ # ~] b [~ # ~] oot [~ # ~] u [~ # ~] p [~ # ~] m [~ # ~] anager - a editor de nível de execução gráfico
  • systemadm - interface gráfica para o gerente de sistema e serviço systemd
    (Aliás, 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 meu endereço IP atual para atualizar meu DDNS ( [~ # ~] d [~ # ~] dinâmico [~ # ~] dns [~ # ~] ( [~ # ~] d [~ # ~] domínio [~ # ~] n [~ # ~] ame [~ # ~] s [~ # ~] erver)) base de dados do provedor, mantendo assim meu nome de domínio apontando para o meu computador onde quer que ele vá.

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:

#   Comments can only go at the beginning of the line!

[Unit]
Description=Start the NoIP IP update daemon.  This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST


[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking

# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2

# Be in no hurry to start this.  Max Nice is +19.
Nice=15

# If it dies for any reason, then restart it
Restart=always


[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target

Execute manualmente um arquivo de unidade (por exemplo, para teste):

  • inicie com $ Sudo systemctl start noip2.
  • reinicie com $ Sudo systemctl restart noip2.
  • pare com $ Sudo systemctl stop noip2.

Configure o sistema para executar automaticamente um arquivo de unidade ao iniciar ou desligar:

  • comece a usar com $ Sudo systemctl enable noip2.
  • termine usando com $ Sudo systemctl disable noip2.

Visualizar log

  • $ Sudo journalctl -u noip2
1
Elliptical view

O mais fácil é modificar os scripts existentes, funciona no meu sistema, usado para sons :)

  • inicialização, modifique /etc/init.d/rc.local, adicione seu sh no final do arquivo, antes: (ele será executado imediatamente antes do login na "tela")
  • desligamento, modifique /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 de desligamento real, chamado por este arquivo de script)
  • reiniciar, o mesmo que desligamento, mas em /etc/init.d/reboot
1
chickensk