From 6b17ac8522f67df0edb78ce22b5445a40586c51c Mon Sep 17 00:00:00 2001 From: Eric Nemchik Date: Sun, 30 Jul 2023 01:07:22 -0500 Subject: [PATCH 1/2] Include cron Signed-off-by: Eric Nemchik --- Dockerfile | 1 + Dockerfile.aarch64 | 1 + 2 files changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 73b1366..8219691 100644 --- a/Dockerfile +++ b/Dockerfile @@ -110,6 +110,7 @@ RUN \ locales && \ echo "**** install packages ****" && \ apt-get install -y \ + cron \ curl \ gnupg \ jq \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index dc1e57e..c788e0d 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -110,6 +110,7 @@ RUN \ locales && \ echo "**** install packages ****" && \ apt-get install -y \ + cron \ curl \ gnupg \ jq \ From 538b1b7d77a3a9d263b563cde7f038fd08b61bad Mon Sep 17 00:00:00 2001 From: Eric Nemchik Date: Fri, 18 Aug 2023 23:06:35 -0500 Subject: [PATCH 2/2] cron in base Signed-off-by: Eric Nemchik --- .../dependencies.d/init-os-end | 0 .../s6-rc.d/init-crontab-config/run | 26 +++++++++++++++++++ .../s6-rc.d/init-crontab-config/type | 1 + .../s6-overlay/s6-rc.d/init-crontab-config/up | 1 + .../svc-cron/dependencies.d/init-services | 0 root/etc/s6-overlay/s6-rc.d/svc-cron/run | 15 +++++++++++ root/etc/s6-overlay/s6-rc.d/svc-cron/type | 1 + .../s6-rc.d/user/contents.d/svc-cron | 0 8 files changed, 44 insertions(+) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-os-end create mode 100755 root/etc/s6-overlay/s6-rc.d/init-crontab-config/run create mode 100644 root/etc/s6-overlay/s6-rc.d/init-crontab-config/type create mode 100644 root/etc/s6-overlay/s6-rc.d/init-crontab-config/up create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-cron/dependencies.d/init-services create mode 100755 root/etc/s6-overlay/s6-rc.d/svc-cron/run create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-cron/type create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-cron diff --git a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-os-end b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/dependencies.d/init-os-end new file mode 100644 index 0000000..e69de29 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 new file mode 100755 index 0000000..6eee9a6 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/run @@ -0,0 +1,26 @@ +#!/usr/bin/with-contenv bash +# shellcheck shell=bash + +for cron_user in abc root; do + if [[ -f "/defaults/crontabs/${cron_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; 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}" + crontab -u "${cron_user}" "/config/crontabs/${cron_user}" + fi +done diff --git a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/type b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/type @@ -0,0 +1 @@ +oneshot diff --git a/root/etc/s6-overlay/s6-rc.d/init-crontab-config/up b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/up new file mode 100644 index 0000000..d354111 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-crontab-config/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-crontab-config/run diff --git a/root/etc/s6-overlay/s6-rc.d/svc-cron/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/svc-cron/dependencies.d/init-services new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-cron/run b/root/etc/s6-overlay/s6-rc.d/svc-cron/run new file mode 100755 index 0000000..e8d71bf --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-cron/run @@ -0,0 +1,15 @@ +#!/usr/bin/with-contenv bash +# shellcheck shell=bash + +if builtin command -v crontab >/dev/null && [[ -n "$(crontab -l -u abc)" || -n "$(crontab -l -u root)" ]]; then + if builtin command -v busybox >/dev/null && [[ $(busybox) =~ [[:space:]](crond)([,]|$) ]]; then + exec busybox crond -f -S -l 5 + elif [[ -f /usr/bin/apt ]] && [[ -f /usr/sbin/cron ]]; then + exec /usr/sbin/cron -f -L 5 + else + echo "**** cron not found ****" + sleep infinity + fi +else + sleep infinity +fi diff --git a/root/etc/s6-overlay/s6-rc.d/svc-cron/type b/root/etc/s6-overlay/s6-rc.d/svc-cron/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-cron/type @@ -0,0 +1 @@ +longrun diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-cron b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-cron new file mode 100644 index 0000000..e69de29