From 0ece153acc9bf0166e879c5e37f689039ff5dd38 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Fri, 12 Jun 2026 11:36:51 -0400 Subject: [PATCH] move cron to os init, optimize cron init --- .../dependencies.d/init-device-perms} | 0 .../s6-rc.d/init-crontab-config/run | 24 +++++++------------ .../dependencies.d/init-crontab-config} | 0 3 files changed, 8 insertions(+), 16 deletions(-) rename root/etc/s6-overlay/s6-rc.d/{init-config-end/dependencies.d/init-crontab-config => init-crontab-config/dependencies.d/init-device-perms} (100%) rename root/etc/s6-overlay/s6-rc.d/{init-crontab-config/dependencies.d/init-config => init-os-end/dependencies.d/init-crontab-config} (100%) diff --git a/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-crontab-config b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-device-perms similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-crontab-config rename to root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-device-perms diff --git a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/run b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/run index 45a4e88b..2a71d6a6 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/run @@ -1,33 +1,25 @@ #!/usr/bin/with-contenv bash # shellcheck shell=bash +# /defaults/crontabs is for user customizable crontabs and they take priority over /etc/crontabs +# /etc/crontabs is for non-user customizable crontabs +# /config/crontabs is only imported if /defaults/crontab is present in image +# in RO environments, no import is done, only /etc/crontabs is active for cron_user in abc root; do - if [[ -z ${LSIO_READ_ONLY_FS} ]] && [[ -z ${LSIO_NON_ROOT_USER} ]]; then - if [[ -f "/etc/crontabs/${cron_user}" ]]; then - lsiown "${cron_user}":"${cron_user}" "/etc/crontabs/${cron_user}" - crontab -u "${cron_user}" "/etc/crontabs/${cron_user}" - fi - fi - - if [[ -f "/defaults/crontabs/${cron_user}" ]]; then + if [[ -f "/defaults/crontabs/${cron_user}" ]] && [[ -z ${LSIO_READ_ONLY_FS} ]] && [[ -z ${LSIO_NON_ROOT_USER} ]]; then # make folders mkdir -p \ /config/crontabs # if crontabs do not exist in config if [[ ! -f "/config/crontabs/${cron_user}" ]]; then - # copy crontab from system - if crontab -l -u "${cron_user}" >/dev/null 2>&1; then - crontab -l -u "${cron_user}" >"/config/crontabs/${cron_user}" - fi - - # if crontabs still do not exist in config (were not copied from system) # copy crontab from image defaults (using -n, do not overwrite an existing file) cp -n "/defaults/crontabs/${cron_user}" /config/crontabs/ fi - # set permissions and import user crontabs - lsiown "${cron_user}":"${cron_user}" "/config/crontabs/${cron_user}" + # import user crontabs crontab -u "${cron_user}" "/config/crontabs/${cron_user}" + + lsiown -R abc:abc /config/crontabs fi done diff --git a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-config b/root/etc/s6-overlay/s6-rc.d/init-os-end/dependencies.d/init-crontab-config similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-config rename to root/etc/s6-overlay/s6-rc.d/init-os-end/dependencies.d/init-crontab-config