Como ver qual comando está sendo executado por um arquivo systemd .timer?

1

Como exemplo, assuma a programação phpsessionclean. O arquivo cron.d para isso se parece com isto:

09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

Está dizendo que se o systemd não existir no sistema, execute o script /usr/lib/php/sessionclean .

Se o systemd existir, ele não será executado e o timer do systemd será executado. O arquivo phpsessionclean.timer tem esta aparência:

[Unit]
Description=Clean PHP session files every 30 mins

[Timer]
OnCalendar=*-*-* *:09,39:00
Persistent=true

[Install]
WantedBy=timers.target

Eu li sobre criar seus próprios arquivos .timer e criar um arquivo .service associado contendo os detalhes do script que você está executando, mas, neste caso, e no caso de outros arquivos .timer instalados por pacotes (como certbot, apt etc.) não há arquivos .service associados. Então, como posso inferir qual comando será executado quando este cronômetro for executado?

    
por Darren 17.07.2017 / 10:46

1 resposta

3

Você pode estar procurando no lugar errado. As unidades podem estar em vários lugares.

$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
...

(você também pode ver um comando aqui:

$ systemctl status systemd-tmpfiles-clean.service
● systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-clean.service; static)
   Active: inactive (dead) since Sun 2017-07-16 17:34:00 BST; 16h ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 28580 ExecStart=/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
 Main PID: 28580 (code=exited, status=0/SUCCESS)

Para verificar novamente o serviço associado:

$ systemctl show -p Unit systemd-tmpfiles-clean.timer
Unit=systemd-tmpfiles-clean.service
    
por 17.07.2017 / 11:29