cronjob per script

Post Reply
Message
Author
mordur

cronjob per script

#1 Post by mordur »

moins,

ich schreib per perlscript neue einträge in eine crontab.der deamon ignoriert diese tab aber. wie oder kann man es erreichen, dass ein user daten vorgibt, diese per perl-script in die crontab geschrieben werden und anhand dieser daten dann auch die aufgaben ausgeführt werden. kann man den daemon restarten wenn man nicht root ist, oder gibts ne andere möglichkeit ihm beizubringen das er die geänderte crontab nicht ignoriert?
SUSE 7.3 ist´s.

Jochen

Re: cronjob per script

#2 Post by Jochen »

Wie setzt Du den cronjob denn auf? Einfach die /var/spool/crontab/* (oder wo die crontabs auch bei SuSE liegen mögen (/var/spool/cron/tabs?)) editieren ist nicht OK, weil der crond das nicht mitkriegt. Es reicht ggf. schon aus, wenn Du mittels "touch" (oder wie man das unter perl am besten macht) die Zeitstempel des crontabs-Verzeichnis neu setzt - irgendwo, meine ich, habe ich so was über die Linux-cron-Implementierung gelesen.

Die <i>saubere</i> Lösung wäre natürlich, erst die crontab mittels "crontab -l" einzulesen, den neuen Job anzufügen und dann mit "crontab -" die Jobs über stdin wieder in das System hineinzugeben.

Jochen

mordur

Re: cronjob per script

#3 Post by mordur »

wenn ich den cronjob per konsole aufsetze mit crontab -u user -e dann läuft des auch. die entstehende datei 'user' in /var/spool/cron/tabs editiere ich einfach per einlesen und neu schreiben über das perl-script. nur crond mag die neue datei dann nicht mehr auslesen. wo oder wie kann ich die denn dem crond anmelden?

Jochen

Re: cronjob per script

#4 Post by Jochen »

Ähm, Du <i>hast</i> meine erste Antwort gelesen, oder?

<li>Die saubere (und portable Lösung) ist es, die crontab mittels "crontab -l -u <user>" einzulesen, den gewünschten Job anzufügen und sämtliche Jobs wieder in ein "crontab -u <user> -" hinein zu schreiben. Dann musst Du über den Mechanismus, wie sich crontab und cron verständigen, gar nichts mehr wissen.

<li>Wie die man-Page zu cron sagt:<blockquote><hr>Additionally, cron checks each minute to see if its spool directory's modtime (or the modtime on /etc/crontab) has changed, and if it has, cron will then examine the modtime on all crontabs and reload those which have changed. Thus cron need not be restarted whenever a crontab file is modified. Note that the Crontab(1) command updates the modtime of the spool directory whenever it changes a crontab.<hr></blockquote>Wie ich also noch so im Hinterstübchen hatte, sollte es ausreichen, ein "touch /var/spool/cron/tabs" nach dem Ändern einer Datei in diesem Verzeichnis auszuführen, damit cron die Änderung bemerkt und die geänderte crontab neu einliest.

Wie man diese beiden Lösungen nun in perl realisiert, kann ich Dir nicht direkt sagen, da ich nicht sehr viel perl kenne. Ein 'system("/var/spool/cron/tabs")' sollte es aber schon tun.

Jochen

cd
Posts: 114
Joined: 19. Dec 2000 21:04

Re: cronjob per script

#5 Post by cd »

brutalstmoeglich kann man auch den crond abschiessen und restarten, z.B per cron

Gruesse,

Clemens

Post Reply