LINUX.ORG.RU
ФорумAdmin

Автозапуск. Не получается через unit systemd

 , ,


0

1

Нужно запустить как сервис такую штуку как Fluvio. Запускается он коммандой fluvio cluster start или если уже был создан кластер то тогда fluvio cluster resume

 fluvio cluster start
📝 Running pre-flight checks
    ✅ Local Fluvio is not installed
    ✅ Previous local fluvio installation not found
🎉 All checks passed!
✅ Local Cluster initialized
👤 Profile set
✅ SC Launched
🤖 Starting SPU: (1/1) /                                                                                                                                                                ✅ 1 SPU launched
🎯 Successfully installed Local Fluvio cluster

после чего создается несколько процессов. После перезагрузки системы процессов естественно нет.

   1216 pts/0    Sl     0:00 /home/pg/.fluvio/bin/fluvio run sc --local /home/pg/.fluvio/data/metadata --bind-public 127.0.0.1:9003
   1233 pts/0    Sl     0:00 /home/pg/.fluvio/bin/fluvio-run sc --local /home/pg/.fluvio/data/metadata --bind-public 127.0.0.1:9003
   1252 pts/0    Sl     0:00 /home/pg/.fluvio/bin/fluvio run spu -i 5001 -p 0.0.0.0:9010 -v 0.0.0.0:9011 --log-base-dir /home/pg/.fluvio/data
   1269 pts/0    Sl     0:00 /home/pg/.fluvio/bin/fluvio-run spu -i 5001 -p 0.0.0.0:9010 -v 0.0.0.0:9011 --log-base-dir /home/pg/.fluvio/data

Если запустить через systemd то процесс не запускается.Утилита fluvio написана что сама запускает процессы и потом можно проверять статус процессов этой же утилитой. Но как сделать автостарт процессов?

 sudo systemctl status  fluvio.service
● fluvio.service - Fluvio Streaming Platform
     Loaded: loaded (/etc/systemd/system/fluvio.service; disabled; preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Tue 2025-03-04 17:39:26 MSK; 2s ago
    Process: 1132 ExecStart=/home/pg/.fluvio/bin/fluvio cluster start (code=exited, status=217/USER)
   Main PID: 1132 (code=exited, status=217/USER)


Последнее исправление: pistoletov (всего исправлений: 5)

И что, ты даже не посмотрел в логи? Ну как так?

Код выхода 217 говорит о том, что пользователя не существует.

bigbit ★★★★★
()
Ответ на: комментарий от ALiEN175
[Unit]
Description=Fluvio Streaming Platform
After=network.target

[Service]
Type=simple
User=pg
ExecStart=/home/pg/.fluvio/bin/fluvio cluster start
Restart=always
RestartSec=5
WorkingDirectory=/home/pg
Environment="PATH=/home/pg/.fluvio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

[Install]
WantedBy=multi-user.target
pistoletov
() автор топика

Если нет стандартных средств этого fluvio для этого, то просто создай юнит, который будет запускать fluvio cluster resume

goingUp ★★★★★
()
Ответ на: комментарий от ALiEN175
pg@dbpg:~$ namei -l /home/pg/.fluvio/bin/fluvio
f: /home/pg/.fluvio/bin/fluvio
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- pg   pg   pg
drwxrwxr-x pg   pg   .fluvio
drwxrwxr-x pg   pg   bin
-rwxrw-r-- pg   pg   fluvio
pistoletov
() автор топика
Ответ на: комментарий от goingUp

Перерыл всю документацию нет старндартных вариантов для запуска через systemd. Есть варианты через докер какие-то но зачем?

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

напиши скрипт.
по идее, разумная система должна resume без рабочих кластеров воспринимать как start.
вариант2: пиши скрипт.

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

Забудь про «нерекомендации» системг-адпетов. Нашёл кого слушать. Я вот нерекомендую системг к использованию, лучше слушай меня.

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

Спасибо, но я обойдусь без ваших рекомендаций =)

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

Забудьте вообще про rc.local. Он лет 8 уже не рекомендуется к использованию.

Кто вы такой, что бы спорить с богом?

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

На тему бога. Вы видимо действительно совсем новорег, вот например старая тема Почему Патрик Бог? Возможно не все комменты вам будут понятны, поэтому можете попробовать поискать и посвежее, могу предположить что подобных тем больше одной.

