Fórum Root.cz
Hlavní témata => Software => Téma založeno: doga312 06. 09. 2017, 10:25:53
-
Ahoj,
nedávno mi zde na fóru někdo poradil při použití unison parametr repeat = watch, super :D Odinstaloval jsem stavajicí Unison a dle návodu: https://l0x.de/posts/2016/11/17/dropbox-like-realtime-sync-unison/ (https://l0x.de/posts/2016/11/17/dropbox-like-realtime-sync-unison/) jsem udělal následující:
sudo apt-get install ocaml python-pyinotify
sudo apt-get install subversion
svn co https://webdav.seas.upenn.edu/svn/unison/branches/2.48 unison
cd unison
make NATIVE=false UISTYLE=text
sudo cp src/{unison,fsmonitor.py} /usr/local/bin
upravil configurační soubor
# Unison preferences
root = /home/pokus/Plocha
root = /mnt/NFS/pokus/Plocha
auto=true
batch=true
ignore = Name {.Trash}
repeat = watch
vytvořil soubor ~/.config/systemd/user/unison@.service:
[Unit]
Description=Unison
[Service]
Environment="PATH=/usr/local/bin:/usr/bin"
ExecStart=/usr/local/bin/unison %i
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
spustil službu
systemctl --user start unison@share
ale při
systemctl --user status unison@share
mi to vypisuje chybu
● unison@share.service - Unison
Loaded: loaded (/home/doga/.config/systemd/user/unison@.service; disabled; ve
Active: activating (auto-restart) (Result: exit-code) since St 2017-09-06 09:
Process: 21784 ExecStart=/usr/local/bin/unison %i (code=exited, status=1/FAILU
Main PID: 21784 (code=exited, status=1/FAILURE)
zář 06 09:59:58 STA systemd[2034]: unison@share.service: Main process exited, co
zář 06 09:59:58 STA systemd[2034]: unison@share.service: Unit entered failed sta
zář 06 09:59:58 STA systemd[2034]: unison@share.service: Failed with result 'exi
Při manuálním spuštění
unison Desk
to funguje jak má.
Kde muže být chyba? Dík za pomoc ;)
-
Kde muže být chyba?
U Lennarta, ale to se nesmí říkat.
-
Z toho uříznutého výpisu je vidět, že se unison ukončil. Podívejte se na celý výpis logu, třeba je tam toho víc – a pokud ne, přidejte unisonu nějaké parametry pro podrobnější výpis, abyste zjistil, co na něm máte špatně nakonfigurované.
-
Kde muže být chyba?
U Lennarta, ale to se nesmí říkat.
S PulseAudio se taky trápím :D Dík za rozšíření obzoru ;) takže existuje jiný způsob?
-
Ahoj,
tak to dělá ten "zástup" %i v unison@.service. Když ho nahradím konkrétním názvem konfiguračního souboru *.prf, tak to běhá. Jde to zapsat jinak nebo musím pro každy *.prf udělat zvlášť službu?
-
%i má v ExecStart normálně fungovat. Opravdu by pomohlo, kdybyste sem dal příslušný výpis logu.
-
Ahoj, zde je výpis z syslogu:
Sep 7 21:18:30 NOTE systemd[2394]: unison@share.service: Service hold-off time over, scheduling restart.
Sep 7 21:18:30 NOTE systemd[2394]: Stopped Unison.
Sep 7 21:18:30 NOTE systemd[2394]: Started Unison.
Sep 7 21:18:30 NOTE unison[5756]: Usage: unison [options]
Sep 7 21:18:30 NOTE unison[5756]: or unison root1 root2 [options]
Sep 7 21:18:30 NOTE unison[5756]: or unison profilename [options]
Sep 7 21:18:30 NOTE unison[5756]: For a list of options, type "unison -help".
Sep 7 21:18:30 NOTE unison[5756]: For a tutorial on basic usage, type "unison -doc tutorial".
Sep 7 21:18:30 NOTE unison[5756]: For other documentation, type "unison -doc topics".
Sep 7 21:18:30 NOTE unison[5756]: Profile /home/pokus/.unison/share.prf does not exist
Sep 7 21:18:30 NOTE systemd[2394]: unison@share.service: Main process exited, code=exited, status=1/FAILURE
Sep 7 21:18:30 NOTE systemd[2394]: unison@share.service: Unit entered failed state.
Sep 7 21:18:30 NOTE systemd[2394]: unison@share.service: Failed with result 'exit-code'.
Když spustím, příkaz z ~/.config/systemd/user/unison@.service ručně v terminálu:
doga@NOTE:~$ /usr/local/bin/unison %i
Usage: unison [options]
or unison root1 root2 [options]
or unison profilename [options]
For a list of options, type "unison -help".
For a tutorial on basic usage, type "unison -doc tutorial".
For other documentation, type "unison -doc topics".
Profile /home/pokus/.unison/%i.prf does not exist
Takže to s parametrem %i nemůže najít konfigurační soubory.
-
Vzdyt to tam mas napsany: Profile /home/pokus/.unison/share.prf does not exist
Spusteni /usr/local/bin/unison %i v shellu ti fungovat nebude, %i je evidentne zalezitost systemd (nahradi to nazvem instance).
-
Ahoj, kofigurák share.prf nikde nefiguruje, žádný takový jsem nevytvářel a ani ho nechci volat. V home/user/.unison mam své tři *.prf. share.prf figuruje v ukázce, podle které jsem to stavěl, vis odkaz v prvním příspěvku. Ale nevidím proč ho unison volá, myslel jsem že je to nějaky deafult, když nemůže najít jiné.
-
Ahoj, kofigurák share.prf nikde nefiguruje, žádný takový jsem nevytvářel a ani ho nechci volat. V home/user/.unison mam své tři *.prf. share.prf figuruje v ukázce, podle které jsem to stavěl, vis odkaz v prvním příspěvku. Ale nevidím proč ho unison volá, myslel jsem že je to nějaky deafult, když nemůže najít jiné.
Protoze ho volas ty prikazem
systemctl --user start unison@share
to co das za zavinac je argument, ktery se pak v systemd unit nastavi za %i - velmi vagne a zjednodusene reseno. Muzes takhle mit templatovane jednotky a parameterizovat je. Zkus pogooglit systemd template unit.
Pro rychle reseni misto prikazu, kterym to spoustis ted zavolej neco ve smyslu:
systemctl --user start unison@<jmeno_konfigu_ktery_existuje>
-
Vy se mi snad zdáte… Vždyť jste sám psal o tom „zástupu“ – proměnné %i, tak jsem myslel, že víte, co to znamená. To by mne zajímalo, co jste si myslel o tom, jak to vlastně funguje. Nebo ne, radši to ani nechci vědět.
Když vytvoříte jednotku s názvem unison@.service (důležitý je ten zavináč), znamená to, že jste vytvořil šablonu. Pak můžete spouštět libovolné množství služeb podle téhle šablony tak, že za zavináč přidáte jméno instance. Takže unison@share.service je služba nazvaná unison@share, která je nakonfigurovaná podle šablony unison@.service. A právě to share se doplní za parametr %i v jednotkovém souboru.
Možnosti máte asi tři. Buď si pro každé unison sdílení vytvoříte samostatnou jednotku, kde si vše nakonfigurujete, a ty jednotky spolu nebudou mít nic společného. Nebo použijete ty šablony a parametr %i, pak ale musíte mít jednotky pojmenované tak, abyste pomocí toho parametru %i dokázal odkázat konkrétní soubor s konfigurací. Třetí možnost je použít také šablony, ale využít toho, že konfiguraci každé jednotky je možné přepsat, např. pro systémovou jednotku unison@share.service to uděláte v souboru /etc/systemd/system/unison@share.service.d/override.conf (pro vás bude lepší použít příkaz systemctl edit unison@share.service). V tom konfiguračním souboru pak nakonfigurujete proměnnou prostředí, kterou pak použijete v tom souboru se šablonou. Pak můžete mít ty cesty ke konfiguračním souborů úplně rozdílné, prostě v konfiguraci každé instance uvedete celou cestu ke konfiguračnímu souboru.
Každopádně doporučuju přečíst si manuálové stránky systemd (https://www.freedesktop.org/software/systemd/man/), alespoň systemd.service (https://www.freedesktop.org/software/systemd/man/systemd.service.html#) a systemd.unit (https://www.freedesktop.org/software/systemd/man/systemd.unit.html#).
-
AAAAA, něco takového jsem tušil. Valím studovat. Děkuji moc