En varios sistemas que administro, hay scripts cron que se ejecutan a través del /etc/cron.{hourly,daily,weekly}
diseño de uso común . Lo que quiero saber es si hay alguna funcionalidad común de 'deshabilitar este script'.
Obviamente, simplemente eliminar algo de un directorio dado lo deshabilitará, pero estoy buscando una solución más permanente. La eliminación /etc/cron.daily/slocate
funcionará para deshabilitar todas las noches updatedb
en mi máquina doméstica (donde nunca la uso slocate
), pero la próxima vez que actualice el paquete Slocate, estoy bastante seguro de que volverá a aparecer.
Las dos distribuciones que más me interesan son Gentoo y OpenSUSE, pero espero que haya un mecanismo ampliamente implementado. Ambas distribuciones como las tengo usan vixie-cron (no estoy seguro de que importe).
fuente
chattr +i scriptname
después dechmod
.lsattr
está: para eliminar el miedo (enumera los atributos de un archivo).run-parts no ejecuta trabajos que tienen un punto en su nombre, así que
Hará el truco.
fuente
Por
cron.daily
lo general, se invoca a/etc/crontab
través de una línea como, por ejemplo,run-parts --report /etc/cron.daily
man run-parts
te da las opciones.run-parts --test /etc/cron.daily
muestra qué trabajos se ejecutan sin ejecutarlos.Prefiero hacer un subdirectorio 'Desactivado' y mover mis trabajos allí.
En cualquier caso, si actualiza un paquete, es probable que el trabajo vuelva a su lugar o que los bits 'x' eliminados se restauren
fuente
Puede eliminar el paquete slocate si nunca lo usa.
fuente
Si usa cfengine ( https://cfengine.com/ ) podría hacerlo con deshabilitar. Simplemente escriba un archivo de promesa para un grupo de hosts y se aplicará en la próxima ejecución de cfagent. Hacer esto con títeres o chef o lo que sea también debería ser bastante simple.
fuente
El /etc/cron.daily et. Alabama. los guiones son ejecutados por un guión llamado run-parts. Ese guión varía. Por ejemplo, el interruptor --test mencionado anteriormente no está en la máquina que estoy usando en este instante.
Run-parts es un script bash. Es una herramienta generalmente útil para ejecutar todos los scripts en el directorio que se proporciona como argumento. Generalmente se encuentra en / usr / bin / run-parts.
Tiene una maraña de lógica para decidir qué ejecutar. Ese código contiene la respuesta a su pregunta, pero también varía. Por lo tanto, debe leer el código para estar seguro.
En la versión que estoy viendo, tiene una lógica que, cuando se trabaja en el directorio <foo>, busca <foo> /jobs.deny. Si eso existe, declina ejecutar cualquier script que se mencione en ese archivo en una línea, solo. Suponiendo que tenga esta funcionalidad, es increíble porque seguirá funcionando cuando el paquete que se instala se instala o actualiza.
fuente
Si se trata de RHEL y derivados (que proporciona el
crontabs
paquete), puede deshabilitar explícitamente un trabajo al poner su nombre en eljobs.deny
archivo.Desde la página del manual crontabs / run-parts :
fuente
Si tampoco desea los crontabs de usuario, simplemente desactive crond en su lista de servicios.
En Debian y versiones basadas en Debian, esto es simplemente una cuestión de eliminar el enlace simbólico del /etc/rcX.d apropiado (para el nivel de ejecución X).
No sé cómo maneja los servicios en SUSE o Gentoo.
fuente