Sziasztok, adott a kovetkezo szkript:
#!/bin/sh
exec smplayer.real "$@" &
while [ 1 ]
do
exec xscreensaver-command -deactivate
sleep 10
done
Itt azt szeretnem elerni, hogy az smplayer induljon el majd minden 10 masodpercben fusson le a screensaver-t leallito parancs. Ezt sikerult is elerjem csak az a gond, hogy ha az smplayer leall attol meg a while ciklus megy tovabb.
Hogy tudnam azt megcsinalni, hogy ha kilepek az smplayerbol a whilebol is lepjen ki a script?
Elore is koszonom.
- 2364 megtekintés
Hozzászólások
Késő esti ötlet...
Szerezd meg a player PID-jét, és amíg látod a processzek között, addig menjen a while...
--
Debian Linux rulez... :D
- A hozzászóláshoz be kell jelentkezni
+1
while [ `pidof smplayer` ]
- A hozzászóláshoz be kell jelentkezni
"Hogy tudnam azt megcsinalni, hogy ha kilepek az smplayerbol a whilebol is lepjen ki a script?"
eltárolod az smplayer pid-jét, és a ciklust leállítod, ha nincs olyan pid.
- A hozzászóláshoz be kell jelentkezni
Szerintem nem kellenek az exec-ek.
Az smplayer elindítása után mentsd el a PID-jét (a
$!
változó az utolsó elindított program PID-jét tartalmazza), majd a cikluson belül egy
ps -A | grep -q $smplayerpid
után a visszatérési értéktől függően (
$@
) lépj ki.
szerk.: Én lettem az utolsó...
A gmplayer tud ilyet alapból, csodálkoznék ha az smplayer nem tudná.
http://img155.imageshack.us/img155/5237/25661205.png
- A hozzászóláshoz be kell jelentkezni
Ha már elegánskodunk, akkor pgrep.
- A hozzászóláshoz be kell jelentkezni
Minek. [ -d /proc/$pid ].
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Tud csak epp nem mukodik.
- A hozzászóláshoz be kell jelentkezni
Nem lenne egyszerubb az smplayer preferencesben bekapcsolni, hogy tiltsa le a screensavert?
--
|8]
- A hozzászóláshoz be kell jelentkezni
Pont ez a baj, hogy az nem mukodik.
- A hozzászóláshoz be kell jelentkezni
Ezesetben szerintem erdemesebb lenne kideriteni, hogy vajh' miert, mint korbehakolni. De izlesek es pofonok :P
--
|8]
- A hozzászóláshoz be kell jelentkezni
Nem biztos, hogy tud annyira C-ul.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Akkor ez egy kivalo alkalom, hogy megtanuljon. :P
Es nem is feltetlenul kell hozza C tudas. Csak azt kell megnezni, hogy mit probal smplayer csinalni, screensaver kikapcsolas cimen, es megnezni az miert nem megy (pl milyen hibauzenetet ad, vagy valami hasonlo). Ez alapjan mar lehet bugreportot irni, es valaki, aki jobban tud C-ul, majd ugyesen megoldja.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Gondolom nem akar 2 evet varni a filmnezessel.
----------------------
while (!sleep) sheep++;
- A hozzászóláshoz be kell jelentkezni
Vagy a wontfix worksforme -re.
-
Debian Squeeze
- A hozzászóláshoz be kell jelentkezni
Lehet. Viszont ha senki nem jelenti be, soha nem is lesz kijavitva. Meg lehet csinalni azt is, hogy raszan 10 percet, es kutat egy picit, meg bejelenti, es aztan keres workaroundot.
Szerintem ez sokkal eredmenyesebb, mint eleve workaroundot keresni - mert akkor az idok vegezeteig bennmarad a bug.
Az "aaa, nem jelentem, ugyis leszarjak, vagy lassan lesz meg, vagy megflamelnek" hozzaallas a leheto legrosszabb amit el lehet kepzelni. Mert mindenki csak rosszul jar vele.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Az a gond, hogy nem mindenki ert is annyira gephez, hogy legalabb korulbelul meg tudja nezni, mi a gond. Especiel mondjuk en se tudnam, hol kezdjem debugolni az smplayer konktra xscreensaver problemat, pedig hasonlo gondom nekem is van.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Step 1) Megfog forras
Step 2) grep -ri screensaver
Step 3) ???
Step 4) PROFIT!
Magyarul megnezed hol hivatkozik screensaverre, ehhez nem kell C-ul erteni picit se. Ezutan megnezed hogy minek tunik egy-egy hivatkozas: akar-e futtatni valamit, vagy kiszol DBUSon vagy akarmi? Es ha van valami ertelmes elkepzeles, hogy mit akarna csinalni, akkor lefuttatja az ember kezzel, es megnezi mi tortenik.
Ennyi. Esetleg lehet stracelni, es abban greppelni screensaverre, akkor meg forrast sem kell hajkuraszni.
Ha nem talal ilyet, akkor is lehet ertelmes bugreportot irni, hogy kipippantottam, de megis elojon a screensaver. Ilyen meg ilyen screensavert hasznalok, ilyen distroval, stb. Legfeljebb leszarjak, vagy visszakerdeznek, hogy "es ha ezt futtatod mi torpenik?". Veszteni nem veszt vele az ember, legfeljebb kb 10 percet.
Es utana mar lehet workaroundolni, mert az ember megtette FLOSS useri kotelesseget, reportolta a bugot.
Nem kell hudenagy debugolasba belefogni, mert az tenyleg nem a user feladata. Nem is kell ertsen hozza. Az en kinom az, hogy sokan meg se probaljak, hanem helybol workaroundolni akarjak, mondvan a fejleszto ugyis tenni fog ra magasrol (pedig kozelsem biztos, hogy igy tenne...), es ugyis 1 ev mire meglesz (pedig az is lehet, hogy van mar ra patche).
--
|8]
- A hozzászóláshoz be kell jelentkezni
(Egyebkent, bar nem biztos, hogy relevans, de esetleg: http://luisbg.blogalia.com//historias/69989)
El tudom kepzelni, hogy valami hasonlo megoldas kell smplayernek is, mert megvaltozott alatta a gnome-screensaver. Feltetelezve, hogy gnome van. Es hogy tenyleg megvaltozott a blogban leirtak szerint.
--
|8]
- A hozzászóláshoz be kell jelentkezni
Koszi, kiprobalom mikor lesz egy kis idom ra.
Tenyleg az a legtobbszor a problema, hogy az ember nem tudja pontosan hol is keresse a hibat.
- A hozzászóláshoz be kell jelentkezni
xscreensaver-command -exit
smplayer.real "$@"
xscreensaver -no-splash &
- A hozzászóláshoz be kell jelentkezni
esetleg egy ilyen szosszenet jut meg eszembe...
#!/bin/sh
exec smplayer.real "$@" &
smplayer_pid=$!
while [ -d /proc/${smplayer_pid} ]; do
exec xscreensaver-command -deactivate
sleep 10
done
- A hozzászóláshoz be kell jelentkezni
# help exec
...
Replace the shell with the given command.
...
Szerintem az a while soha nem fog lefutni.
De lehet tévedek.
- A hozzászóláshoz be kell jelentkezni
Hat nekem FreeBSD alatt csont nelkul megmaradt a szulo shell. Lehet, hogy valahogy azt a &-et felismeri a shell (nativ, es bash alatt is ugyanugy mukodott)
- A hozzászóláshoz be kell jelentkezni
Valóban, ha odaírod az &-t, akkor megmarad az eredeti shell.
Ha nem, akkor úgy látom az történik, aminek kell.
Megnéztem strace-el, ha írsz &-t, akkor clone()-t hív, ha nem, akkor execve()-t.
Köszi most már ezt is tudom :)
- A hozzászóláshoz be kell jelentkezni