Portál AbcLinuxu, 16. dubna 2024 15:50


Dotaz: Jak spustit script po restartu nebo spuštění serveru

10.10.2021 16:58 dnes
Jak spustit script po restartu nebo spuštění serveru
Přečteno: 598×
Odpovědět | Admin
Zdravím, můžu se zeptat zkušených, jak spustit script.sh po restartu nebo spuštění serveru na kterém běží Debian? Jedná se o server bez GUI nejedná se o desktop. Děkuji

Řešení dotazu:


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

Odpovědi

Pavel 'TIGER' Růžička avatar 10.10.2021 17:41 Pavel 'TIGER' Růžička | skóre: 53
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
https://www.baeldung.com/linux/run-script-on-startup
Jendа avatar 10.10.2021 18:05 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Pozor, že Type=simple očekává, že spuštěný proces bude trvale běžet. Pokud se jedná o jednorázový skript (který něco udělá a skončí), nastav Type=oneshot.
10.10.2021 22:35 czjaromir | skóre: 18
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já bych ho dal do init.d a udělal symlink do rcS.d
Jendа avatar 10.10.2021 22:38 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
To buď už v Debianu od verze 10 (kdy je efektivně vynuceno používat systemd) nebude fungovat vůbec, nebo se z toho skriptu pomocí automatického generátoru vygeneruje systemd unita, a to nechceš, protože je to komplikované, neprůhledné, zabugované a časem to přestane fungovat.
10.10.2021 22:59 czjaromir | skóre: 18
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
no neveděl jsem že se v linuxu něco vynucuje. A moc se mi to nelíbí. Vím že tam je systemd. Taky vím proč, ale proč by nebylo možné ten skript normálně zařadit do procesů při startu. Kdyby to náhodou nešlo pak je potřeba projít si systemd.
Jendа avatar 10.10.2021 23:02 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
no neveděl jsem že se v linuxu něco vynucuje
Tak jako nevynucuje, ale když nebudeš mít systemd, tak si budeš muset spoustu věcí řešit sám, protože jiné inity už nejsou podporované.
ale proč by nebylo možné ten skript normálně zařadit do procesů při startu
Vždyť přesně to dělají ty věci probírané výše. Rozdíl je v tom, že systemd nespouští skripty v /etc/rc*, ale programy definované v unitách.
11.10.2021 09:18 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
stroj :~# cat /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=10
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.targe
Pokud si vytvoří za zapne tuhle unitu, tak může normálně používat rc.local jako dřív.
k3dAR avatar 11.10.2021 13:45 k3dAR | skóre: 62
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
btw: v *buntu je tato unita uz pritomna:
cat /etc/systemd/system/rc-local.service
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
jedine co je potreba, vytvorit /etc/rc.local a "chmod +x /etc/rc.local", a jako posledni radek v rc.local mit: exit 0
porad nemam telo, ale uz mam hlavu... nobody
Řešení 1× (Heron)
Josef Kufner avatar 11.10.2021 13:55 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Tak jako tak je to však dosti nešikovné řešení a je mnohem lepší si napsat unitu pro tu danou službu či skript. Je to pár řádek a chová se to mnohem lépe.
Hello world ! Segmentation fault (core dumped)
k3dAR avatar 11.10.2021 14:25 k3dAR | skóre: 62
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
to nerozporuju ;-) sice na drobnosti stale pouzivam rc.local, ale jinak systemd unitu pouzivam treba na x11vnc (nechapu proc nema unitu rovnou (balicek v *buntu)), nahazovani/udrzovani ssh tunelu, spousteni skriptu co krome po startu se ma hlidat ze stale bezi, v skriptu mam sice smycku, ale kdyby to vypadlo tak ho unita znovu nahodi, navic v status pohodlne sleduju zda/co z skriptu zrovna bezi, vidim tam vystupy atd...
porad nemam telo, ale uz mam hlavu... nobody
Josef Kufner avatar 11.10.2021 18:38 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Ono i na ty drobnosti to je mnohem lepší. Zatím snad všechny problémy, co jsem měl se systemd, byly kvůli nějaké kompatibilitě se starým initem. Použitím rc.local se připravuješ o většinu výhod, které systemd poskytuje a nezbavíš se jeho nevýhod. Přitom napsat plnohodnotnou unit pro nějakou ptákovinu je méně práce než to psát jinam a řešit, že chceš ten oneliner restartovat, ale nechceš spouštět tu věc hned vedle...
Hello world ! Segmentation fault (core dumped)
12.10.2021 00:29 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Použití rc.local, tak jak jsem ho uvedl výše má jeden podstatný důvod – spouští se až úplně nakonec. Což je za určitých situací přesně to co chceš, jelikož systemd spouštění paralelizuje a to nemusí být ideální, pokud nechceš řešit 3x3 závislostí.
pepe_ avatar 12.10.2021 21:15 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Jak spustit script po restartu nebo spuštění serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin

Já používám :

 

pod uživatelem pod kterým má běžet script se přihlásím a zadám   crontab -e

na konec souboru zadám :

 

@reboot sleep 60 && /cesta/ke/scriptu.sh

 

ukončím editor

no a hotovo.

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.