Am un script care rulează ca rădăcină și încerc să seteze un serviciu de utilizator pentru a rula un daemon IPFS. Problema este că trebuie să activez serviciul ca utilizator, mai degrabă decât ca root. De obicei funcționează după o repornire, dar aș dori să evit asta dacă pot.
Scriptul de serviciu se află la ~/.config/systemd/user/ipfs.service
Contine:
[Unitate]
Descriere=daemon IPFS
[Serviciu]
# Environment="IPFS_PATH=/data/ipfs" # cale opțională către directorul init ipfs dacă nu este implicit (\$HOME/.ipfs)
ExecStart=/usr/local/bin/ipfs demon
Restart=la eșec
[Instalare]
WantedBy=default.target
(Am luat acest cod de aici: https://github.com/ipfs/go-ipfs/tree/master/misc )
Dacă rulez aceste comenzi ca utilizator, funcționează corect:
systemctl --user enable ipfs
systemctl --user start ipfs
Problema este că scriptul meu rulează ca root și nu îmi pot da seama cum să fac ca acesta să ruleze ca utilizator. Am incercat asta pana acum:
# Activați linger pentru ca IPFS să poată rula la pornire
loginctl enable-linger $USER_ACCOUNT
# Activați serviciul să ruleze la pornire
sudo -u $USER_ACCOUNT systemctl --user enable ipfs
# Începeți serviciul acum
sudo -u $USER_ACCOUNT systemctl --user start ipfs
Din păcate, cu aceasta, serviciul nu pornește și când primesc acest mesaj de eroare:
Nu s-a putut conecta la magistrală: $DBUS_SESSION_BUS_ADDRESS și $XDG_RUNTIME_DIR nu au fost definite (luați în considerare utilizarea [email protected] --user pentru a vă conecta la magistrala altui utilizator)
Odată ce scriptul s-a terminat și repornesc, serviciul începe bine, dar aș dori să evit ca utilizatorul să fie nevoit să repornească dacă pot. Orice ajutor ar fi apreciat.