Portál AbcLinuxu, 5. května 2025 15:10
pro vodlaďování mužeš zkusit zavolat přikaz systemd-analyze:
systemd-analyze verify my-application.service
noa z vypisu budeš asi víc moudřejší než z tohodlenc hlášení chybovýho :D ;D
to se mi ňák jakože nezdá že by v jedný unitě mohlo bejt víc [service] sekcí než jenom právě jedna :O :O
víc skriptů mužeš v 'ExecStart' pustit unitou jenom když má nastavenej 'Type' pouze na 'oneshot' hele. Pokud si typ nespecifikoval (a to si nespecifikoval) tak defaultní typ je 'simple'. Nicmeně ani todlecto by asi jako tvuj problém neřešilo.
Mohl by si využít 'execStartPre' nebo 'execStartPost' hele na spuštění před nebo po startu skriptu v 'ExecStart' pokud ti nevadí že voba skripty poběžej pod tim samým uživatelem. Pokud to va, nóó tak asi rozdělit do dvou unit a možná si jednu druhou vyžádat páč předpokládám že ten vobyčejnej skript je na tom rootovským zavislej :O ;D
to rootovskou pomenujem třeba sanochova.service a napišem do ni
[Unit] Description=Sanochuv skript s rootem After=network.target [Service] ExecStart=/home/nas/skript1 Restart=always User=root Group=root [Install] WantedBy=multi-user.target
noa pak druhou nějakou službu, která už pod tim rootem nepoběží
[Unit] Description=Sanochuv obycejnej skript After=network.target sanochova.service Requires=sanochova.service [Service] ExecStart=/home/nas/skript2 Restart=always User=nas Group=nas [Install] WantedBy=multi-user.target
eště mě napadá možnost udělat tu service 'forking' a spustit jeden skript druhým ale to se prej v systemd nedoporučuje ikdyž to je prej uplně běžná linuxová praxe :D
žádný složšky, normálně jenom jako *.service soubory ve '/etc/systemd/system'.
dej sem vystup tamtoho 'systemd-analyze verify', to by mělo víc podrobnějc vypsat jakou máš v tý unitě chybu :O :O
netuším jak se dostat k textu za odrážkou.
tim 'textem za odrážkou' myslíš co :O :O
systemd-analyze verify nevyplivne nic
příde mi dost nepravděpodobný by to současně nadávalo na 'bad unit file' a současně systemd-analyze nic nevyplivlo :O :O zkontroluj pro jistotu jestli tim necháváš analyzovat správnej soubor :O :O
sudo systemctl status my-service.service | catJde to i jinak (argumentem), tohle si líp pamatuju.
zkus tu službu zastavit, udělat daemon-reload jestli si to už neudělal a znova zkusit spustit :O :O
....nejspíš to bere ten starej soubor *.service kterej ale už nevodpovídá současnýmu, dycky když se poeditujou už existujicí *.service soubory tak se pak musej znova načíst :O :O
sudo systemctl stop my-application.service sudo systemctl daemon-reload sudo systemctl start my-application.service
Nemá se to zapsat náhodou do: /etc/systemd/system/skript1.service a druhý /etc/systemd/system/skript2.service
název toho *.service souboru se nemusí shodovat s názvem spouštěnýho skriptu, ten název si mužeš zvolit jakejkoliv
jinak mi asi jako rozumíš správně, v tý minulý odpovědi (hele) jsem to tak myslela - rozdělit do dvouch různejch *.service souborů :D ;D
[Unit] Description=My Application Auto Start After=network-online.target [Service] Type=oneshot ExecStart=/home/nas/skript 1 ExecStartPost=!/home/nas/skript 2 Restart=always User=nas Group=nas [Install] WantedBy=multi-user.targetType nastav podle toho, jestli je to služba nebo jednorázový skript.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.