LINUX.ORG.RU

systemd unit user path

 ,


0

2
...
[Service]
Type=oneshot
RemainAfterExit=yes
User=user
ExecStart=%h/.local/bin/firefox-sync.sh %i
ExecStop=%h/.local/bin/firefox-sync.sh %i

Как правильно взять в юните /home/user? Что-то типа

ExecStart=/home/${User}/.local/bin/firefox-sync.sh %i

★★★★
Ответ на: комментарий от eternal_sorrow

Так а как правильно это сделать? Сейчас у меня файл имеет вид:

firefox-profile@tv4mjq1z.default-release.service

При этом tv4mjq1z.default-release я формирую из переменной(имя текущего в фф профиля). Куда именно в имя файла добавить имя пользователя и как выбрать его из юнита? %i –> это всё от @ до .service

serg002 ★★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Удобно использовать в скрипте, который синкает тоже через переменную(если ты имел ввиду имя профиля в имени юнита)

serg002 ★★★★
() автор топика
Ответ на: комментарий от serg002

Нет, я про использование системного юнита вместо пользовательского. Какие для этого причины?

anonymous
()
Ответ на: комментарий от anonymous

Юзер скрипт начинает работать только после того, как залогинишься. А системный можно запустить при старте системы. В данном случае идёт синк профиля. Это лучше лучше делать не во время старта WM

К тому же юзер скрипты нельзя запускать в строгой очередности(вроде)

serg002 ★★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 2)
Ответ на: комментарий от serg002

Пользовательский инстанс systemd можно запускать при старте системы: loginctl enable-linger $USER. Так оно не привязывается к login/logout. Мне кажется, это лучше, чем те костыли, которые у тебя сейчас.

anonymous
()
Ответ на: комментарий от anonymous

Ну и вообще, я бы это повесил на пользовательский timer-юнит, если имеет смысл запускать синхронизацию периодически.

anonymous
()
Ответ на: комментарий от anonymous

loginctl enable-linger $USER

Тоже вариант

Костыли, но оно ж работает. Да и при использовании WM - всё на костылях, но всё работает так, как надо

serg002 ★★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 1)

Как правильно взять в юните /home/user

ExecStart=/bin/sh -c 'exec "$HOME/.local/bin/firefox-sync.sh" "$@"' -- %i

Но про systemd --user тебе уже сказали.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от anonymous

Мне почему то кажется не лучшей идеей делать enable-linger для пользователя под которым ты работаешь в графической сессии. Но возможно ОПу это подойдёт.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от serg002

Так а как правильно это сделать?

Так и делай. Пиши полный путь.

Сейчас у меня файл имеет вид

TMI

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.