Fórum Root.cz
Hlavní témata => Software => Téma založeno: Michal 08. 06. 2013, 11:18:35
-
Dobrý den,
mohl by mi prosím někdo poradit jak v linuxu (raspbian) nastavit to, aby se mi po nastartování LXDE spustil LXterminal a v něm nějaké příkazy?
-
/home/profil/.config/autostart/lxterminal.desktop a v něm:
[Desktop Entry]
Type=Application
Exec=lxterminal -e mc
Což Ti po startu spustí lxterminal s mc.
Ale neznám Tvou distribuci, třeba to tak nebude fungovat.
-
Uvadel jsem ze mam distribuci raspbian :)
Ale jinak dekuji, jen by me zajimalo, to co jsi mi napsal je pro vykonani pouze jednoho prikazu? Nebo jich muzu uvest vice?
-
Nebo jich muzu uvest vice?
Muzes misto prikazu zavolat svuj skript a v nem tech prikazu mit treba milion.
-
Nebo jich muzu uvest vice?
Muzes misto prikazu zavolat svuj skript a v nem tech prikazu mit treba milion.
Což znamená, že místo toho mc bude název toho skriptu. Neznám Tvou distribuci = že ji nepoužívám, takže nevím, jestli to tam takto bude fungovat.
-
A ten skript by mel byt napsany v jakem souboru a strukture? Jsem v tomto zacatecnik, tak se omlouvam za mozna zbytecne otazky.
-
Nejlépe začít asi tímto: http://www.abclinuxu.cz/clanky/navody/bash-i
-
Skript by mel byt napsany v souboru a strukture odpovidajici danemu programovacimu jazyku ci prikazovem interpretru, ktery chces pouzit - napriklad Bash, Dash, Zsh, Bourne Shell (sh), Awk, Gawk, Mawk, Perl, Python, Ruby, PHP. :)
-
Dobre, zkusim to zkonkretizovat. Chci pomoci toho skriptu spustit tyto 2 prikazy:
1. "gpio load spi"
2. "./Desktop/app"
-
lxterminal -e bash -c 'ls -l; bash'
Tento příkaz spustí lxterminal a v něm spustí příkaz "bash -c 'ls -l; bash'". Ten příkaz spustí bash a v něm script "ls -l; bash". Ten zase způsobí vypsání obsahu současného adresáře do lxterminalu a přepnutí do interaktivního režimu.
lxterminal -e bash -c '~/myscript.sh; bash'
Toto je velmi podobný příkaz. Otevře lxterminal, v něm spustí soubor 'myscript.sh' umístěný v domovském adresáři a pak přepne do interaktivního režimu.
myscript.sh může vypadat třeba takhle (nebo jakkoliv jinak, viz zmiňovaný seriál http://www.abclinuxu.cz/clanky/navody/bash-i (http://www.abclinuxu.cz/clanky/navody/bash-i)):
#!/bin/bash
echo "spuštěné procesy uživatele `whoami`:"
ps -u `whoami`
-
Dobre, zkusim to zkonkretizovat. Chci pomoci toho skriptu spustit tyto 2 prikazy:
1. "gpio load spi"
2. "./Desktop/app"
Ještě není jasné, jestli chceš, aby se jenom provedly tyhle příkazy a pak se lxterminal ukončil (pak ani není třeba používat terminál, ale stačí to spustit rovnou). Nebo jestli chceš, aby se to provedlo v terminálu a ten se pak ukončil jenom když příkazy proběhnou v pořádku. Nebo jestli chceš, aby se provedly v terminalu a pak se v něm zapnul bash (nebo jiný shell).
Asi by bylo ale dobré udělat si script, který tyto příkazy provede (viz můj předchozí příspěvek a TIGERem zmiňovaný seriál o bashi) a až teprve pak tento vytvořený script spouštět požadovaným způsobem.
-
Potrebuji aby terminal byl po spusteni posledniho (druheho) prikazu otevreny. Pac se budou do tohoto terminalu vypisovat vysledky spustne "app", ktera bude vypisova stavy kazdou minutu
-
Potrebuji aby terminal byl po spusteni posledniho (druheho) prikazu otevreny. Pac se budou do tohoto terminalu vypisovat vysledky spustne "app", ktera bude vypisova stavy kazdou minutu
A co cheš aby se s terminálem stalo po skončení toho podledního (druhého) příkazu?
-
zustane otevreny, pac z toho posledniho prikazu budou chodit pravidelne reporty do terminalu
-
Člověče, z Vás to leze jak z chlupaté deky... 8)
-
Ja myslel, ze je jasne co chci :)
-
No pořád tu je pár nejasností, ale co nadělám.
Zkus třeba něco takového (řetězce ohraničené znaky <> nahraď za správné hodnoty):
/home/<jmeno-uzivatele>/.config/autostart/lxterminal-app.desktop:
[Desktop Entry]
Type=Application
Exec=lxterminal -e /home/<jmeno-uzivatele>/lxterminal-app.sh
/home/<jmeno-uzivatele>/lxterminal-app.sh:
#!/bin/bash
gpio load spi
<absolutni-cesta>/Desktop/app
A udělej soubor /home/<jmeno-uzivatele>/lxterminal-app.sh spustitelný. Např příkazem:
chmod a+x /home/<jmeno-uzivatele>/lxterminal-app.sh
-
zustane otevreny, pac z toho posledniho prikazu budou chodit pravidelne reporty do terminalu
A preco maju tie reporty ist prave do terminalu? Vacsinou sa pouziva to, ze program sa spusti na pozadi (a ak nejde o vec suvisiacu priamo s grafickym prostredim, tak prihlasenie ani nie je nutne) vystup je presmerovany do suboru, ktory sa da hocijako spracovavat (samozrejme ten subor mozes zaroven aj priebezne vypisovat do terminalu) a hlavne ti to cele nezmizne, ked sa nieco neobvykle stane (napriklad vypadok prudu).
Inak naozaj to z teba lezie jak z chlpatej deky. Keby si hned na zaciatku popisal aj suvislosti (aku situaciu riesis, ako si riesenie celkovo predstavujes a s ktorym detailom potrebujes pomoct), dostal by si pravdepodobne uzitocnejsie odpovede - hlavne ak si zaciatocnik.
-
Dobrá tedy, tak to zkusím popsat :)
Koupil jsem si Raspberry Pi a na něm mi běží linuxová distribuce Rasbian. Koupil jsem jej proto, že vyvijím vlastní meteostanici postavenou na ARMu. No a vzhledem k tomu, že tato meteostanice bude posílat (už asi týden posílá) naměřená data a je umístěna v zahradě, kde se mi nechce tahat ethernetový kabel, tak jsem to vyřešil bezdrátovou komunikaci (2.4 Ghz). Takže mi jdou data z metea do RPi a z RPi na server. To co zobrazuji v terminálu jsou aktuálně naměřená data a potvrzení odeslání těchto dat na server. Ten výpis do terminálu mi přišel jako dobrý nápad, když pro správu RPi používám TightVNC. Akorát jak už jsem tu zmínil já i někdo jiný, po výpadku proudu se musím připojit do RPi a ručně musím povolit používaní SPI komunikaci na GPIO (proto ten příkaz "gpio load spi") a pak spustit samotný skript, který obsluhuje bezdrátový modul, přeposílá data na server a výtváří výpis v terminálu. Takže vidím, kdy přišli poslední data, jaké byly jejich hodnoty a zda se je podařilo odeslat na server. Ale je fakt, že výstup do souboru by možná nebyl marný, aspoň by to byla nějaká záloha.
-
No už jsme ti tu napsali kopu rad, jak na to. Zkoušel jsi už něco z toho?
-
...Ale je fakt, že výstup do souboru by možná nebyl marný, aspoň by to byla nějaká záloha.
Rozhodně do souboru! Pokud vedle toho chceš v terminálu zobrazovat i to co do souboru teče, použij
tail -f ~/mujlog.txt
Ale aby v terminalovém okně běžel samotný skript je pitomost.