El paso de Debian Jessie a Stretch nos trajo systemd y de la mano actualizaciones automáticas en nuestro sistema.
Estas actualizaciones están configuradas con dos unidades tipo timer que lanzan a su vez y debido momento dos unidades tipo service estáticas.
[root@jota-pc ~]# systemctl list-unit-files | grep apt apt-daily-upgrade.service static apt-daily.service static apt-daily-upgrade.timer enabled apt-daily.timer enabled
Los timers son unidades que actúan como crontabs en sí, especificando cuándo lanzan ciertas tareas. De hecho podemos ver estas dos en /lib/systemd/system
, por ejemplo apt-daily.timer:
[root@jota-pc system]# cat apt-daily.timer [Unit] Description=Daily apt download activities [Timer] OnCalendar=*-*-* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers.target
Y apt-daily-upgrade.timer:
[root@jota-pc system]# cat apt-daily-upgrade.timer [Unit] Description=Daily apt upgrade and clean activities After=apt-daily.timer [Timer] OnCalendar=*-*-* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers.target
Los servicios en estado estático se arrancan si otra unidad de systemd los invoca. Las unidades .timer se encargan de lanzar las unidades homólogas .service que tienen el mismo nombre. De esta manera la unidad tipo timer llamada apt-daily.timer se encargará de lanzar la unidad tipo service apt-daily.service
También podemos echar un vistazo a los servicios de apt que se lanzan en /lib/systemd/system
, por ejemplo apt-daily.service:
[Unit] Description=Daily apt download activities Documentation=man:apt(8) ConditionACPower=true After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/lib/apt/apt.systemd.daily update
Y apt-daily-upgrade.service:
[Unit] Description=Daily apt upgrade and clean activities Documentation=man:apt(8) ConditionACPower=true After=apt-daily.service [Service] Type=oneshot ExecStart=/usr/lib/apt/apt.systemd.daily install KillMode=process TimeoutStopSec=900
Si queremos mirar un poco más veremos que /usr/lib/apt/apt.systemd.daily es simplemente un script en bash al que le pasamos un argumento para que realice ciertas tareas. El equivalente de todo esto que tiene montado systemd es hacer un apt update && apt upgrade
.
Pues bien, si queremos deshabilitar estas actualizaciones automáticas:
# apt-daily systemctl stop apt-daily.timer systemctl disable apt-daily.timer # apt-daily-upgrade systemctl stop apt-daily-upgrade.timer systemctl disable apt-daily-upgrade.timer
Con deshabilitar los timers basta ya que dejarán de invocarse los service, pero si queremos asegurarnos de que nada ni nadie lanza las unidades service podemos hacerles un mask:
systemctl mask apt-daily.service systemctl mask apt-daily-upgrade.service
Y ahora si comprobamos:
[root@jota-pc system]# systemctl list-unit-files |grep apt apt-daily-upgrade.service masked apt-daily.service masked apt-daily-upgrade.timer disabled apt-daily.timer disabled