Você deve poder chmod -x scriptname
desativar um script, mas deixar o arquivo no lugar.
Em vários sistemas que administro, há scripts cron que são executados através do layout /etc/cron.{hourly,daily,weekly}
comumente usado. O que eu quero saber é se existe alguma funcionalidade comum 'desabilitar este script'.
Obviamente, simplesmente excluir algo de um determinado diretório irá desativá-lo, mas estou procurando uma solução mais permanente. A exclusão de /etc/cron.daily/slocate
funcionará para desativar o updatedb
noturno em minha máquina doméstica (em que eu nunca uso slocate
), mas na próxima vez que eu atualizar o pacote slocate, tenho certeza de que ele reaparecerá.
As duas distribuições nas quais estou mais interessado são o Gentoo e o OpenSUSE, mas espero que haja um mecanismo amplamente implementado. Ambas as distros como eu as tenho usam vixie-cron (não tenho certeza se isso importa).
As partes de execução não executam tarefas que tenham um ponto em seu nome, portanto
mv /etc/cron.d/job /etc/cron.d/job.disabled
fará o truque.
Normalmente, cron.daily
é invocado via /etc/crontab
por meio de uma linha como, por exemplo,
run-parts --report /etc/cron.daily
man run-parts
fornece as opções.
run-parts --test /etc/cron.daily
mostra quais tarefas são executadas sem executá-las.
Eu prefiro fazer um subdir 'Desativado' e mover meu trabalho para lá.
Em qualquer caso, se você atualizar um pacote, é provável que o trabalho seja colocado novamente ou que os bits 'x' removidos sejam restaurados
Você pode remover o pacote slocate se nunca usá-lo.
Se você usar o cfengine ( link ), poderá fazer isso com a opção desabilitar. 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 chefes ou o que quer que seja também deve ser bem simples.
O /etc/cron.daily et. al. Os 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 que é dado como um argumento. Geralmente é encontrado em / usr / bin / run-parts.
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 ser seguro.
Na versão que estou vendo, tem lógica que, ao trabalhar no diretório, verifica o /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, ela é incrível porque continuará funcionando quando o pacote instalado for instalado ou atualizado.
Se estiver lidando com RHEL e derivados (que fornece o pacote crontabs
), você poderá desabilitar explicitamente um trabalho colocando seu nome no arquivo jobs.deny
.
De página do manual crontabs / run-parts :
The execution of files can be allowed or denied by creating file jobs.allow or jobs.deny which worked similar as other allow/deny config files. The file must be created in the specified directory.
Example /etc/cron.daily/jobs.deny could contain for example 0logwatch which forbid execution of this script.
Se você não quiser o usuário crontabs, apenas desabilite o crond em sua lista de serviços.
No Debian e nas versões baseadas no Debian isto é simplesmente uma questão de remover o link simbólico do /etc/rcX.d apropriado (para o nível de execução X).
Eu não sei como você lida com serviços no SUSE ou no Gentoo.