como faço para passar o usuário em [Serviço] para a unidade OnFailure no systemd

1

Eu tenho uma unidade systemd que é executada como um usuário específico (não raiz). Esta unidade possui um OnFailure com 1 outra unidade de sistema. Nesta unidade OnFailure, o ExecStart inicia um script de shell que envia um email. Eu quero passar para este script de shell o usuário da unidade de sistema de origem que falhou. Como posso conseguir isso?

    
por W.Simons 14.07.2017 / 11:04

1 resposta

1

A maneira usual de iniciar uma unidade enquanto passa um parâmetro é usar instâncias e iniciar unit@parameter e recuperar esse valor dentro da unidade com %I . Por exemplo, usando --user para teste, arquivo ~/.config/systemd/user/tryfail.service :

[Unit]
User=otheruser
[email protected]
[Service]
ExecStart=/bin/bash -c 'sleep 3;exit 7'

e ~/.config/systemd/user/[email protected]

[Unit]
Description=%I Instance of Fail Service
[Service]
ExecStart=/bin/bash -c 'echo got %i'
StandardOutput=journal

Agora os comandos

systemctl --user daemon-reload
systemctl --user start tryfail
journalctl -f 

deve mostrar o serviço de falha sendo iniciado com otheruser como informações. Obviamente, o User= é ignorado ao testar com --user , mas isso não tem consequências.

    
por 14.07.2017 / 15:16

Tags