Start skriptu po spuštění Ubuntu

MaBo

Start skriptu po spuštění Ubuntu
« kdy: 21. 01. 2021, 19:31:55 »
Dobrý den, chci se jen zeptat, zda existuje nějaký způsob, jak nechat spouštět v Ubuntu 20.04 skript. Jsem v tomhle začátečník a tak mám zmatek i ve skriptu:

Kód: [Vybrat]
#! /bin/bash nebo #! /bin/bash/sh -e ?
ani nevím, jestli

Kód: [Vybrat]
gnome-terminal --tab -e "sudo -i" --tab -e "sudo -i" --tab -e "sudo -i" --tab -e "sudo -i"
je správně, protože bash proti -e protestuje, i když skript spustí a funguje.

A pak bych chtěl vědět, jestli je správný postup:
založit v etc/rc.local s chmod +x, pak založit rc-local.service, zkusit systemctl enable rc-local, pak reboot a zkusit odezvu systemctl status rc-local.

Vyzkoušel jsem to a systém nenabootoval, takže jsem musel do nouzového režimu a všechno přes bash vrátit do původního stavu.

Díky za pomoc/odpověď.
« Poslední změna: 22. 01. 2021, 01:06:28 od Petr Krčmář »


_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:skript po spuštění
« Odpověď #1 kdy: 21. 01. 2021, 22:55:39 »
Citace
#! /bin/bash nebo #! /bin/bash/sh -e ?
/bin/bash/sh je nesmysl, takový soubor neexistuje. Ve skutečnosti řešíš dvě dilemata:

/bin/bash nebo /bin/sh
bash má více funkcí, ale je „nestandardní“ -- na některých systémech nemusí být nainstalovaný, a lidem, kteří ho z politických nebo technických (například miniaturní počítače s nedostatkem paměti) nemají pak nadávají když ho ve svých skriptech použiješ. To se tě ale téměř jistě netýká, a tak bych doporučil použít bash.

sh ve skutečnosti není nějaký konkrétní program, ale podle specifikace to může být libovolný program, který implementuje nějakou základní funkcionalitu. Na Ubuntu to je defaultně dash, ale dá se to změnit (dpkg-reconfigure dash) třeba na bash. Osobně miluji bash natolik :-), že na svým počítačích mám /bin/sh nastavený na bash.

jestli tam dát -e
-e způsobí, že se skript okamžitě ukončí, pokud dojde k chybě (normálně skript pokračuje v běhu i bez chyby). Zde velmi záleží na tom, jak je skript napsaný - jestli chyba může způsobit nějaký problém, nebo jestli je naopak skript naprasený tak, že k chybám běžně dochází a přesto vše potřebné funguje.



s gnome-terminal bohužel nepomohu, nepoužívám



Na Ubuntu nevím, ale na Debianu je rc-local.service už v distribuci, takže stačí vyrobit ten rc.local. Když to nenabootovalo, řeklo to nějaké informace?



Nevím, jestli uvedené souvisí, ale obecně z rc.local nechceš spouštět grafické aplikace (gnome-terminal), protože rc.local se provede ještě před přihlášením uživatele (a když se GUI restartuje/uživatel se odhlásí a přihlásí, tak se nespustí znovu). Programy pro automatické spuštění v GUI se dávají do ~/.config/autostart/ (pozor, asi to nejsou shell skripty, ale .desktop soubory), ale já to vždycky naklikám. Bohužel nepoužívám GNOME, v Xfce se to jmenuje "Sezení a programy po spuštění". Tam je seznam a můžeš si tam přidat vlastní.

Re:Startu skriptu po spuštění Ubuntu
« Odpověď #2 kdy: 21. 01. 2021, 23:16:24 »
Ahoj

Hodilo by se trocha upřesnění čeho tím chceš docílit.

V jaké situaci chceš ten tvůj script spouštět?
Při spouštění počítače (v jaké fázi, viz runlevels https://alibaba-cloud.medium.com/understanding-and-changing-runlevels-in-systemd-ccc30065c53d) /
Nebo po přihlášení uživatele ?
Také můžeš nastavit spouštění v pravidelných intervalech pomocí plánovače úloh, cronu.



MaBo

Re:skript po spuštění
« Odpověď #3 kdy: 21. 01. 2021, 23:48:09 »
Moc díky za pomoc.