cron und Userfiles

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich hätte da mal eine Verständnisfrage bezüglich des Cron:
Ich habe zwei Benutzer deren Emails ich mit einem Cronjob von extern abhole und auf der DS ablege. Aus Faulheit habe ich einfach das cron File von User A ins Verzeichnis von User B kopiert. Dummerweise habe ich die Ausführungszeit des cronjobs in beiden Files gleich gelassen. Das das auszuführende Script auf ein pid Files prüft um damit festzustellen ob bereits eine Instanz des Codes läuft wurde der Job nur noch für User A ausgeführt.
Es ist mir klar, dass es mein Fehler ist, trotzdem kann ich mir nicht ganz erklären warum immer das Script von User A ausgeführt wird. Es nähme mich daher wunder nach welchen Kriterien die Reihenfolge der cronjobs der einzelnen User festgelegt werden. Werden die Jobs in der Reihenfolge der uid der einzelnen User ausgeführt? Oder in der Reihenfolge in der die Files im Verzeichnis liegen (crontabs Verzeichnis)? Oder nach Erstellungsdatum der Files? Oder...?

Weiss jemand wie das bei cron genau funzt?

Danke und Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Der crond auf der DS ist ein wenig eigen. Ich glaube, der kann das mit den verschiedenen Usern eh nicht ... ansonsten keiner Beschreibung des crond glauben, wenn du es nicht selbst tatsächlich auf der DS nachvollziehen kannst. Vielleicht ist der IPKG-crond gnädiger ....

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Sorry zu wenig genau geschrieben: Ich habe den ipkg cron und um den geht es.

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Also heißen tut es so:

Cron searches /var/spool/cron for crontab files which are named after accounts in crontabs found are loaded into memory. Cron also searches for /etc/crontab and the files in the directory, which are in a different format (see crontab(5) ). Cron then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).

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.


Beim Absuchen der Verzeichnisse kann ein ls oder * verwendet werden, dann ist es alphabetisch sortiert oder direkt aufs Verzeichnis gegangen werden (wie es PHP macht), dann ist es gehasht ... nicht vorhersagbar in der Reihenfolge. Das müsste man nun ausprobieren - hab nichts dazu gefunden. Egal wie es ausgeht, es ist dann "implementor conditioned".

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Beim Absuchen der Verzeichnisse kann ein ls oder * verwendet werden, dann ist es alphabetisch sortiert oder direkt aufs Verzeichnis gegangen werden (wie es PHP macht), dann ist es gehasht ... nicht vorhersagbar in der Reihenfolge. Das müsste man nun ausprobieren - hab nichts dazu gefunden. Egal wie es ausgeht, es ist dann "implementor conditioned".
Ich hätte ehrlich gesagt auch eine Race Condition erwartet, mal mit dem Script von User A und mal mit der Script von User B als Sieger. Es wurde aber immer zuerst Script A ausgeführt, von einem User der weiter hinten kommt im Alphabet aber mit einer tieferen UID.
Ich werde mal einen root Job machen unter den gleichen Bedingungen wie für User A. Imho müsste dann nur derjenige von root ausgeführt werden (klar das andere wird auch immer ausgeführt wird aber wegen dem existierenden pid File von A sofort gestoppt).
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat