Como desabilito temporariamente os trabalhos cron de um ou mais usuários? Em particular, não quero suspender os direitos cron do usuário - apenas não demitir nenhum de seus trabalhos.
Estou nos sistemas SLES 11 SP2 e SP3
Como desabilito temporariamente os trabalhos cron de um ou mais usuários? Em particular, não quero suspender os direitos cron do usuário - apenas não demitir nenhum de seus trabalhos.
Estou nos sistemas SLES 11 SP2 e SP3
Respostas:
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 com que o cron (tente) recarregá-lo).
Pelo menos no Debian e provavelmente com o Vixie cron em geral, chmod 400 /var/spool/cron/crontabs/$username
também funciona, porque essa implementação insiste em que as permissões sejam exatamente 600. No entanto, isso só dura até o usuário executar o crontab
comando.
Se você deseja uma maneira robusta, não acho que exista algo melhor do que mudar temporariamente o crontab para fora do caminho ou alterar as permissões e adicioná-las temporariamente /etc/cron.deny
.
chmod
.
touch $username
após o chmod
. Mas isso não ajudou. (btw tem o seu ponto cron.deny
)
chgrp root /var/spool/cron/crontabs
Que tal algo assim para desativar um usuário crontab:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
e para reativar:
crontab -u [username] /tmp/[username].cron.tmp
Isso tem a vantagem adicional de poder executá-lo como usuário sem a necessidade de root (basta remover o parâmetro -u).
Se você estiver usando o Debian, isso se aplica apenas ao Debian AFAIK :
Você pode fazer isso adicionando um ponto ao nome do cronjob.
O comportamento é mencionado nos documentos oficiais do Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
Um nome de arquivo de tarefa cron não deve incluir nenhum ponto final ou mais caracteres (. Ou +), pois isso fará com que o cron ignore o arquivo. Sublinhados (_) devem ser usados em vez de. e + caracteres.
Se você apenas deseja interromper todos os cron
trabalhos por um tempo - por exemplo, enquanto faz 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
Presumo que você precise de autoridade de root ou wheel para executá-las; se necessário, execute-os via sudo ou (último recurso) efetue login como root.
Exagero na pergunta específica colocada, mas oferece "um balcão único" e não requer brincadeira com o sistema de arquivos ou com arquivos temporários.
Eu concordo, o caminho via systemctl é o único a seguir. Na framboesa, os comandos do dedo do pé seriam
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
serviço. O OP queria poder escolher quais crontabs de usuários desabilitar.
-u user
opção docrontab
comando e colocar um#
caractere de comentário na frente dos trabalhos para desativar o usuário em questão?