Estou tentando entender como as atualizações automáticas estão acontecendo por meio do pacote de atualizações autônomas. O que está descrito abaixo é o que encontrei em uma nova instalação do Ubuntu 16.04.3.
/etc/cron.daily/apt-compat
tem uma linha exec /usr/lib/apt/apt.systemd.daily
no final que executa o script apt.systemd.daily
.
systemd também é executado /usr/lib/apt/apt.systemd.daily
e usa um timer. A definição de serviço do systemd que faz a atualização pode ser encontrada em /lib/systemd/system/apt-daily.service
. Ele chama o script apt.systemd.daily
com o argumento update
enquanto a definição de serviço do systemd /lib/systemd/system/apt-daily-upgrade.service
chama o mesmo script com o argumento install
.
Pelo que entendi, /usr/lib/apt/apt.systemd.daily
é o script usado pelo pacote unattended-upgrades para fazer as atualizações automáticas. O que eu gostaria de saber é por que o cron e o systemd o executam?
Responder1
Os dois jobs são complementares e o relacionamento é descrito no cron job (16.04 e mais recente):
# Systemd systems use a systemd timer unit which is preferable to
# run. We want to randomize the apt update and unattended-upgrade
# runs as much as possible to avoid hitting the mirrors all at the
# same time. The systemd time is better at this than the fixed
# cron.daily time
No Ubuntu 16.04 e em sistemas mais recentes, o temporizador do systemd é a tarefa importante. Ele faz todo o trabalho pesado. O cronjob legado apenas aciona o cronômetro do systemd, caso por algum motivo ele tenha sido interrompido.
No Ubuntu 14.04 e em sistemas mais antigos (não Systemd), o sistema funciona de maneira bem diferente: o cronjob aciona uma série de atualizações autônomas.