AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 877721
Accepted
OsakaWebbie
OsakaWebbie
Asked: 2017-10-10 22:32:46 +0800 CST2017-10-10 22:32:46 +0800 CST 2017-10-10 22:32:46 +0800 CST

Cron diariamente executando duas vezes

  • 772

No meu servidor CentOS 7, erros gerados por um script de backup noturno que deveria funcionar bem me fizeram verificar minha atividade cron. Descobri que cron.dailyestá sendo executado duas vezes - aqui está a seção relevante /var/log/crondepois que removi meu script de backup para ver se de alguma forma estava causando o problema:

Oct 10 02:28:01 mail CROND[1750]: (root) CMD (run-parts /etc/cron.hourly)
Oct 10 02:28:01 mail run-parts(/etc/cron.hourly)[1750]: starting 0anacron
Oct 10 02:28:01 mail anacron[1759]: Anacron started on 2017-10-10
Oct 10 02:28:01 mail run-parts(/etc/cron.hourly)[1761]: finished 0anacron
Oct 10 02:28:01 mail anacron[1759]: Normal exit (0 jobs run)
Oct 10 02:30:01 mail CROND[1766]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 02:40:01 mail CROND[1847]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 02:50:01 mail CROND[1936]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:00:01 mail CROND[2032]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:10:01 mail CROND[2148]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:17:01 mail CROND[2223]: (root) CMD (run-parts /etc/cron.daily)
Oct 10 03:17:01 mail run-parts(/etc/cron.daily)[2223]: starting kizunademo
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2259]: finished kizunademo
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2223]: starting logrotate
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2266]: finished logrotate
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2223]: starting man-db.cron
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2277]: finished man-db.cron
Oct 10 03:20:01 mail CROND[2288]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:28:01 mail CROND[2367]: (root) CMD (run-parts /etc/cron.hourly)
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2367]: starting 0anacron
Oct 10 03:28:01 mail anacron[2376]: Anacron started on 2017-10-10
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2378]: finished 0anacron
Oct 10 03:28:01 mail anacron[2376]: Will run job `cron.daily' in 35 min.
Oct 10 03:28:01 mail anacron[2376]: Jobs will be executed sequentially
Oct 10 03:30:01 mail CROND[2381]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:40:01 mail CROND[2462]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:50:02 mail CROND[2547]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 04:00:01 mail CROND[2670]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 04:03:01 mail anacron[2376]: Job `cron.daily' started
Oct 10 04:03:01 mail run-parts(/etc/cron.daily)[2685]: starting kizunademo
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2721]: finished kizunademo
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2685]: starting logrotate
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2728]: finished logrotate
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2685]: starting man-db.cron
Oct 10 04:03:03 mail run-parts(/etc/cron.daily)[2739]: finished man-db.cron
Oct 10 04:03:03 mail anacron[2376]: Job `cron.daily' terminated
Oct 10 04:03:03 mail anacron[2376]: Normal exit (1 job run)

Por que está cron.dailyexecutando duas vezes? Como você pode ver, o log contém algumas entradas relacionadas à segunda execução que não estão presentes na primeira execução: duas linhas anunciando a próxima execução e mais duas linhas dizendo que terminou com uma saída normal. A primeira execução simplesmente executou os scripts sem alarde extra. Presumo que isso signifique alguma coisa, mas não sei o quê.

Verifiquei tudo o que pude pensar em busca de duplicatas de alguma coisa. Tenho certeza de que li todos os tópicos semelhantes sobre o assunto, então compare com o seguinte antes de chamar isso de pergunta duplicada. Baseado em Por que o cron está rodando duas vezes? Verifiquei processos extras - a saída completa ps aux | grep croné a seguinte, portanto, há apenas um processo:

root      9383  0.0  0.2 112672  2340 pts/0    S+   15:18   0:00 grep --color=auto cron
root     25624  0.0  0.0 126248   320 ?        Ss   Sep30   0:02 /usr/sbin/crond -n

Com base em trabalhos Cron rodando duas vezes - servidor Ubuntu 12.04 eu também verifiquei crontab -l -u root, que dizia no crontab for root.

E aqui está o meu /etc/crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[email protected]

28 * * * * root run-parts /etc/cron.hourly
17 3 * * * root run-parts /etc/cron.daily
44 2 * * 0 root run-parts /etc/cron.weekly
8 2 7 * * root run-parts /etc/cron.monthly

Pensamentos?

EDIT (9 meses após esta discussão ter ficado em silêncio):

Comentário de hoje de Marin Velikov me fez saber que existe um anacrontabarquivo (sei que é bobo, mas nem tinha me ocorrido). Eis o seu conteúdo:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Então essa é a causa. Mas por que o sistema seria configurado para executar ambos? Presumo que alguém mais esperto do que eu o tenha configurado dessa maneira, então hesito em mexer com ele antes de saber o propósito. E se eu realmente me livrar das entradas em crontabou anacrontab, qual é a melhor? Anacron é aparentemente a ferramenta mais sofisticada, mas parece estranho/errado esvaziar um arquivo crontab. Eu sou muito old-school?

cron
  • 2 2 respostas
  • 2361 Views

2 respostas

  • Voted
  1. Best Answer
    user143703
    2017-10-10T22:55:59+08:002017-10-10T22:55:59+08:00

    Por que o cron.daily está rodando duas vezes?

    crondestá executando uma vez:

    Oct 10 03:17:01 mail CROND[2223]: (root) CMD (run-parts /etc/cron.daily)
    

    anacronestá executando uma vez:

    Oct 10 04:03:01 mail anacron[2376]: Job `cron.daily' started
    

    crondbegin anacron, é por isso que você não viu um processo para isso:

    Oct 10 03:28:01 mail CROND[2367]: (root) CMD (run-parts /etc/cron.hourly)
    Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2367]: starting 0anacron
    Oct 10 03:28:01 mail anacron[2376]: Anacron started on 2017-10-10
    Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2378]: finished 0anacron
    Oct 10 03:28:01 mail anacron[2376]: Will run job `cron.daily' in 35 min.
    Oct 10 03:28:01 mail anacron[2376]: Jobs will be executed sequentially
    
    • 3
  2. Sean Read
    2019-12-10T12:55:13+08:002019-12-10T12:55:13+08:00

    Acabei de encontrar essa mesma situação em um de nossos servidores. De acordo com o cara com quem conversei, o anacron é mais destinado a PCs individuais que podem ser desligados durante a noite, em vez de servidores que teoricamente funcionam 24 horas por dia, 7 dias por semana; o anacron procura por trabalhos que podem ter sido perdidos enquanto uma máquina foi desligada. A máquina em que encontrei isso era um servidor do tipo 24 horas por dia, 7 dias por semana, e o arquivo /etc/anacrontab estava apenas (re)executando cron.daily, cron.weekly e cron.monthly. Eu removi o anacron do servidor que encontrei estava fazendo isso e espero que isso resolva.

    • 2

relate perguntas

  • Qual é a sintaxe correta para executar o cron a cada 4 horas? [duplicado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve