Автор Гілка: Запуск своїх скриптів через systemd  (Прочитано 2298 раз)

Відсутній pawel_chk

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Як правильно організувати запуск\зупинку своїх скриптів (не демонів) використовуючи systemd під час завантаження\зупинки системи..

Згідно мануалів зробив наступне:
створив сервіс progress.service з таким вмістом:
[Unit]                                            
Description=Start Progress 10.0                    
After=syslog.target                                
                                                  
[Service]                                          
Type=oneshot                                      
RemainAfterExit=yes                                
ExecStart=/bin/sh `/etc/rc.d/rc3.d/init.d/SzzzServ`

[Install]                                          
WantedBy=multi-user.target  

поклав його у /etc/systemd/system
далі

#systemctl daemon-reload
#systemctl start progress.service
видає наступне ..Job failed. See system logs and 'systemctl status' for details.
в syslog
systemd[1]: progress.service: main process exited, code=exited, status=127

systemd[1]: Unit progress.service entered failed state

в зареестрованих сервіса мій сервіс є..
Зміна Type  на можливі значення призводить також до роботи з помилками..


По ходу ще питання ,де прописан запуск LSB скриптів? Для прикладу є зареестровані сервіси sshd.service smb.service і т.п. Для їх запуску\зупинки залишилась стара система  SysV init. При виконнанні systemctl disable(enable) smb.service у /etc/rc.d/rc3.d зникає\створюеться посилання S91samba..   Як systemd "знає" що потрібно це обробляти?




                      


« Змінено: 2013-04-18 17:03:47 від pawel_chk »

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Запуск своїх скриптів через systemd
« Відповідей #1 : 2013-04-18 23:02:21 »
я б подивився чи ваш скрипт повертає 0 після виклику, інакше systemd може вважати, що скрипт не відпрацював

окрім того, в мене є схожа служба, що запускає одноразовий скрипт, але немає рядку
RemainAfterExit=yes
(а його типове значення no)

Fedora 35 (x86-64)

Відсутній pawel_chk

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Запуск своїх скриптів через systemd
« Відповідей #2 : 2013-04-19 12:30:59 »
Перша частина пішла ..По перше була помилка в шляху до скрипта..:)  Конструкція ExecStart=/bin/sh `/etc/rc.d/init.d/SzzzServ`(хоча таке я взяв з доки) не працює ні як,тільки ExecStart=/etc/rc.d/init.d/SzzzServ

тепер скрипт виконується,але це тільки пів справи.. Першим скриптом піднімається БД,а от опускати її тра іншим..
зробив наступне
[Unit]                                            
Description=Start Progress 10.0                    
After=syslog.target                                
                                                  
[Service]                                          
Type=oneshot
RemainAfterExit=yes                                      
ExecStart=/etc/rc.d/init.d/SzzzServ
ExecStop=/etc/rc.d/init.d/I000Shut

[Install]                                          
WantedBy=multi-user.target  

при виконнанні
# systemctl start(stop) progress.service
все чудово відпрацьовує
а от при зупинці сервака або ребуті ,скрипт зупинки не спрацьовує.

в кого які думки з того приводу?
« Змінено: 2013-04-19 12:55:36 від pawel_chk »

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
Re: Запуск своїх скриптів через systemd
« Відповідей #3 : 2013-04-21 01:00:59 »
Спробуй в Unit додати StopWhenUnneeded=yes
« Змінено: 2013-04-21 01:03:16 від HetmanNet »
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..