Como posso iniciar os arquivos unitários do systemd (someservice.service) com o logging configurado como / dev / null?

2

Existe uma maneira de iniciar um serviço usando systemd e direcioná-lo para / dev / null SEM incluir as linhas apropriadas no arquivo da unidade.

Por exemplo, um arquivo que tenha as diretivas StandardOutput e StandardErorr definidas como null enviará logs para / dev / null.

[Unit]
Description=MyService
[Service]

ExecStart=/usr/bin/start_myservice.sh 
Restart=always
StandardOutput=null
StandardError=inherit

[X-Fleet]
Global=true

Este serviço pode ser iniciado com

systemctl start MyService.service

Minha pergunta é se existe uma maneira de iniciar um serviço que NÃO tenha as diretivas StandardOutput e StandardError definidas, e forçar seu log a ir para / dev / null. Talvez com um comando como

systemctl start OtherService.service --disable-logging
    
por Brian Sizemore 08.04.2016 / 20:52

1 resposta

2

Você pode sobrescrever qualquer coisa em uma unidade com drop-ins, arquivos que o systemd lê automaticamente a partir de um diretório de inclusão, se existir.

Por exemplo, se você criar um diretório /etc/systemd/system/myservice.service.d e, em seguida, um arquivo dentro desse diretório, as diretivas nesse arquivo substituirão o que estiver na unidade enviada pelo sistema.

Por exemplo, /etc/systemd/system/myservice.service.d/logging.conf :

[Service]
StandardOutput=null

(Mas note que se você criar o diretório e deixá-lo vazio, o serviço será mascarado e incapaz de iniciar!)

O uso de um drop-in também será mostrado sempre que você solicitar o status do serviço. Por exemplo:

# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/libvirtd.service.d
           └─zfs.conf
   Active: active (running) since Mon 2016-04-04 21:40:09 EDT; 3 days ago

Lembre-se de systemctl daemon-reload após criar ou editar um drop-in.

    
por 08.04.2016 / 21:09