como desativar temporariamente os cronjobs de um usuário?

12

Como faço para desativar temporariamente uma ou mais tarefas agendadas de usuários? Em particular, eu não quero suspender os direitos cron do usuário - simplesmente não demitir nenhum dos seus trabalhos.

Estou em sistemas SLES 11 SP2 e SP3

    
por Dinesh 06.03.2015 / 01:36

5 respostas

9

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username deve fazer o truque. Restaure com chmod 600 e touch (você precisa alterar o mtime do arquivo para fazer o cron (tentar) recarregá-lo).

Em pelo menos o Debian e provavelmente com o Vixie cron em geral, chmod 400 /var/spool/cron/crontabs/$username também faz o truque, porque essa implementação insiste que as permissões sejam exatamente 600. Entretanto, isso só dura até que o usuário execute o comando crontab .

Se você quiser uma maneira robusta, não acho que há nada melhor do que mover temporariamente o crontab ou alterar as permissões, e adicionando-as temporariamente a /etc/cron.deny .

    
por 06.03.2015 / 01:55
6

Que tal algo como isto para desativar um usuário crontab:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

e reativar:

crontab -u [username] /tmp/[username].cron.tmp

Isto tem a vantagem adicional de que você pode executá-lo como aquele usuário sem precisar de root (apenas retire o parâmetro -u).

    
por 30.03.2016 / 11:16
0

Se você estiver usando o Debian, isso só se aplica ao Debian AFAIK :

Você pode fazer isso adicionando um ponto ao nome do cronjob.

Comportamento é referido na documentação oficial do Debian:

link

A cron job file name must not include any period or plus characters (. or +) characters as this will cause cron to ignore the file. Underscores (_) should be used instead of . and + characters.

    
por 09.04.2018 / 19:16
-1

Eu concordo, o caminho via systemctl é o único a tomar. Na framboesa, toe comands seria

sudo systemctl stop cron.service
sudo systemctl start cron.service
    
por 04.10.2018 / 11:57
-1

Se você quiser interromper completamente todos os trabalhos de cron - por exemplo, ao fazer a manutenção do sistema com a qual eles podem interagir mal - os comandos são normalmente

systemctl stop crond.service

e, para retomar

systemctl start crond.service

Eu presumo que você precise de autoridade de raiz ou roda para executá-los; se necessário, execute-os via sudo ou (último recurso) efetue login como root.

Exagero na pergunta específica, mas fornece "compra em um único local" e não exige que você jogue com o sistema de arquivos ou arquivos temporários.

    
por 30.11.2017 / 06:03

Tags