Eu tenho um CentOS 6.6
servidor com os seguintes pacotes instalados:
crontabs-1.10-33.el6.noarch
cronie-1.4.4-12.el6.x86_64
cronie-anacron-1.4.4-12.el6.x86_64
kernel-2.6.32-504.3.3.el6.x86_64
Às vezes, uma das tarefas de backup agendadas para execução diária simplesmente não é executada. O script nem é chamado de acordo com /var/log/cron.log
. Interessante mencionar que outros trabalhos agendados para execução exatamente ao mesmo tempo são executados sem problemas.
Não consigo reproduzir o problema e não vi nenhum padrão nele. Se eu não fizer nada, o trabalho será executado corretamente no dia seguinte, conforme o esperado.
O crond simplesmente ignora apenas um dos vários trabalhos que deveriam ser executados em um determinado momento. Isso só acontece esporadicamente.
Eu li em alguns outros lugares pessoas falando sobre adicionar uma linha vazia no final do crontab
arquivo. O trabalho que ocasionalmente falha na execução está realmente na última linha do meu crontab
arquivo. Não foi possível encontrar nenhuma confirmação de que este é um bug real ou conhecido.
# tail -2 /var/spool/cron/postgres
* * * * * OTHERJOB
0 21 * * * /pg_backup.sh
Isso é tudo que tenho na minha /var/log/cron.log
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19394]: (root) CMD (OTHERJOB)
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19418]: (postgres) CMD (/pg_backup.sh)
Mar 31 21:01:02 SERVERNAME [cron.info] CROND[20062]: (root) CMD (OTHERJOB)
Apr 1 21:00:02 SERVERNAME [cron.info] CROND[31349]: (root) CMD (OTHERJOB)
Apr 1 21:01:01 SERVERNAME [cron.info] CROND[32080]: (root) CMD (OTHERJOB)
Veja como OTHERJOB
sempre executar enquanto Apr 1
pg_backup.sh
estava ligado nem foi executado.
Eu já tentei reiniciar, crond
mas isso continua acontecendo. Isso está afetando vários servidores com a mesma versão do SO, kernel e cron
RPMs.
Existe uma versão mais recente de cronie
( 1.4.12
), no entanto, a atualização não é uma opção, pois já estamos usando a versão mais recente disponível paraCentos 6.6
Examinei o changelog de todas as cronie
versões após o meu ( 1.4.4
) e não pareci nenhuma correção para esse problema específico. Também verificou todas as mensagens de confirmação .
echo >/dev/null
por exemplo)?/var/log/audit/audit.log
.Respostas:
O cron original exigia que cada entrada terminasse com uma nova linha; portanto, às vezes você precisa de uma linha em branco ou de algo no final.
Algumas versões corrigem ou emitem um aviso, por exemplo, o Ubuntu Maverik (10.10): crontab, veja a seção de diagnóstico na parte inferior, que indica que um aviso será gravado no syslog.
fonte
Esta é a primeira resposta que vem com o texto de pesquisa,
cron error getpwname failed
então pensei em publicar a causa do meu problema:Eu estava usando o / etc / crontab, mas havia esquecido de colocar o usuário na frente do comando.
ou seja,
Ao invés de
Deu o mesmo erro, vai entender.
fonte
usamos
sssd
para autenticação remota.crond
precisa verificar os usuários disponíveis antes da execução dos trabalhos e isso é feito a cada 60 segundos.sssd
o padrãoclient_idle_timeout
é 60 segundos. então tivemos uma condição de corrida entresssd
ecrond
Chegamos apenas ao fundo desse problema porque, na versão
1.4.4-14
crond, começamos a ser um pouco mais detalhados sobre alguns erros.Após a atualização para essa versão, começamos a ver o erro abaixo ao mesmo tempo em que um trabalho não era executado:
que nos levou a isso: https://bugzilla.redhat.com/show_bug.cgi?id=1209600#c2
e finalmente: https://access.redhat.com/solutions/1125133
A solução sugerida no link acima foi adicionar a linha abaixo a
/etc/sssd/sssd.conf
:A alteração acima corrigiu o problema para nós e o cron não pula mais os trabalhos.
fonte