tarefas cron.daily não estão em execução

16

Eu criei 3 tarefas diárias do cron para serem executadas.

Abaixo estão os três que são colocados em etc / cron.daily

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' [email protected]

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]

Substitui [email protected] de curso por meu e-mail.

Se eu executar este cron manualmente, ele funcionará bem ./nameoffile.sh

Mas não funciona diariamente, qual pode ser a causa ou como posso verificar isso?

    
por sonicboom 25.08.2013 / 22:55

6 respostas

5

Existem dois possíveis suspeitos que geralmente fazem com que cron não seja executado.

O primeiro é o problema de permissões, ou seja, um usuário pode executar o script / comando, mas o daemon do cron não pode, porque o trabalho está nas tarefas cron do usuário incorreto. Por exemplo, o usuário cria um script ou executa um comando com privilégios elevados, por exemplo, usando sudo e, em seguida, adiciona o script / comando testado à sua lista de tarefas agendadas ( crontab ). O resultado é que a tarefa cron do usuário não poderá ser executada, pois precisa de privilégios elevados.

  • Para colocar um cron job no tipo de crontab do usuário atual crontab -e
  • Para colocar um cron job no tipo crontab do root sudo crontab -e

A segunda razão é os caminhos, para ter certeza de que o script será executado, o usuário deve adicionar o caminho completo para o script a ser executado no crontab. Outra solução seria expandir a variável PATH dos usuários raiz, colocando a seguinte linha na parte superior do arquivo crontab:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

como o wiki da comunidade menciona .

Você pode querer ler o wiki da comunidade sobre o cron, pois ele fornece mais detalhes sobre o que foi dito acima.

    
por Stef K 26.08.2013 / 01:00
57

De acordo com a esta resposta , o problema fica com a extensão .sh. Remova isso (por exemplo, renomeie seu arquivo de rkhunter.sh para rkhunter.

Para confirmar, execute o seguinte comando run-parts --test /etc/cron.daily

Se o seu script (rkhunter) estiver incluído nos resultados, tudo é bom. Para mais informações sobre o comando run-parts, leia as man pages nele man run-parts

    
por user19366 04.02.2014 / 22:04
11

No meu sistema, foi porque o anacron não foi instalado.

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Então, instale o anacron ou remova o teste -x / usr / sbin / anacron

    
por Natim 15.09.2014 / 13:57
8

Acho que os arquivos com extensões são ignorados.

executar:

 run-parts --test /etc/cron.daily

Se você não visualizar seus scripts listados, remova as extensões .sh e tente novamente.

    
por rharriso 21.03.2014 / 00:21
4

Adicionando a resposta de Stef, você também deve se certificar de que eles têm o bit executável:

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

Você deve conseguir executá-los usando chmod +x filename .

    
por Braiam 26.08.2013 / 01:53
2

Renomeie seu arquivo para não ter a extensão .sh

Para verificar se esse é o problema, tente

sudo run-parts --list /etc/cron.daily 

você verá que não está listado. Então corra:

mv script.sh script

e tente listar novamente. Deve ser listado.

    
por Elan Kivity 04.04.2017 / 15:55