Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Richard Závodný 09 Dubna 2016, 17:38:43

Název: Spuštění scriptu při startu systému
Přispěvatel: Richard Závodný 09 Dubna 2016, 17:38:43
Zdravím,
snažím se docílit spuštění scriptu po startu/rebootu systému, ale jaksi se mi to nedaří. :(

Mám cestu k souboru (dávám příklad): /cesta/k/memu/scriptu.sh a chci, aby se po každém spuštění systému ten script spustil a vykonal, co má.

Zkusil sem Crontab, Initscript, Příkaz v rc.local a prostě to nefunguje a já nevím proč. :(
Už jsem z toho docela mrzutý.

Díky,
Richard
Název: Re:Spuštění scriptu při startu systému
Přispěvatel: juwa2 09 Dubna 2016, 18:23:20
Použij "Aplikace spouštěné při přihlášení" A máš u toho scriptu nastavenou spustitelnost?
http://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login
Můžeš rovněž vytvořit  [Desktop Entry] a uložit jako  ~/.config/autostart/můj_autostart.desktop
příklad:
Kód: [Vybrat]
[Desktop Entry]
Type=Application
Name=<Name of application as displayed>
Exec=<command to execute>
Icon=<full path to icon>
Comment=<optinal comments>
X-GNOME-Autostart-enabled=true
------------------------------------------------------------------------
Pokud tě zajímá spuštění po rebootu:
Kód: [Vybrat]
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename
sudo update-rc.d filename defaults
kde "filename" je název tvého skriptu
Název: Re:Spuštění scriptu při startu systému
Přispěvatel: Jakub Vaněk 09 Dubna 2016, 18:32:32
Použij "Aplikace spouštěné při přihlášení" A máš u toho scriptu nastavenou spustitelnost?
http://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login
Tipuji že vzhledem k dotazu http://forum.ubuntu.cz/index.php?topic=75758 to asi nebude desktop. Funguje ten skript, když jej spustíš z konzole? Zkus do toho skriptu dát ladící hlášky. Ten v rc.local může potřebovat spustit na pozadí pomocí znaku &, ale to asi nebude ono.
Název: Re:Spuštění scriptu při startu systému
Přispěvatel: Richard Závodný 09 Dubna 2016, 20:46:31
Takže, jsem to "vyřešil" následovně. V /etc/rc.local mám příkaz, který volá start-servers.sh, který je umístěn v /etc/init.d a ten volá /home/minecraft/server01/start.sh a ten zase volá .jar (v tom samém úložišti), který vytváří adresářovou struktůru (pokud ještě není vytvořená).

Problém je, že start-servers.sh ten soubor (start.sh) jakoby includuje, tj. on ho vloží do "svého těla" a potom vykoná příkazy, které v něm jsou obsaženy jakoby na sebe (tj. do svého úložiště /etc/init.d).

Když toto nefixnu, tak se dál nepohnu. :/ Jdu dále zkoušet metodu pokus/omyl, takže kdyby někdo věděl, budu moc rád. :)
Název: Re:Spuštění scriptu při startu systému
Přispěvatel: Jakub Vaněk 10 Dubna 2016, 09:06:11
Takže, jsem to "vyřešil" následovně. V /etc/rc.local mám příkaz, který volá start-servers.sh, který je umístěn v /etc/init.d a ten volá /home/minecraft/server01/start.sh a ten zase volá .jar (v tom samém úložišti), který vytváří adresářovou struktůru (pokud ještě není vytvořená).

Problém je, že start-servers.sh ten soubor (start.sh) jakoby includuje, tj. on ho vloží do "svého těla" a potom vykoná příkazy, které v něm jsou obsaženy jakoby na sebe (tj. do svého úložiště /etc/init.d).

Když toto nefixnu, tak se dál nepohnu. :/ Jdu dále zkoušet metodu pokus/omyl, takže kdyby někdo věděl, budu moc rád. :)
Myslím že tuším, co tím myslíš. Ten start-servers.sh includuje to druhý pomocí tečky, přes exec a nebo jej jen spustí a nebo jak? Každopádně jestli potřebuješ, aby se ten skript "vykonával" v nějaké složce, použij cd, pokud chceš jít do složky, kde se nachází, tak zkus tohle:
Kód: [Vybrat]
cd -P -- "$(dirname -- "$0")"EDIT: ještě mám takovou poznámku, a to že by to chtělo, aby ten jar běžel pod jiným uživatelem než root.
Název: Re:Spuštění scriptu při startu systému
Přispěvatel: Richard Závodný 10 Dubna 2016, 19:32:57
Takže, jsem to "vyřešil" následovně. V /etc/rc.local mám příkaz, který volá start-servers.sh, který je umístěn v /etc/init.d a ten volá /home/minecraft/server01/start.sh a ten zase volá .jar (v tom samém úložišti), který vytváří adresářovou struktůru (pokud ještě není vytvořená).

Problém je, že start-servers.sh ten soubor (start.sh) jakoby includuje, tj. on ho vloží do "svého těla" a potom vykoná příkazy, které v něm jsou obsaženy jakoby na sebe (tj. do svého úložiště /etc/init.d).

Když toto nefixnu, tak se dál nepohnu. :/ Jdu dále zkoušet metodu pokus/omyl, takže kdyby někdo věděl, budu moc rád. :)
Myslím že tuším, co tím myslíš. Ten start-servers.sh includuje to druhý pomocí tečky, přes exec a nebo jej jen spustí a nebo jak? Každopádně jestli potřebuješ, aby se ten skript "vykonával" v nějaké složce, použij cd, pokud chceš jít do složky, kde se nachází, tak zkus tohle:
Kód: [Vybrat]
cd -P -- "$(dirname -- "$0")"EDIT: ještě mám takovou poznámku, a to že by to chtělo, aby ten jar běžel pod jiným uživatelem než root.

No, tak jsem to vyřešil tak, že jsem nepsal absolutní cestu ke scriptu, ale nejdříve jsem se přesunul do adresáře kde se daný script nachází příkazem cd. Díky za rady, to bude všechno. Spuštění při startu systému funguje, tj. byla chyba v tom scriptu který to špatně interpretoval. :)