Em vários sistemas que administro, há scripts cron que são executados pelo /etc/cron.{hourly,daily,weekly}
layout mais usado . O que eu quero saber é se existe alguma funcionalidade comum de 'desativar este script'.
Obviamente, simplesmente excluir algo de um determinado diretório o desativará, mas estou procurando uma solução mais permanente. A exclusão /etc/cron.daily/slocate
funcionará para desativar o noturno updatedb
na minha máquina doméstica (onde nunca uso slocate
), mas da próxima vez que atualizar o pacote slocate, tenho certeza de que ele reaparecerá.
As duas distribuições que mais me interessam são o Gentoo e o OpenSUSE, mas espero que exista um mecanismo amplamente implementado. Ambas as distribuições que eu tenho usam o vixie-cron (não tenho certeza se isso importa).
fonte
chattr +i scriptname
depois dochmod
.lsattr
para isso - remover o assustador (ele lista os atributos de um arquivo).run-parts não executa tarefas com um ponto em seu nome, portanto
fará o truque.
fonte
Geralmente
cron.daily
é chamado/etc/crontab
através de uma linha como por exemplorun-parts --report /etc/cron.daily
man run-parts
dá-lhe as opções.run-parts --test /etc/cron.daily
mostra quais trabalhos são executados sem executá-los.Prefiro criar um subdiretório 'Desativado' e mudar meus trabalhos para lá.
De qualquer forma, se você atualizar um pacote, é provável que o trabalho volte ao lugar ou que os bits 'x' removidos sejam restaurados
fonte
Você pode remover o pacote slocate se nunca o usar.
fonte
Se você usar cfengine ( https://cfengine.com/ ), poderá fazê-lo com desativar. Você acabou de escrever um arquivo de promessa para um grupo de hosts e ele se aplicará na próxima execução do cfagent. Fazer isso com fantoches ou chef ou qualquer outra coisa também deve ser bastante simples.
fonte
O /etc/cron.daily et. al. scripts são executados por um script chamado run-parts. Esse script varia. Por exemplo, a opção --test mencionada acima não está na máquina que estou usando neste instante.
Run-parts é um script bash. É uma ferramenta geralmente útil para executar todos os scripts no diretório fornecido como argumento. Geralmente é encontrado em / usr / bin / run-parts.
Ele tem um emaranhado de lógica para decidir o que executar. Esse código contém a resposta para sua pergunta, mas também varia. Então, você precisa ler o código para estar seguro.
Na versão que estou vendo, tem lógica que, ao trabalhar no diretório <foo>, verifique <foo> /jobs.deny. Se isso existir, ele se recusará a executar qualquer script mencionado nesse arquivo em uma linha, sozinho. Supondo que você tenha essa funcionalidade, é incrível porque continuará funcionando quando o pacote que instalar for instalado ou atualizado.
fonte
Ao lidar com RHEL e derivados (que fornece o
crontabs
pacote), você pode desativar explicitamente um trabalho colocando seu nome nojobs.deny
arquivo.Na página do manual crontabs / run-parts :
fonte
Se você também não deseja o user-crontabs, desative o crond em sua lista de serviços.
No Debian e nas versões baseadas no Debian, isso é simplesmente uma questão de remover o link simbólico do /etc/rcX.d apropriado (para o nível de execução X).
Não sei como você lida com serviços no SUSE ou Gentoo.
fonte