Portál AbcLinuxu, 6. května 2025 14:09

Dotaz: skript sa cez systemd nespusti

4.12.2020 17:46 jany2 | skóre: 30 | blog: jany_blog
skript sa cez systemd nespusti
Přečteno: 409×
Odpovědět | Admin
debian 10 netinstall v KVM. Potrebujem spustit skript po starte. Kedze to nechcem robit cez rc.local ako v deb8, ale mal by som pouzit systemd. Postupoval som podla toho navodu ale skript sa nespusti a vypise toto
● script1.service - script1_start
   Loaded: loaded (/etc/systemd/system/script1.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2020-12-04 17:34:11 CET; 1s ago
  Process: 373 ExecStart=/usr/local/script/script1.sh (code=exited, status=0/SUCCESS)
 Main PID: 373 (code=exited, status=0/SUCCESS)

dec 04 17:34:11 jany systemd[1]: Started script1_start.
dec 04 17:34:11 jany systemd[1]: script1.service: Succeeded.
Ak spustim skript samostatne
/usr/local/script/script1.sh
funguje bez problemov.
upozornujem, ze v linuxe som vecny zaciatocnik ...

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.12.2020 17:52 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle toho výstupu se skript spustí a ukončí se bez chyby. Jde o to, proč si myslíte, že se ten skript nespustí. A určitě bude vhodné sem ten skript přiložit.
4.12.2020 18:35 jany2 | skóre: 30 | blog: jany_blog
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Vyzera to tak, ale nie je to tak. Nepaci sa mi tento riadok
Active: inactive (dead) since Fri 2020-12-04 17:34:11 CET; 1s ago
Spustam obycajnu binarku, takze skript je uplne jednoduchy
#!/bin/bash
/cesta_k_binarke
Skript sa nespusti, lebo binarka nebezi. Ked skript spustim rucne, tak to funguje
upozornujem, ze v linuxe som vecny zaciatocnik ...
4.12.2020 18:50 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
inactive (dead) znamené že sa skript sám ukončil. Rozmýšľam či má zmysel sa opýtať ako je definované dané service, a čo má ten skript vôbec robiť. Ale asi nie, keďže to vyzerá na opajcnutý konfig z čias keď do Debianu zle portovali RC unity na systemd services a spravili tak negatívnu reklamu systemd.

V tomto prípade to bude na sto percent to isté. Žiadne detaily, len info že niečo utajené nefunguje.
4.12.2020 20:02 jany2 | skóre: 30 | blog: jany_blog
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
cerpal som odtial a moj config vyzera takto
[Unit]
Description=script1_start

[Service]
Type=simple
ExecStart=/usr/local/script/script1.sh
 
[Install]
WantedBy=multi-user.target
upozornujem, ze v linuxe som vecny zaciatocnik ...
michich avatar 7.12.2020 13:22 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Nesdělil jsi, co je to za binárku, kterou ten skript spouští. Z pohledu systemd je důležité vědět, jestli se forkuje a podle toho nastavit správně Type. V tomhle případě to asi bude forking. Souhlasím s kysučanovým příspěvkem dále, že je lepší spouštět přímo tu binárku, ale samozřejme jde napsat unit file tak, aby fungoval i s tím skriptem.
4.12.2020 21:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Ten řádek je v pořádku, říká, že se skript sám ukončil.

To, že binárka neběží, neznamená, že se skript nespustil. Spustil se, binárka také, ale nejspíš se vzápětí se ukončila a s tím i celý skript.

Uvědomte si, že skript se ze systemd spouští v jiném prostředí, než když ho spouštíte ručně. Zřejmě je ta binárka závislá na něčem, co máte nastavené ve svém prostředí, ale v prostředí systemd vám to chybí.
Řešení 1× (jany2 (tazatel))
4.12.2020 20:16 kysučan | skóre: 14
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Odpovědět | | Sbalit | Link | Blokovat | Admin
A prečo nespustíš rovno tú binárku. Napr.:

[Unit]
Description=OScam
After=network.target
Requires=network.target
[Service]
Type=forking
PIDFile=/var/run/oscam.pid
ExecStart=/usr/local/bin/oscam -b -B /var/run/oscam.pid -c /home/marian/oscmumu/
ExecStop=/usr/bin/rm /var/run/oscam.pid
TimeoutStopSec=1
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target

4.12.2020 20:36 jany2 | skóre: 30 | blog: jany_blog
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
a funguje ti to OK ?
upozornujem, ze v linuxe som vecny zaciatocnik ...
4.12.2020 21:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Ano, to vypadá jako daleko lepší řešení. Zvlášť když ten skript nedělá nic jiného, než že spustí tu binárku.
michich avatar 7.12.2020 13:31 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Requires=network.target
Tohle tam nedávejte, pokud vaše služba neslouží k vytváření síťových spojení (není to NetworkManager apod.). Viz man systemd.special, poznámka o rozdílu mezi network-online.target a network.target.
4.12.2020 22:37 zdenek2008 | skóre: 26
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mel jsem nedavno podobny problem. Do sekce [Service] jsem pridal

KillMode=process

a od te doby mi to funguje. Mozna by to stalo za vyzkouseni?

Zdroj: https://raspberrypi.stackexchange.com/questions/99520/running-subprocess-in-a-service-not-working
michich avatar 7.12.2020 13:24 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: skript sa cez systemd nespusti
KillMode raději ne. To sice zabrání zabití forknutého procesu, ale služba by se i nadále jevila jako inactive. Hlavní je mít správně Type.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.