jamfx
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Hi Zusammen, ich habe es inzwischen geschafft meine Unison-Profile so zu konfigurieren, dass sie das machen was ich will. Die Anleitung im Wiki ist sehr gut dazu! Doch bei Schritt 5 der Anleitung komme ich nicht weiter: http://wiki.ubuntuusers.de/unison#5-Schritt
Ich rufe crontab -e auf und trage die vorgegebene Zeile auch im Crontab ein, doch Unison wird nicht gestartet. (Leerzeile am Ende vom Cron habe ich auch drauf geachtet!)
*/15 * * * * test -e /var/lock/unison-PROFILNAME && exit 0 || (touch /var/lock/unison-PROFILNAME;unison PROFILNAME;rm /var/lock/unison-PROFILNAME)
Wobei ich hier aus dem Beispiel natürlich PROFILNAME durch meinen Profilnamen ersetzt habe. Auch wenn ich die Zeit auf 1 (also */1...) stelle startet das Programm nicht. Dann müsste es ja eigentlich jede Minute starten. Was mache ich noch falsch? Grüße und wieder mal vielen Dank im Voraus! JamFX
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
Zeig mal deine komplette Crontab. Hast Du Cron (Abschnitt „Haeufige-Fehler“) beachtet?
|
jamfx
(Themenstarter)
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Hi,
Mein Crontab bei sudo crontab -e leer im "normalen" Crontab steht nur die Zeile aus dem Wiki. Du hast mir den Abschnitt "Häufige Fehler" verlinkt. Leider verstehe ich davon nur Bahnhof. Den Befehl aus dem Wiki habe ich kopiert und eingefügt. Ob ich ihn hätte anpassen müssen, kann ich nicht sagen. Wie gesagt, Unison läuft sonst einwandfrei. Grüße
JamFX
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
Also funktioniert dein Unison-Aufruf aus der Shell und nicht aus Cron heraus? Dann beschreibt der verlinkte Artikel doch EXAKT deinen Fall. Dann haben wir nun mehrere Möglichkeiten:
Du hast den Absatz nicht gelesen und erwartest nun von mir eine Lösung. Du hast den Artikel gelesen, hast konkrete Verständnisfragen und stellst sie nicht. Zumindest sehe ich keine. Du hast ein anderes als das beschriebene Problem und hast keine erweiterte Problembeschreibung geschrieben.
Wie denn nun?
|
jamfx
(Themenstarter)
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Hi, danke dass du dich mir als N00b annimmst. Im Prinzip habe ich folgendes gemeint: Ich verstehe nicht, was bei CRON steht. Ich vermute also nur, dass der verlinkte Artikel mein Problem treffen könnte. Allerdings wird sich hier auf etwas bezogen, was ich nicht oder nach Anweisung des Wiki anders gemacht habe: A1) Bei beim Unison-Artikel steht unter Schritt 5: "Einfach folgende Zeile einfügen..." ← Das habe ich gemacht. A2) Dann steht dort weiter: "Falls man Unison nochmal starten möchte, kann man auch ein Script erstellen" ← Das habe ich NICHT gemacht, weil es für meinen Anwendungsfall nicht zutrifft. B) Bei CRON steht "Befehl klappt in Skript und Shell, aber nicht im Cronjob" Ich habe es nur im Terminal (also der Shell?) probiert und es funktioniert (Wie man bei Unison auch testen kann / soll - siehe Schritt 4) Die Lösung bei CRON bezieht sich aber nur auf Skripte, die ich nicht habe. Passt der Artikel nun zu meinem Problem? Ich denke nur teilweise und daher hilft er mir als Laien nicht, da die Lösung nicht zu mir zu passen scheint. Kannst du oder jemand mir denn jetzt helfen? Vielen Dank schon wieder im Voraus JamFX
|
Thomas_Do
Moderator
Anmeldungsdatum: 24. November 2009
Beiträge: 8493
|
Hi, manchmal sind es nur Tippfehler, die eine korrekte Ausführung verhindern. Deine wirkliche crontab per Copy & Paste wäre sicher hilfreich (wenn dort keine Geheimnisse drinstehen). Du schreibst, Du hättest im Terminal getestet. Auch den ganzen Befehl mit test auf die Lockdatei? Auch hier wäre ein C&P der Terminaleingabe und der Ausgaben hilfreich. Die Befehle der crontab-Zeile (test, touch, unison, rm) sind alle ohne Pfadangabe angegeben. Deshalb muss m.E. der Pfad in der Crontab enthalten sein: #-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
|
jamfx
(Themenstarter)
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Hi Thomas Do, danke für deine Hilfe. Anbei zwei Bildschirmfotos. 1 Zeigt crontab -e und zwei zeigt sudo crontab -e. Ich hoffe es hilft... Die Zeile, die abgeschnitten ist, lautet wie im Wiki:
*/15 * * * * test -e /var/lock/unison-PROFILNAME && exit 0 || (touch /var/lock/unison-PROFILNAME;unison PROFILNAME;rm /var/lock/unison-PROFILNAME)
Nur, dass ich eben per Kate die Buchstabenfolge PROFILNAME habe ersetzen lassen durch "eigene-dateien", also:
*/15 * * * * test -e /var/lock/unison-eigene-dateien && exit 0 || (touch /var/lock/unison-eigene-dateien;unison eigene-dateien;rm /var/lock/unison-eigene-dateien)
Am Ende von Cron hängt auch eine Leerzeile. Muss ich evtl. irgendwo ein .prf anhängen, um die Profildatei zu treffen? Ich dachte jedenfalls nicht, dass das nötig wäre. Stand auch nix im Wiki von. Grüße
JamFX PS: @Thomas, deine Pfadangaben von PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11 verstehe ich nicht. Sind das mehrere Pfade hintereinander, wegen der vielen Doppelpunkte...
- Bilder
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
jamfx schrieb: Ich verstehe nicht, was bei CRON steht. Ich vermute also nur, dass der verlinkte Artikel mein Problem treffen könnte.
Ich vermute es auch, weshalb ich dir exakt diesen Abschnitt verlinkt habe. Allerdings wird sich hier auf etwas bezogen, was ich nicht oder nach Anweisung des Wiki anders gemacht habe:
richtig, Du hast es nicht gemacht, weshalb der Job nun nicht funktioniert. Passt der Artikel nun zu meinem Problem? Ich denke nur teilweise und daher hilft er mir als Laien nicht, da die Lösung nicht zu mir zu passen scheint. Kannst du oder jemand mir denn jetzt helfen?
Ok, fassen wir nochmal zusammen: Du weisst nicht, ob das was da steht, dir hilft, hast es aber weder probiert, noch nachvollzogen was da überhaupt steht. Ich hätte schon erwartet, dass Du zumindest sagen kannst, was Du nicht verstehst... Wie neben dem Wiki auch Thomas hinweist, sollte der PATH (siehe Umgebungsvariable) in der crontab stehen, damit auch alle Befehle gefunden und ausgeführt werden können. Das ist bei dir der Fall, weshalb wohl auch der Abschnitt aus dem Wiki zutrifft.
|
jamfx
(Themenstarter)
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Ich möchte hier noch einmal mein Vorgehen schildern und dann aufzeigen, wo ich stolpere. 1. Ich habe gemäß Vorgabe in Schritt 1 unison installiert. 2. Ich habe gemäß Schritten 2 und 3 und der Unison-Handbuch aus dem Netz mein Profil konfiguriert. http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html 3. Ich habe gemäß Schritt 4 mit in einem Terminal "unison eigene-dateien" ausgeführt und habe mit Erfolg meine Daten synchronisieren können. 4. Nun lande ich bei Schritt 5, den ich hier nicht komplett zitieren muss. Das wichtige, was dort steht ist für mich: Schritt 5.
Unison alle X Minuten automatisch im Hintergrund starten. Dazu verwendet man Cron, dessen Artikel weitere Erklärungen enthält, wie Cron funktioniert. Hier reicht es zu wissen, dass man mittels
crontab -e
'''folgende Zeile am Ende der Datei anfügen muss:'''
*/15 * * * * test -e /var/lock/unison-PROFILNAME && exit 0 || (touch /var/lock/unison-PROFILNAME;unison PROFILNAME;rm /var/lock/unison-PROFILNAME) Genau an diese Anweisung habe ich mich gehalten. Der folgende Abschnitt von 5 verstehe ich als einen ZUSATZ, den ich nicht benötige! Ich möchte keine weiteren Synchronisationen parallel machen, wenn doch schon eine angestoßen wird oder ist dies etwa noch nicht der Fall? Dann bräuchte ich natürlich noch das Script und ich würde endlich verstehen, warum hier so viel Aufregung um meine Frage herrscht... Grüße und danke
JamFX
|
redknight
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21725
Wohnort: Lorchhausen im schönen Rheingau
|
jamfx schrieb: Genau an diese Anweisung habe ich mich gehalten.
Der aber von der Voraussetzung ausgeht, dass Du eine funktionierende crontab hast, weshalb auch an dieser Stelle explizit auf den Wikiartikel zu Cron verwiesen wurde. Das ist bei dir nicht der Fall, weshalb Du deine Crontab, wie hier im Thread und im Wikiartikel angemerkt, um mindestens den vollständigen PATH erweitern musst. Der folgende Abschnitt von 5 verstehe ich als einen ZUSATZ, den ich nicht benötige!
Es geht auch gar nicht im das skript, sondern darum, dass Cron offensichtlich die Befehle, die Du gibst, nicht findet. Wie es zu beheben ist, wurde mittlerweile genug besprochen.
|
Thomas_Do
Moderator
Anmeldungsdatum: 24. November 2009
Beiträge: 8493
|
Deine Crontab sollte (wie von mir gepostet) Pfadangaben für die ausführbaren Programme enthalten oder jedes Programm mit vollem Pfad aufrufen. Das würde dann in etwa so aussehen: #-----------------------------------------------------------------
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
*/15 * * * * test -e /var/lock/unison-eigene-dateien && exit 0 || (touch /var/lock/unison-eigene-dateien;unison eigene-dateien;rm /var/lock/unison-eigene-dateien)
|
jamfx
(Themenstarter)
Anmeldungsdatum: 3. Mai 2009
Beiträge: 71
|
Lieber Thomas, danke für deine Hilfe! Diese Pfadangaben haben gefehlt und jetzt funktioniert es. Nochmals danke für deine Geduld und deinen konkreten Hilfe! Grüße JamFX
|