Portál AbcLinuxu, 13. května 2025 03:49

Dotaz: renice procesu, který teprve bude spuštěn

18.1.2005 16:35 espinosa@centrum.cz
renice procesu, který teprve bude spuštěn
Přečteno: 355×
Odpovědět | Admin
O co mi přesně jde. Měl jsem trhaný zvuk u Counter-Strike přes cedegu (winex). Na stránkách jsem se dočetl, že mám nastavit prioritu procesu 'wineserver' na +19 ..a zabralo to!

pozn: Jestli tomu správně rozumím, tak ji vlastně SNIŽUJU a to hodně.

V současnosti to musím dělat tak, že po spuštění hry přeskočím Ctrl+Alt+F1 do testové konzole, nastavím prioritu a přepnu se zpět do hry. Ale to není moc praktické.

Chtěl jsem si napsat jednoduchý wraper skript na spouštění CS. Jenže je tu problém - wineserver je spuštěn až po spuštění cedega hl.exe -game cstrike ...atd. Takže před hrou neznám PID procesu, který bude mít wineserver, a po spuštění hry ..no to už je pozdě ..to už mám dohráno :-)

Potřeboval bych něco na způsob rozdělení procesu (fork) přičemž část by byla vlastní spuštěná hra a část by se spožděním zavolala nastavení priority. Jde to napsat v shellovém skriptu?

Nebo máte někdo lepší nápad?

Napsat wrapper okolo wineserveru?

Trochu se mi pletou příkazy na změnu priority procesu. Jaký je stručně rozdíl mezi nice, renice a snice?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Max avatar 18.1.2005 17:28 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: renice procesu, který teprve bude spuštěn
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mno, me Loki instalator vytvoril sam par spoustecich scriptu, ktere mj. maji v sobe nastaveni priority spousteneho programu, tady vam predlozim vypis ze scriptu pro hru fallout2 :
#!/bin/sh

GAME_BINARY="fallout2.exe"
SUBDIR="."
WINE_NAMES="cedega winex3 wine winex cvswinex"

#----------------------------------------
script=$0
count=0

while [ -L "$script" ]  
do
    script=`perl -e "print readlink(\"$script\"), \"\n\""`
    count=`expr $count + 1`

    if [ $count -gt 100 ]  
    then
       	echo "Too many symbolic links"
       	exit 1
    fi
done

GAME_DIR=`dirname $script`

if [ -z "$WINE_EXEC" ]
then
	WINE_EXEC=`type -p $WINE_NAMES | head -1 `
fi


if [ -e "$WINE_EXEC" ]
then
	cd $GAME_DIR
	cd $SUBDIR
	$WINE_EXEC $GAME_BINARY $* &
	sleep 2 &&
	renice 1 -p `pgrep wineserver`
else 
	echo "Wine(X) not in your PATH"
	exit 1
fi
Muzete si ho prizpusobit k vlastnim potrebam ;-). Doufam, ze jsem vas spravne pochopil :-/
Zdar Max
Měl jsem sen ... :(
18.1.2005 17:31 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: renice procesu, který teprve bude spuštěn
Odpovědět | | Sbalit | Link | Blokovat | Admin
nice spouští daný program s danou hodnotou nice; renice a snice mění nice běžících procesů, liší se hlavně způsobem zadávání, jakých procesů.

Pokud to nejde zařídit tak, aby se wineserver spustil samostatně (a rovnou s danou hodnotou nice), tak bych kolem něj napsal wrapper:
int
main(int argc, char *argv[])
{
  nice(19);
  execv("/.../wineserver", argv);
}
Dodatečné hledání a renicování procesu je IMHO metoda náchylná k chybám.
18.1.2005 17:31 MOJE
Rozbalit Rozbalit vše Re: renice procesu, který teprve bude spuštěn
Odpovědět | | Sbalit | Link | Blokovat | Admin
renice 19 $(pidof wineserver)

na rozdily mezi nice, renice, snice je dobre pouzit manual.
19.1.2005 17:17 Espinosa | skóre: 24 | blog: Espblog | London
Rozbalit Rozbalit vše Re: renice procesu, který teprve bude spuštěn
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky všem! Takhle nakonec vypadá můj skript:
#!/bin/sh
sudo /usr/bin/set_cedega
cedega $* &
sleep 2 &&
renice 19 -p `pgrep wineserver`
.. a funguje to. Nicméně wrapper okolo wineserveru by možná byl lepší, a a kdyby Wine/Cedega zavedla jako volitelné nastavení prioritu procesů, bylo by to ještě lepší..
19.1.2005 19:05 MOJE
Rozbalit Rozbalit vše Re: renice procesu, který teprve bude spuštěn
wrapper to jako neco jako tohle ?
mv wineserver wineserver.bin
echo "nice -n 19 wineserver.bin $*" >wineserver
chmod +x wineserver

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.