anc ★★★★★
()
Ответ на: комментарий от eternal_sorrow
Mar 04 15:54:33 dbpg systemd[1]: fluvio.service: Scheduled restart job, restart counter is at 4.
Mar 04 15:54:33 dbpg systemd[1]: Started fluvio.service - Fluvio Streaming Platform.
Mar 04 15:54:33 dbpg (fluvio)[37549]: fluvio.service: Failed to determine user credentials: No such process
Mar 04 15:54:33 dbpg systemd[1]: fluvio.service: Main process exited, code=exited, status=217/USER

ручками запускаю его под пользователем pg без проблем

pistoletov
() автор топика
Ответ на: комментарий от ALiEN175
 sudo chmod o+r /home/pg

pg@dbpg:~$ systemctl start fluvio.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to start 'fluvio.service'.
Authenticating as: AP (pg)
Password:
==== AUTHENTICATION COMPLETE ====


стал просить пароль при запуске. Заменил в юните fluvio cluster start на fluvio cluster resume. Запустился норм!-)

Mar 05 12:16:04 dbpg systemd[1]: fluvio.service: Scheduled restart job, restart counter is at 12761.
Mar 05 12:16:04 dbpg systemd[1]: Started fluvio.service - Fluvio Streaming Platform.
Mar 05 12:16:05 dbpg fluvio[107822]: 🎉 All checks passed!
Mar 05 12:16:08 dbpg fluvio[107822]: 🎯 Successfully installed Local Fluvio cluster
Mar 05 12:16:08 dbpg systemd[1]: fluvio.service: Deactivated successfully.
Mar 05 12:16:13 dbpg systemd[1]: fluvio.service: Scheduled restart job, restart counter is at 12762.
Mar 05 12:16:13 dbpg systemd[1]: Started fluvio.service - Fluvio Streaming Platform.
Mar 05 12:16:14 dbpg fluvio[107919]: 🎉 All checks passed!
Mar 05 12:16:17 dbpg fluvio[107919]: 🎯 Successfully installed Local Fluvio cluster
Mar 05 12:16:17 dbpg systemd[1]: fluvio.service: Deactivated successfully.

deactivated sucessfuly че это значит? Запустил процессы и вышел? Сами процессы активны

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

Ошибок не пишет. Вывод этой команды пустой

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

systemd-analyze verify unit.service еще иногда удобен проверять свои юниты

pg@dbpg:~$ sudo systemd-analyze verify fluvio.service
pg@dbpg:~$
pistoletov
() автор топика
Ответ на: комментарий от anc

Это вы к чему?

Это я к тому что иногда он помогает найти ошибку в юнит файле если что-то не получается.

Если выхлоп пустой то значит всё хорошо

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

подскажите если мне нужен запуск нескольких похожих сервисов. на каждый делаю unit файл или можно как-то одним обойтись?

/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-sql-sink-0.4.4.ipkg --config sql-first-vmt.yaml  --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-mqtt-source-0.2.9.ipkg -c emqx_first_vmt.yaml >> 123.txt
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-mqtt-source-0.2.9.ipkg  --config emqx-tele.yaml --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-mqtt-source-0.2.9.ipkg  --config emqx-sars.yaml --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-mqtt-source-0.2.9.ipkg  --config emqx-collection.yaml  --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-sql-sink-0.4.4.ipkg --config sql-collection.yaml --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-sql-sink-0.4.4.ipkg --config sql-telemet.yaml --log-level info
/home/emq/.fluvio/bin/cdk deploy start --ipkg infinyon-sql-sink-0.4.4.ipkg --config sql-saday.yaml --log-level debug
pistoletov
() автор топика
Ответ на: комментарий от pistoletov

делается через @ в конце имени сервиса. т.е. создаешь foo@.service.
а енаблишь как foo@bar.service bar есть параметр который можно использовать внутри сервиса.
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#Description
от Unit names can be parameterized by a single argument called the «instance name». и далее

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

а как быть с корректной остановкой сервиса? Запуск делаю так:

sudo systemctl start  outsql@sql_salesstat

Команды на запуск и останов из юнит файла такие:

ExecStart=/home/pg/.fluvio/bin/cdk deploy start --ipkg infinyon-sql-sink-0.4.4.ipkg  --config  %i.yaml
ExecStop=/home/pg/.fluvio/bin/cdk deploy shutdown -n %i

ExecStop выполнится только при запуске systemctl stop? мне бы хотелось его запускать и в случае сбоя работы сервиса то получается при сбое сервиса начинается поптыка перезапуска и забивает весь диск при по попытке запустить новый сервис не прибив корректно старый. Если запуск по событию failure То помнит ли юнит это передаваемое имя %i или оно только из коммандной строки при запуске или останове передается?

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

не надобилось в таких мудрениях. изучи документацию и тырнет опыт сам.

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