Ports-dinge via Cron

menace

Well-Known Member
Hallo,
ich wuerde ganz gerne zum einen portsclean und zum anderen portupgrade von bestimmten Anwendungen via cron laufen lassen, ebenso portsnap.

Jetzt habe ich aber etwas Angst da ich als Student (mit Arbeit von zuhause aus..) noch unregelmässige Arbeitszeiten habe, dass ich irgendwann mal eine Installation aus den Ports starte, während einer dieser Prozesse läuft.

Daher wollte ich fragen, ob denn die Porttools sicherstellen, dass sich sich gegenseitig nicht in die Quere kommen? Dabei würde ich vorziehen, dass sich die automatisch via cron gestarteten Befehle (z.b. via Parameter der im Cron-Skript dabei steht) selbst beenden, wenn sie sehen, dass sie einem anderen PortsTool in die Quere kommen. Weiß da jemand etwas?

Danke
 
Man könnte einen Watch Daemon machen, der guckt ob noch andere Ports am installieren sind und ggf. den Build-Prozess killt. Da wär nur noch das Problem wie man die Beiden unterscheidet.
 
Portupdates zu automatisieren ist NICHT empfohlen. Die Ports machen vieles von allein, aber nicht alles. Cron wird nämlich nicht /usr/ports/UPDATING lesen oder abhängige Ports neu bauen, wenn sie neu verlinkt werden müssen.

Also, portupgrade aus Cron wird eine Weile gut gehen und dir irgendwann das System wegschießen. Portsnap kann man aber laufen lassen, das hat sogar einen Cron Modus bei dem es eine Zufallszeit nach dem Aufruf schläft, damit nicht überall auf der Welt gleichzeitig Portsnap losläuft.
 
wenn du es trotz der Warungen möchtest, starte einfach ein script mit dem cron-job, welches machen soll, was du möchtest und bevor du dann versuchst, es manuel zu machen, brauchst du nur ps abzufragen, ob dein script activ ist. Das kannst du wiederum aus einem script erledigen, so daß es alles quasi automatisch erledigt und killt, was du gestartet hast.

Wie schon gesagt, nicht zu empfehlen.
Wenn du häufiger am System arbeitest, ist es auch kein Akt, den update zu starten und trotzdem weiter zu arbeiten. Meist funktioniert es sogar gut bei Anwendungen, die upgedatet werden, aber das würde ich auch versuchen zu vermeiden.

Den Hinweis von Kamikaze wegen /usr/ports/UPDATING darf man nicht vergessen, das ist super wichtig und hilfreich. Allerdings gestehe ich auch, daß ich meist erst anfange zu lesen, wenn etwas mal nicht geht. Schande über mich.
 
Portupdates zu automatisieren ist NICHT empfohlen. Die Ports machen vieles von allein, aber nicht alles. Cron wird nämlich nicht /usr/ports/UPDATING lesen oder abhängige Ports neu bauen, wenn sie neu verlinkt werden müssen.
Das ist mir durchaus bewusst... Als Admin/root muss oder darf man aber viel machen, was potentiell zum Absturz führt. Das hängt halt von der Konfiguration ab und ist meine Entscheidung...

Stimmt, an den cron-modus bei portsnap hab ich nicht gedacht.. wie sieht das denn bei portsclean aus? Ich wollte das mit -CDLPQ laufen lassen, habe aber nichts gefunden, dass das bei Zugriffskonflikten bzgl. portupgrade stoppt (wenn ich zb händisch gerade portupgrade ausfuehre und portsclean währenddessen läuft)

ein skript programmieren das dann auf ps aux | grep -i portupgrade testet wäre natürlich eine Möglichkeit, ja. Erscheint mir aber irgendwie unelegant. gibts da nicht irgendwelche Locking-Anzeichen (spezielle files in /var/tmp) oder so?
 
Ich denke die einfachste Lösung wäre ein Wrapper-Skript das eine Datei Lockt, so kannst du erzwingen, dass alles sequentiell passiert. Locking macht man in Shell-Skripten mit lockf.
 
Portsclean und die anderen Port-Tools (ausser portsnap) haben keinen Mechanismus zur Cron-Automatisierung und werden es aus offensichtlichen Gründen (s. Kamikazes Posting) niemals bekommen.
Aber möglich ist es natürlich. Unix hat nichts dagegen, wenn man sich so richtig in den Fuß schießen möchte ;-)
 
Zurück
Oben