Systemd - como o serviço pode determinar a primeira execução da execução de reinicialização?

2

Eu gostaria de ter um serviço que se comportasse de maneira diferente na primeira execução e na reinicialização do serviço. Isso é possível com o systemd? (Eu uso o systemd no meu sistema operacional embutido).

Eu tentei com ExecReload e ExecStart, mas ExecReload é executado somente quando eu uso o comando "systemctl restart". Por outro lado, o ExecStart é executado após o serviço Restart (tenho Restart = on-failure e RestartSec = 5).

    
por s.paszko 27.07.2016 / 14:59

2 respostas

5

Você pode usar systemctl set-environment para enviar alguns valores para execuções futuras do serviço. Por exemplo, com uma unidade:

[Unit]
Description=testing
[Service]
Type=oneshot
ExecStart=/my/command myarg1 ${MYDONE}
ExecStart=/usr/bin/systemctl set-environment MYDONE=1
[Install]

No primeiro systemctl start <unit> o último arg passado para /my/command será '' e MYDONE não estará no ambiente. Em versões posteriores, o último argumento será 1 e MYDONE=1 estará no ambiente.

    
por 27.07.2016 / 21:34
1

Você pode definir a primeira execução em um arquivo .service separado, usando

[Service]
Type=oneshot

Em seguida, crie outro arquivo .service que dependa daquele, que será aquele que é executado regularmente.

    
por 27.07.2016 / 15:26