Estou recebendo um erro ao tentar fazer com que o cron seja executado em/contra um contêiner do Docker. Algo que estou faltando?

Estou recebendo um erro ao tentar fazer com que o cron seja executado em/contra um contêiner do Docker. Algo que estou faltando?

eu seguiesseguia no meu servidor unRAID dentro do meu contêiner docker (siwatinc/ubuntu-playground) e fiz com que funcionasse com sucesso. Instalei o cron em uma imagem docker chamada UbuntuPlayground e todo o material do guia funcionou com êxito até que a tarefa cron falhou. Pesquisei o problema e acho que é porque a imagem do docker não tem o systemd (IDK o que realmente é) não está em execução, então o cron precisa baixar coisas especiais para fazê-lo funcionar. Então eu mudei disso. Mas se eu estiver no bash do meu contêiner docker com este comando:

docker exec -it UbuntuPlayground bash

Posso executar ./speedtest.sh no diretório inicial onde o script de shell está localizado e ele fará o teste de velocidade na Internet e fará o upload para o Google Drive. Então descobri que também, se eu deixar a imagem do docker e do SSH no servidor unraid, executo este comando:

docker exec -it UbuntuPlayground /root/speedtest.sh

ele executará o código com sucesso. Posso até ver os resultados do teste de velocidade no meu Google Drive. Então tentei fazer um cronjob no unraid para apenas executar esse comando. Então testei o cron com:

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

Deixei funcionar por algumas horas e verifiquei e não estava funcionando. Então tentei fazer um script de shell no host para executar o comando. Aqui está o conteúdo:

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

Isso é chamado apenas de speedtest.sh. Então adicionei speedtest.sh ao meu crontab:

0 * * * * /root/speedtest.sh

Aí fui dormir e tive esse problema no meu /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

Portanto, está falhando com o código de saída um. Não entendo qual é o problema disso. Achei que era algum problema que estava na minha cabeça. Pesquisei o código de saída um e não consigo encontrar nada. Devo tentar corrigir o problema no contêiner do docker ao executar o cron ou corrigir os problemas no cron na minha máquina host? Ou alguém sabe como consertar?

Se você leu tudo isso, obrigado.

Responder1

Eu descobri por que não está funcionando no contêiner do docker. cron não estava sendo executado. Usandoessetroca de pilha descobri que preciso executar o seguinte comando:

/etc/init.d/cron start

Depois disso testei um crontask básico que tocava um arquivo a cada minuto que funcionava e então adicionei

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

para o meu crontab novamente e posso ver o último teste de velocidade executado. Então foi apenas um caso de o cron não estar realmente em execução.

informação relacionada