__deets__ hat geschrieben:
Das es ein grundsaetzliches Problem geben sollte, eine crontab aus einem cronjob zu modifizieren kann ich mir fast nicht vorstellen.
Im schlimmsten Fall ist das Verhalten in der Situation nicht spezifiziert (habe ich nicht nachgesehen) und abhängig von der jeweiligen Cron Implementierung. Dann kann es passiert, dass das Skript nach einem Update oder Distributionswechsel nicht mehr funktioniert.
--
Ich habe es jetzt mal mit 'cronie' ausprobiert und das klappt:
Code: Alles auswählen
$ cat /var/spool/cron/benutzer
*/2 19 * * * /home/benutzer/src/crontest/venv/bin/python /home/benutzer/src/crontest/cron_test.py # testjob
Code: Alles auswählen
#!/usr/bin/env python3
from random import randint
from copy import deepcopy
from pathlib import Path
from crontab import CronTab
def main():
path = Path('/var/spool/cron')
crontab = CronTab(tabfile=path/'benutzer')
job = next(crontab.find_comment('testjob'))
# scheint auch ohne deepcopy richtig zu gehen
new_job = deepcopy(job)
new_job.hour.on(randint(0, 24))
job.delete()
crontab.append(new_job)
crontab.write()
if __name__ == '__main__':
main()
Wenn das Skript an sich funktioniert, würde ich daher eher tippen, dass es einer der üblichen Fehler im Zusammenhang mit Cronjobs ist (falscher Interpreter, nicht zugängliche libraries, fehlende Brechtigungen, …).
Ansonsten schließe ich mich __deets__ an, und frage mich, weshalb du das brauchst. Ist ja ganz lustig, aber wahrscheinlich gibt es eine bessere Lösung.