Debian Squeeze -t használok.
Próbálok, felhasználó globális "környezeti" változót létrehozni:
#!/bin/sh
WEBCAM_DEVICE="/dev/video0"
export WEBCAM_DEVICE
...
exit 0
Ha lefuttatom a scriptet, és utána kiadom a $echo $WEBCAM_DEVICE parancsot üres stringet kapok vissza (egy szál soremelés). Nem tudja valaki mit szúrok el?
- 2237 megtekintés
Hozzászólások
A környezeti változók addig vannak meg, amíg a környezet létezik. Amikor az exit kilép a környezetből, annak a környezetnek a változói elvesznek.
- A hozzászóláshoz be kell jelentkezni
próbáld így:
source script_neve.sh
- A hozzászóláshoz be kell jelentkezni
Értem :(
A source valami.sh megoldás ismerem de így a cgi scriptekben (akik használnák a változókat) abszolút path -t kell megadnom :(
Nem szeretném a bashrc -be sem betenni.
Közben, megnéztem, hogy az így beállított változókat, a később ugyanebben a scriptben felállított screen session viszont megkapja. Lehet hogy egyenlőre ez így megoldja.
Más lehetőség nincs?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Beallithatod a httpd configjaban is. Kb az osszes tamogat ilyet, apache, nginx, ligthy is.
(Lasd a dokumentaciojukat ;)
--
|8]
- A hozzászóláshoz be kell jelentkezni
busybox httpd - nem láttam de lehet hogy van.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Annak meg legrosszabb esetben belehackeled a forrasaba, par setenv() lehet az egesz.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Nem nyitok ehhez új topicot. Jelenleg a screen, mint futtatási környezet tökéletesen működik. Kicsit zűrös, de egy scriptben sikerült elraknom mind az indítást mind a leállítást. Az egyszerűbb esetben elindul a screen, kreál a session -ön belül még három screen -t. Majd az 1 "window" -ban eléindítja a camera grabbert, a másodikban a busyboxot, mint http szerver (applet) és a harmadikban egy ssh reverse tunnel csatornát nyit. Minden debug információt a saját stdout -ra nyom - működik.
írtam egy leállító scriptet is, ez szépen kiekeresi a ps segítségével a pid -ket ,és sorban lelővi a programokat, végül bezárja a screen session -t.
A gond, hogy esetleg több busybox vagy ssh is futhat, amit nem kellene leállítani, azonban a screen -ben indító parancsok esetében nem tudom a pidet kinyerni - a program nem áll le, így a pid nem lekérdezhető, csak grep segítségével azonosítható.
Tudtok valami olyanról ami elindít egy folyamatot, a pid -jét elrakja és kilép?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
start-stop-daemon a neve neki.
De legrosszabb esetben par sorbol lehet ilyent irni, valamelyik exec* fuggveny kell neked, a pidet meg leirod egy fajlba.
Egyebken en igy oldanam meg a screenezest is, valami egyszeru kis C wrapper + forkok.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Kösz. Valami olyasmire gondolsz hogy exec "valami paraméterekkel" & ?
Ebből a szituációból, hogy tudom meg a pid -et?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
"echo $$" ?
- A hozzászóláshoz be kell jelentkezni
Bocs attól függ hogyan oldod meg ez az aktuális folyamat "shell" azonosítóját adja vissza!
Ez meg a script ből indított legutolsó folyamat azonosítóját:
gabi@xxx2:~$ md5sum /dev/zero &
[1] 22264
gabi@xxx2:~$ echo $!
22264
gabi@xxx2:~$ kill 22264
- A hozzászóláshoz be kell jelentkezni
Nem egeszen.
C-ben kicsit intelligensebben lehet csinalni ezeket a dolgokat, mint ami a script felhasznaloknak egyaltalan valaha jut.
En olyanra gondolok, hogy magat az alkalmazast leforkolni az exec hivas elott, a child pidjet hasznalni mint "pid", azt leirod valahova, az exec* hivasok meg arrol szolnak (vagyis, van olyan, ami arrol szol), hogy pidvaltas nelkul inditsunk alkalmazast.
Valojaban te a child process PID-jet fogod tudni (peldaul ugy, hogy egy FIFO-n elkuldi neked), de ez teged egy cseppet sem kell, hogy zavarjon, mivel ezen a PID-en nehany pillanattal kesobb mar a keresett alkalmazas fog futni.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Jelenleg, egy már előkészített, nevesített screen session -ben indítom el egy "külső" (nem a screenben futó) shell scriptből, az ffserver indítása pl. így fest:
/usr/bin/screen -x webcam -p 1 -X eval "stuff \"ffserver -f ffserver.conf\015\""
A webcam screen session, 1 ablakában elindítja a megfelelő konfigurációs fájlal az ffserver -t.
Attól tartok ezt már csak ps axu -ból lehet ki greppelni.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
ezt nem így kell inkább ?
#!/bin/sh
export WEBCAM_DEVICE=/dev/video0
...
exit 0
nálam így van, és működik.
- A hozzászóláshoz be kell jelentkezni
Kicsit elmaradtam a referálással, bocs.
Nálam is így van, és a screen session összes "ablaka" látja és használja.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni