Escrevendo script systemd

3

Eu tenho um processo que preciso executar na inicialização. É algo que precisa ficar funcionando o tempo todo em que a máquina está ligada. A partir de agora eu estou apenas digitando o seguinte em bash tudo que eu inicio o meu servidor.

command -f argument & disown

Eu sei que preciso criar um script de inicialização, mas não fazia ideia de como. Depois de alguma pesquisa, parece que o Ubuntu usa o systemd (algumas referências disseram que o Upstart não é o mesmo?) Como o seu sistema init. Mas todos os guias que encontrei on-line dizem-me para colocar o meu executável em /etc/init ou /etc/init.d . Init é suposto ser um sistema init completamente diferente.

Alguém por favor pode me apontar na direção certa? Um exemplo de script systemd ou até mesmo um guia on-line seria uma grande ajuda.

    
por vikarjramun 10.05.2017 / 18:36

1 resposta

5

Você precisa de dois arquivos:

  1. Seu arquivo de script:

    command.sh
    
  2. O arquivo .service a ser colocado em /etc/systemd/system e com permissão de 644 com chmod 664 command.service :

    command.service
    
  3. O conteúdo mais simples de command.service seria:

    [Unit]
    Description=Some service description
    
    [Service]
    ExecStart=/bin/bash -c "/path/to/command.sh -f argument & disown"
    
    [Install]
    WantedBy=multi-user.target
    
  4. Agora, para fazer o lançamento na inicialização, usamos o systemd controller systemctl :

    sudo systemctl enable command
    
    # or 
    
    sudo systemctl enable command.service
    

Observe que muitas outras opções estão disponíveis para as várias seções, consulte aqui e verifique se o command.sh é executável com chmod +x command.sh

    
por George Udosen 10.05.2017 / 20:22