AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 507451
Accepted
U. Windl
U. Windl
Asked: 2019-03-21 06:14:53 +0800 CST2019-03-21 06:14:53 +0800 CST 2019-03-21 06:14:53 +0800 CST

Como migrar um script LSB de várias instâncias para o systemd?

  • 772

Eu escrevi um script de inicialização LSB que pode gerenciar várias instâncias do meu daemon: rcfoo startinicia todas as instâncias (que são encontradas em algum /etcarquivo de configuração), rcfoo stopinterrompe todas as instâncias, rcfoo statusexibe o status de todas as instâncias e rcfoo reloadrecarrega as atualizações do daemon com uma configuração alterada .

Primeiro, gostaria de saber como detectar as instâncias para trabalhar com algum [email protected]arquivo de unidade systemd. AFAIK Devo especificar todas as instâncias como foo@A, foo@Be assim por diante.

Em segundo lugar, meu script LSB pode relatar um status estendido, o que significa que pode exibir se um serviço reloadé necessário (e reloadrealmente otimiza para recarregar apenas os serviços que precisam). Como posso fazer um relatório de status personalizado? Eu acho que um script deve ser usado systemd-notifypara mensagens de status personalizadas.

Felizmente, minha extensão final para o script LSB, ou seja, manipular instâncias únicas adicionando single <instance>(como em rcfoo start single A), é compatível com o systemd.

Então minha pergunta básica é a primeira.

systemd init-script
  • 1 1 respostas
  • 207 Views

1 respostas

  • Voted
  1. Best Answer
    U. Windl
    2019-05-17T03:22:10+08:002019-05-17T03:22:10+08:00

    Encontrei duas soluções possíveis:

    1. Escreva um "script wrapper" que aceite um parâmetro de instância e um parâmetro de comando. Em seguida, o script deve pesquisar se a instância solicitada é realmente encontrada no arquivo de configuração em /etc. O script realmente fornece start, stope reload, enquanto o PID do processo daemon é tratado pelo systemd via PIDFile=.

      Além disso, escreva uma unidade de serviço como [email protected]aquela que contém o script wrapper para ExecStart=, ExecStop=, etc. O nome da instância é representado por %ilá. O que não é tão bom é o fato de que você terá que saber os nomes das instâncias e, ao usar um inválido, o systemd cria uma instância não operacional que é reiniciada repetidamente (até ser limpa manualmente com systemctl reset-failed). A coisa com reinicialização condicional não foi resolvida com essa abordagem. Então você faria systemctl start foo@A.

    2. Alternativamente, você pode se livrar do script wrapper escrevendo um gerador que lê o arquivo de configuração e cria um arquivo de unidade de instância de serviço para cada instância encontrada. As linhas de comando usadas são montadas pelo gerador usando o arquivo de configuração. Comandos shell adicionais (por exemplo, para criar um diretório de tempo de execução ou aguardar a conclusão do fork do daemon) são adicionados pelo gerador via ExecStartPre=e ExecStartPost=.

      Existem alguns problemas não resolvidos, mas a comunidade systemd representada na lista de desenvolvimento não foi realmente útil: Eles me disseram que os geradores são um conceito avançado que eu não deveria usá-lo , não respondendo às minhas perguntas.

    As coisas que faltam nesta resposta são: Como configurar um destino de sistema que inicia e interrompe todos os serviços? Eu pensei que teria um, mas falhou na inicialização (o arquivo de unidade gerado estava vazio por motivos desconhecidos).

    • 0

relate perguntas

  • Níveis diferenciadores no journalctl

  • Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _

  • systemd: como posso executar um script no início de um serviço, sem editar a definição do serviço

  • Use o suporte de watchdog do systemd para reiniciar o aplicativo

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve