Come posso disabilitare temporaneamente uno o più lavori cron degli utenti? In particolare, non voglio sospendere i diritti cron dell'utente - semplicemente non licenziare nessuno dei loro lavori.
Sono su sistemi SLES 11 SP2 e SP3
Come posso disabilitare temporaneamente uno o più lavori cron degli utenti? In particolare, non voglio sospendere i diritti cron dell'utente - semplicemente non licenziare nessuno dei loro lavori.
Sono su sistemi SLES 11 SP2 e SP3
Risposte:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
dovrebbe fare il trucco. Ripristina con chmod 600
e touch
(devi cambiare il mtime del file per fare in modo che cron (tenti di) ricaricarlo).
Almeno su Debian e probabilmente con Vixie cron in generale, chmod 400 /var/spool/cron/crontabs/$username
fa anche il trucco, perché l'implementazione insiste sul fatto che le autorizzazioni siano esattamente 600. Tuttavia, ciò dura solo fino a quando l'utente non esegue il crontab
comando.
Se vuoi un modo robusto, non penso che ci sia niente di meglio che spostare temporaneamente il loro crontab o cambiare le autorizzazioni e aggiungerle temporaneamente /etc/cron.deny
.
chmod
.
touch $username
dopo il chmod
. Ma questo non ha aiutato. (a proposito hai capito cron.deny
)
chgrp root /var/spool/cron/crontabs
Che ne dici di qualcosa del genere per disabilitare un crontab utente:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
e per riattivare:
crontab -u [username] /tmp/[username].cron.tmp
Questo ha l'ulteriore vantaggio di poterlo eseguire come tale utente senza bisogno di root (basta togliere il parametro -u).
Se stai usando Debian, questo vale solo per Debian AFAIK :
Puoi farlo aggiungendo un punto al nome del cronjob.
Il comportamento è indicato nei documenti ufficiali Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
Il nome di un file di lavoro cron non deve includere alcun punto o più caratteri (. O +) poiché ciò farà sì che cron ignori il file. I trattini bassi (_) dovrebbero essere usati al posto di. e + caratteri.
Se si desidera interrompere completamente tutti i cron
lavori per un po ', ad esempio durante la manutenzione del sistema con cui potrebbero interagire male, i comandi sono normalmente
systemctl stop crond.service
e, per riprendere
systemctl start crond.service
Presumo che tu abbia bisogno dell'autorità root o wheel per eseguirle; se necessario, eseguili tramite sudo o (last resort) accedi come root.
Overkill per la domanda specifica posta, ma fornisce "one-stop shopping" e non richiede la riproduzione con il filesystem o i file temporanei.
Sono d'accordo, il percorso tramite systemctl è quello da prendere. Su lampone, i comandi di punta sarebbero
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
servizio. L'OP voleva essere in grado di scegliere quali crontab degli utenti disabilitare.
-u user
interruttore delcrontab
comando e mettere un#
carattere di commento davanti ai lavori per disabilitarlo per il dato utente?