На днях я узнал, что мой контейнер Docker был убит, так как демон docker был автоматически обновлен на ящике AWS, на котором я работал.
journald
показал эти сообщения в соответствующем временном интервале:
Aug 06 05:56:01 ip-192-168-3-117 systemd[1]: Starting Daily apt download activities...
Aug 06 05:56:11 ip-192-168-3-117 systemd[1]: Started Daily apt download activities.
Aug 06 06:06:39 ip-192-168-3-117 systemd[1]: Starting Daily apt upgrade and clean activities...
Aug 06 06:06:48 ip-192-168-3-117 systemd[1]: Reloading.
Aug 06 06:06:48 ip-192-168-3-117 systemd[1]: Starting Message of the Day...
Aug 06 06:06:48 ip-192-168-3-117 systemd[1]: Reloading.
Aug 06 06:06:49 ip-192-168-3-117 systemd[1]: Reloading.
Aug 06 06:06:49 ip-192-168-3-117 systemd[1]: Stopping Docker Application Container Engine...
Как я могу узнать, когда запланирован этот запуск? Я просмотрел различные задания cron в /etc
и подумал, что /etc/cron.daily/apt-compat
был задействован, поскольку он содержал это в конце:
# delay the job execution by a random amount of time
random_sleep
# ensure we don't do this on battery
check_power || exit 0
# run daily job
exec /usr/lib/apt/apt.systemd.daily
но оказалось, что он никогда не доходит до этого, поскольку на самом деле он просто использует systemd
. Я пропустил это в начале cron.daily/apt-compat
:
# 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
if [ -d /run/systemd/system ]; then
exit 0
fi
Поэтому каким-то образом systemd запланировал запуск этого файла.
Этот файл, /usr/lib/apt/apt/apt.systemd.daily
, в основном похож на сценарий, отвечающий за это, хотя я не могу найти никаких строк выше, таких как "Starting .* activities".
Итак, systemd составляет расписание, но где оно хранится? Где сказано запускать /usr/lib/apt/apt/apt.systemd.daily
?
Это системный таймер. Вы можете проверить состояние таймеров systemd, используя:
systemctl list-timers
Он должен указать apt-daily.timer
. Вы можете проверить его спецификацию, используя:
systemctl show apt-daily.timer
Файл находится в /lib/systemd/system/apt-daily.timer
. (Не редактируйте этот файл напрямую, если хотите изменить таймер. См. Как переопределить или настроить службы systemd? )