¿Cómo deshabilito temporalmente uno o más trabajos cron de los usuarios? En particular, no quiero suspender los derechos de cron del usuario, simplemente no despedir ninguno de sus trabajos.
Estoy en sistemas SLES 11 SP2 y SP3
¿Cómo deshabilito temporalmente uno o más trabajos cron de los usuarios? En particular, no quiero suspender los derechos de cron del usuario, simplemente no despedir ninguno de sus trabajos.
Estoy en sistemas SLES 11 SP2 y SP3
Respuestas:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernamedebería hacer el truco. Restaure con chmod 600y touch(debe cambiar el archivo mtime para que cron (intente) volver a cargarlo).
Al menos en Debian y probablemente con Vixie cron en general, chmod 400 /var/spool/cron/crontabs/$usernametambién funciona, porque esa implementación insiste en que los permisos sean exactamente 600. Sin embargo, esto solo dura hasta que el usuario ejecuta el crontabcomando.
Si quieres una forma sólida, no creo que haya nada mejor que mover temporalmente su crontab fuera del camino o cambiar los permisos, y agregarlos temporalmente /etc/cron.deny.
chmod.
touch $usernamedespués del chmod. Pero eso no ayudó. (por cierto entendí tu punto cron.deny)
chgrp root /var/spool/cron/crontabs
¿Qué tal algo como esto para deshabilitar un crontab de usuario?
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
y para volver a habilitar:
crontab -u [username] /tmp/[username].cron.tmp
Esto tiene la ventaja adicional de que puede ejecutarlo como ese usuario sin necesidad de root (simplemente quite el parámetro -u).
Si está utilizando Debian, esto solo se aplica a Debian AFAIK :
Puede hacerlo agregando un punto al nombre del cronjob.
El comportamiento se menciona en los documentos oficiales de Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
El nombre de un archivo de trabajo cron no debe incluir ningún punto o más caracteres (. O +), ya que esto hará que cron ignore el archivo. Se deben usar guiones bajos (_) en lugar de. y + personajes.
Si solo desea detener completamente todos los crontrabajos por un tiempo, por ejemplo, mientras realiza el mantenimiento del sistema con el que podrían interactuar mal, los comandos normalmente son
systemctl stop crond.service
y, para reanudar
systemctl start crond.service
Supongo que necesita autoridad de root o rueda para ejecutarlos; si es necesario, ejecútelos a través de sudo o (último recurso) inicie sesión como root.
Exagerar para la pregunta específica planteada, pero proporciona "compras únicas" y no requiere jugar con el sistema de archivos o archivos temporales.
Estoy de acuerdo, el camino a través de systemctl es el que hay que tomar. En frambuesa, los dedos del pie serían
sudo systemctl stop cron.service
sudo systemctl start cron.service
cronservicio. El OP quería poder elegir qué crontabs de usuarios deshabilitar.
-u userinterruptor delcrontabcomando y poner un#carácter de comentario delante de los trabajos para deshabilitar para el usuario dado?