Я получаю ошибку при попытке запустить cron на/против контейнера docker. Что-то я упускаю?

Я получаю ошибку при попытке запустить cron на/против контейнера docker. Что-то я упускаю?

Я последовал заэтотруководство по моему unRAID-серверу в моем контейнере docker (siwatinc/ubuntu-playground) и успешно заставил его работать. Я установил cron на образ docker под названием UbuntuPlayground, и все из руководства работало успешно, пока задача cron не дала сбой. Я поискал проблему и думаю, что это из-за того, что в образе docker нет systemd (IDK, что это на самом деле) и он не запущен, поэтому cron нужно загрузить специальные вещи, чтобы он заработал. Поэтому я отошел от этого. Но если я нахожусь в bash моего контейнера docker с помощью этой команды:

docker exec -it UbuntuPlayground bash

Я могу запустить ./speedtest.sh из домашнего каталога, где находится скрипт оболочки, и он выполнит тест скорости в Интернете и загрузит его на Google Drive. Так что я обнаружил, что если я оставлю образ docker и из SSH на сервере unraid я запущу эту команду:

docker exec -it UbuntuPlayground /root/speedtest.sh

он успешно запустит код. Я даже могу видеть результаты теста скорости на моем Google Drive. Поэтому я попытался сделать cronjob на unraid, чтобы просто запустить эту команду. Поэтому я протестировал cron с помощью:

0 * * * * docker exec -it UbuntuPlayground /root/speedtest.sh

Я дал ему поработать несколько часов и проверил, но он не работал. Поэтому я попытался создать скрипт оболочки на хосте для запуска команды. Вот содержимое:

#!/bin/bash
docker exec -it UbuntuPlayground /root/speedtest.sh

Это просто называется speedtest.sh. Поэтому я добавил speedtest.sh в свой crontab:

0 * * * * /root/speedtest.sh

Затем я пошел спать и обнаружил эту проблему в моем /var/log/syslog

Nov  3 21:00:01 TrevNas2 sudo:     root : TTY=unknown ; PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -it UbuntuPlayground /root/speedtest.sh
Nov  3 21:00:01 TrevNas2 crond[1861]: exit status 1 from user root /root/speedtest.sh
Nov  3 21:00:06 TrevNas2 sSMTP[26673]: Creating SSL connection to host
Nov  3 21:00:06 TrevNas2 sSMTP[26673]: SSL connection using TLS_AES_256_GCM_SHA384
Nov  3 21:00:07 TrevNas2 sSMTP[26673]: Authorization failed (534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor j79sm5194000ywj.11 - gsmtp)
Nov  3 21:00:07 TrevNas2 crond[1861]: exit status 1 from user root /usr/local/sbin/mover &> /dev/null
Nov  3 22:00:01 TrevNas2 sudo:     root : TTY=unknown ; PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -it UbuntuPlayground /root/speedtest.sh
Nov  3 22:00:01 TrevNas2 crond[1861]: exit status 1 from user root /root/speedtest.sh
Nov  3 22:00:06 TrevNas2 sSMTP[21643]: Creating SSL connection to host
Nov  3 22:00:06 TrevNas2 sSMTP[21643]: SSL connection using TLS_AES_256_GCM_SHA384
Nov  3 22:00:07 TrevNas2 sSMTP[21643]: Authorization failed (534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor x64sm4861319ywb.55 - gsmtp)
Nov  3 22:00:12 TrevNas2 crond[1861]: exit status 1 from user root /usr/local/sbin/mover &> /dev/null

Итак, он падает с кодом выхода один. Я не понимаю, в чем проблема. Я подумал, что это какая-то проблема, которая просто выше моего понимания. Я погуглил код выхода один и ничего не нашел. Мне следует попытаться исправить проблему в контейнере docker при запуске cron или исправить проблемы в cron на моей хост-машине? Или кто-нибудь знает, как исправить и то, и другое?

Если вы все это прочитали, спасибо.

решение1

Я выяснил, почему это не работает в контейнере docker. cron не был запущен внутри. ИспользованиеэтотПри обмене стеками я обнаружил, что мне нужно выполнить следующую команду:

/etc/init.d/cron start

После этого я протестировал базовую задачу crontask, которая каждую минуту обращалась к файлу, и это сработало, а затем я добавил

*/30 * * * * /root/speedtest.sh

снова в свой crontab и я вижу последний запущенный speedtest. Так что это был просто случай, когда cron на самом деле не работал.

Связанный контент