Запуск приложения systemd

Автор makarenko, 15 января 2016, 09:58:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

makarenko

Добрый день.
Есть raspberry pi с установленной системой Raspbian.
Так же имеется скрипт  который ожидает ввод символов с клавиатуры и проверят их в базе.
Необходимо чтобы скрипт запускалось после старта устройства и после входа в систему.
Как я вижу решение задачи.
1. необходимо осуществить автоматический вход в систему. (РЕШЕНО)
2. необходимо запустить скрипт.

У меня вопрос по второму пункту. До обновления системы (конкретно systemd) я запуск скрипта делал через rc.local.
Как осуществить запуск скрипта после полной загрузки системы?

Заранее спасибо.

lumberjack

#1

Yrii

так и с systemd можно использовать всё так же rc.local (у меня на одном компе так и сделано - все нормально отрабатывает)

makarenko

Спасибо за мануал прочитаю еще раз.
Вот с rc.local не все так просто. как я понимаю rc.local реализован как сервис и он запускается до запуска последнего сервиса (т.е. не последним) и как следствие в мой скрипт начинает работать до того как загрузились все сервисы.

ferum

Хотя запуск через rc.local это костыльное решение, отсрочить  запуск вашего сервиса не составляет труда, достаточно перед командой на исполнение вписать строку sleep  с указанием времени отсрочки в секундах.
Русские дебианщики против цифрового слабоумия !

makarenko

ferum, Спасибо за ответ. Sleep не устанавливает загрузка сервиса он просто его приостанавливает и стопорит оставшиеся сервисы. Пробовал просто перезапустить сервис rc-local он отрабатывает не корректно. такое ощущение, что нельзя запустить скрипт через сервис и ожидать ввода символов, а то основная задача.  :(

lumberjack

а почему именно rc-local? почему нельзя сервисом отдельным прогу запихать-то? а там уже и ожидание выставить, раз уж надо

makarenko

lumberjack, а какие еще варианты?

vic5710

можно в .bash_profile запуск сделать. будет выполняться после логина

ferum

В общем наверное надо писать юнит для запуска вашего скрипта, а для этого надо как минимум знать его название, расположение и время старта ( после чего он должен стартовать)а так же к каой группе приложений или сервисов он относится.
Русские дебианщики против цифрового слабоумия !

lumberjack

#10
makarenko, да с любого сервиса берешь как банальный пример.
к примеру, у меня от юзера запускается сервис mpd
[Unit]
Description=Music Player Daemon
After=network.target sound.target

[Service]
ExecStart=/usr/bin/mpd --no-daemon

# allow MPD to use real-time priority 50
LimitRTPRIO=50
LimitRTTIME=infinity

[Install]
WantedBy=default.target

как видишь, ничего сложного.
подобным образом хоть виртуалку запускаешь, хоть ssh или несколько яндекс.дисков... да что угодно...

makarenko

#11
lumberjack, Спасибо за ответ. Завтра попробую создать отдельный сервис.

Cообщение объединено 18 января 2016, 13:29:10

Всем добрый день.
В общем попробовал создать. Делал так
1. создал для примера файл bash.service

[Unit]
Description=test
After=network.target

[Service]

ExecStart=/bin/bash '/usr/python/eticket/start.sh'
# allow MPD to use real-time priority 50
LimitRTPRIO=50
LimitRTTIME=infinity

[Install]
WantedBy=default.target

2. обновил список systemctl daemon-reload
3. запустил systemctl start bash.service
4. проверил статус systemctl status bash.service

● bash.service - MyBashScript
   Loaded: loaded (/etc/systemd/system/bash.service; enabled)
   Active: inactive (dead) since Пн 2016-01-18 10:16:00 UTC; 2s ago
  Process: 1214 ExecStart=/bin/bash /usr/python/eticket/start.sh (code=exited, status=0/SUCCESS)
Main PID: 1214 (code=exited, status=0/SUCCESS)

янв 18 10:15:59 raspberrypi systemd[1]: Started MyBashScript.



start.sh выглядит так

#!/bin/bash
read B
echo $B




как я понимаю теперь при запуски системы у меня должен запустить данный сервис и ожидать ввода символов с клавиатуры.
Но у меня этого не происходит.
Как я понял у меня процесс запустился в фоне.


makarenko

В общем решил задачу самым простым способом :( и самым кривым
В файле /etc/profile прописал запуск процесса. И как следствие автологин не нужен.
Всем спасибо кто откликнулся :)

Тему можно закрывать.