Criei 3 tarefas diárias de cron para executar.
Abaixo estão os três 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]
Substituí [email protected] ofcourse pelo meu e-mail.
Se eu executar este cronjob manualmente, ele funciona bem ./nameoffile.sh
Mas não é executado diariamente, qual pode ser a causa ou como posso verificar isso?
command-line
email
cron
rkhunter
sonicboom
fonte
fonte
Respostas:
Existem dois suspeitos possíveis que geralmente fazem com que os
cron
trabalhos não possam ser executados.O primeiro são problemas de permissão, ou seja, um usuário pode executar o script / comando, mas o daemon cron não pode, porque o trabalho está nos trabalhos cron do usuário errado. Por exemplo, o usuário cria um script ou executa um comando com privilégios elevados, ou seja
sudo
, usando , em seguida, adiciona o script / comando testado à sua lista de tarefas cron (crontab
). O resultado é que o trabalho cron do usuário não poderá ser executado, pois precisa de privilégios elevados.crontab -e
sudo crontab -e
A segunda razão são os caminhos; para ter certeza de que o script será executado, o usuário deve adicionar o caminho completo ao 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:
como o wiki da comunidade menciona .
Você pode ler o wiki da comunidade sobre o cron, pois ele fornece mais detalhes sobre o acima.
fonte
De acordo com esta resposta, o problema está na 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 estará bem. Para obter mais informações sobre o comando run-parts, leia as páginas de manual.
man run-parts
fonte
man run-parts
"nomes devem consistir inteiramente em ASCII letras maiúsculas e minúsculas, números ASCII, sublinhados ASCII e ASCII Minus-hífens"Eu acho que arquivos com extensões são ignorados.
corre:
Se você não vê seus scripts listados, remova as extensões .sh e tente novamente.
fonte
No meu sistema, era porque o anacron não estava instalado.
Portanto, instale o anacron ou remova o teste -x / usr / sbin / anacron
fonte
dpkg --get-selections | grep cron
.. <jura>anacron
não é necessário; o||
operador nos comandos crontab executarun-parts
quando o anacron NÃO está instalado. Quandoanacron
instalado, tornarun-parts
redundantes os comandos diários / semanais / mensais .Adicionando à resposta de Stef, você também deve garantir que eles tenham o bit executável:
Você deve poder executá-los usando
chmod +x filename
.fonte
Renomeie seu arquivo para não ter a extensão .sh
Para verificar se esse é o problema, tente
você verá que não está listado. Então corra:
e tente listar novamente. Deve ser listado.
fonte
Eu não poderia obtê-lo correr com anacron, tirei anacron de
/etc/crontab
e executadoapt remove --purge anacron
e funciona imediatamente.Não entendo por que precisamos de dois agendadores.
fonte