Fórum Root.cz

Hlavní témata => Software => Téma založeno: doga312 06. 09. 2017, 10:25:53

Název: Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: 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í:
Kód: [Vybrat]
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
Kód: [Vybrat]
# 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:
Kód: [Vybrat]
[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
Kód: [Vybrat]
systemctl --user start unison@shareale při
Kód: [Vybrat]
systemctl --user status unison@sharemi to vypisuje chybu
Kód: [Vybrat]
● 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í
Kód: [Vybrat]
unison Desk
to funguje jak má.
Kde muže být chyba? Dík za pomoc ;)
Název: Re:Unison "realtime sync" nejde spustit jako služba
Přispěvatel: Jirsákova tchýně 06. 09. 2017, 10:34:34
Kde muže být chyba?

U Lennarta, ale to se nesmí říkat.
Název: Re:Unison "realtime sync" nejde spustit jako služba
Přispěvatel: Filip Jirsák 06. 09. 2017, 10:52:56
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é.
Název: Re:Unison "realtime sync" nejde spustit jako služba
Přispěvatel: doga312 06. 09. 2017, 10:58:30
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?
Název: Re:Unison "realtime sync" nejde spustit jako služba
Přispěvatel: doga312 06. 09. 2017, 12:21:37
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?
Název: Re:Unison "realtime sync" nejde spustit jako služba
Přispěvatel: Filip Jirsák 06. 09. 2017, 12:56:43
%i má v ExecStart normálně fungovat. Opravdu by pomohlo, kdybyste sem dal příslušný výpis logu.
Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: doga312 07. 09. 2017, 21:34:21
Ahoj, zde je výpis z syslogu:
Kód: [Vybrat]
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:
Kód: [Vybrat]
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.
Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: martin 08. 09. 2017, 02:09:25
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).
Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: doga312 08. 09. 2017, 08:05:39
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é.
Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: ldj 08. 09. 2017, 08:50:52
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
Kód: [Vybrat]
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:
Kód: [Vybrat]
systemctl --user start unison@<jmeno_konfigu_ktery_existuje>

Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: Filip Jirsák 08. 09. 2017, 09:02:58
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#).
Název: Re:Unison „realtime sync“ nejde spustit jako služba
Přispěvatel: doga312 08. 09. 2017, 09:22:30
AAAAA, něco takového jsem tušil. Valím studovat. Děkuji moc