Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Cuore 21 Května 2012, 19:13:25
-
Ahoj,
potřebuji radu k dořešení scriptu. Situace je následovná v ubuntu LL 10.04 jsem nainstaloval mythtv. Jenže nenašel jsem možnost uspání do paměti (pouze vypnout a reset). Tak jsem napsal scriptík
#!/bin/sh
sleep 10;echo 'probíhá spouštění mythTv' &
notify-send 'probíhá spouštění MythTv' 'mythfrontend startuje' &
cd /usr/share/mythtv
sleep 2;until ./mythfrontend.sh
do
sleep 20s
done
echo 'ukončuji mythfrontend' &
notify-send 'ukončuji mythfrontend' 'volám script sleep' &
sleep 2;~/sleep.sh
exec
tím po zvolení možnosti ukončit systém uspím. No ale jak už to bývá nastal problém po probuzení, kde se tento script nespustí, protože systém háže bobek na aplikace po spuštění. Tak jsem do /etc/pm/sleep.d vložil další script, který by měl opětovné spouštění zabezpečit:
#!/bin/sh
# tento script spouští po probuzení další script v
# home/cuore
case "$1" in
resume)
cd /home/cuore
sleep 5;./probuzeni.sh
;;
esac
script probuzeni:
#!/bin/sh
echo 'probouzím mythTv' & notify-send 'probouzím MythTv' 'volám script autostartMythTv' &
sleep 2;~/autostartMythTv.sh
exec
hurá, mythtv naběhne, ale!! pokud znovu ukončím mythtv, tak ve scriptu sleep se už neprovede pm-suspend a systém zůstane běžet.
sleep:
#!/bin/sh
echo 'probíhá uspávání do paměti' &
notify-send 'probíhá uspávání do paměti' 'ukončuji aplikace' &
sleep 10;sudo pm-suspend
exit
Jelikož jsem v tomhle scriptování "batole" poprosil bych někoho znalejšího o radu co mám špatně. Co jsem vysledoval, tak se scripty po ukončení nezavřou, ale zůstávají vyset, přitom jsem předpokládal, že když probouzecí script zavolá autostartMythTv, tak se následně zavře. To samé platí o sleep, který zůstane nahozený i po opětovném probuzení. Je snad problém v tomhle? nebo mě ještě napadla spojitost se sudoers, kde může být konflikt s právy a proto se podruhé pm.suspend neprovede. Nevím tápu.....
Ještě přikládám sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%cuore ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend
%cuore ALL=(ALL) NOPASSWD: /usr/sbin/pm-hibernate
%cuore ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend-hybrid
%mythtv ALL=NOPASSWD: /usr/sbin/pm-suspend
předem děkuji za pomoc a osvětu, sedím u toho už pomalu 14 dní a popravdě, je to řešení jednoho problému za druhým počínaje Lirc a konec zatím v nedohlednu.
-
Zatím nikdo? :)
tak jsem udělal malé úpravy, místo pm-suspend jsem upravil uspávání
echo 'probíhá uspávání do paměti' &
notify-send -i /home/cuore/mythtv.png 'probíhá uspávání do paměti' 'ukončuji aplikace' &
sleep 10; dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
exit 0
tím jsem mohl smazat zásahy do sudoers a taky podle mě se vyřešil problém s neuspáním systému viz. výše. No ale objevil se nový problém a to nefunkčnost scriptu po probuzení, na který je odkaz v /etc/pm/sleep.d. Zatím mně z neznámých důvodů se neprovede, ikdyž předtím to jelo. Budu googlit dokud něco nenajdu, nebo někdo tady neporadí.
-
moc celou vec nechapu, ale poradim ti magickou formulku:
set -x;
exec 2>/var/tmp/`basename $0`.log;
tohle dej na druhy a treti radek, hned za #!/bin/bash a potom prohledni soubory s logy ve /var/tmp
-
Pokud jsem to napsal nesrozumitelně, tak se omlouvám ::) Takže od začátku, udělal jsem si radost v podobě HTPC. Volba padla na mythtv běžící pod LL 10.04. Teď můj problém, v nastavení mythtv jde nastavit pouze možnosti UKONČIT, UKONČIT A RESTARTOVAT, UKONČIT A VYPNOUT. Takže pokud chci počítač uspat, musím dát možnost ukončit. Pak odložit dálkové ovládání (protože se mi nedaří rozchodit lirc pod systémem) vzít bezdrátovou klávesnici a uspat počítač. Ten probudím dálkovým ovladačem tlačítkem POWER, opět klávesnici do ruky a spustit mythfrontend, protože aplikace po spuštění nereagují na probuzení. Proto jsem tohle vyřešil spouštěním mythfrontendu scriptem
#!/bin/sh
cd /usr/share/mythtv
sleep 2; until ./mythfrontend.sh
do
sleep 20s
done
sleep 2;~/sleep.sh
exec
Ten mi zajistí, že když zvolím možnost ukončit mythfrontend, tak se počítač uspí pomocí scriptu sleep.sh
#!/bin/sh
sleep 10; dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
exit 0
u předchozí verze, kde jsem požil pm-suspend byl problém, že se uspání provelo jen jednou. Po probuzení mi vše naběhlo díky scriptu v /etc/pm/sleep.d ale pokud jsem mythfrontend znovu ukončil, tak vše doběhlo až do scriptu sleep.sh, který vypsal jen echa ale už neprovel sudo pm-suspend. Proto jsem ho upravil na uspávání pomocí dbus-send....viz. code výš. No ale zase mám problém, že jakmile se počítač uspí a následně probudí, tak scrip v /etc/pm/sleep.d nezareaguje (jako by nepoznal probuzení) a mythfrontend se nezpustí. Snad je to srozumitelnější ;)
-
Ta magická formulka je úžasná ;D už vidím co se děje, ale je mi to k ničemu, když netuším co s tím.
+ notif 2 -i /home/cuore/mythtv.png probouzím MythTv volám script autostartMythTv
libnotify-Message: Unable to get session bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
** (notify-send:6906): CRITICAL **: dbus_g_proxy_connect_signal: assertion `DBUS_IS_G_PROXY (proxy)' failed
** (notify-send:6906): CRITICAL **: dbus_g_proxy_connect_signal: assertion `DBUS_IS_G_PROXY (proxy)' failed
** (notify-send:6906): CRITICAL **: dbus_g_proxy_call: assertion `DBUS_IS_G_PROXY (proxy)' failed
libnotify-Message: Unable to get session bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
** (notify-send:6906): CRITICAL **: dbus_g_proxy_disconnect_signal: assertion `DBUS_IS_G_PROXY (proxy)' failed
** (notify-send:6906): CRITICAL **: dbus_g_proxy_disconnect_signal: assertion `DBUS_IS_G_PROXY (proxy)' failed
+ ~/autostartMythTv.sh
./probuzeni.sh: 1: ~/autostartMythTv.sh: not found
+ exec
z nějakého důvodu hází chyby notify-send co je jen infobublina, takže na funkci by neměla mít vliv. A podstatný je konec logu, kde píše, že nenalezl scripty probuzeni a autostartMythTv. Co nechápu. Pokud uspím počítač pomocí sudo pm.suspend, tak vše proběhne v pořádku.
log probuzeni
+ slee 2
bouzím mythTv
+ notify-send -i /home/cuore/mythtv.png probouzím MythTv volám script autostartMythTv
+ /home/cuore/autostartMythTv.sh
+ basename /home/cuore/autostartMythTv.sh
+ exec
log autostartMythTv
+ sleep 10
+ cd /usr/share/mythtv
echo probíhá spouštění mythTv+ sleep 2
+ notify-send -i /home/cuore/mythtv.png probíhá spouštění MythTv mythfrontend startuje
+ ./mythfrontend.sh
může mi to někdo osvětlit?
děkuji
-
./probuzeni.sh: 1: ~/autostartMythTv.sh: not found
^^ ale dyk je to tam napsany .. dej tam plnou cestu nebo to vyres jinak, treba promennou
-
to vidím, ale nechápu důvod proč to nenalezne? Tohle mě zajímá, proč když se pc uspí jedním způsobem, tak při probuzení vše funguje jak má, ale na podruhé už se neuspí a zase, když se bez problémů uspává, tak má problém s nalezením souboru v domovském adresáři po probuzení.... prostě napalici
A plnou cestou máš na mysli co? tohle jsem předpokládal, že je vyjádření plné cesty cd /home/cuore/probuzeni.sh a tak to přece mám
#!/bin/sh
# tento script spouští po probuzení další script v
# home/cuore
case "$1" in
resume)
cd /home/cuore
sleep 5;./probuzeni.sh
;;
esac
nebo se pletu?
a je problém až v tom probuzeni.sh, kde je cesta vyjádřena symbolicky?
No a do třetice, jak rozchodit to netify-send?
-
jo aha .. uz to chapu ... ono se to samozrejme nespoji s tou X session .. musis tomu dat na zacatku kazdeho skriptu promennou DISPLAY .. tzn tam musi byt neco jako
export DISPLAY=:0 ### jak se jmenuje tvuj displej zjistis pomoci echa v Xkach
-
taky bych to asi prefixoval nejakym sleepem .. nijak presne jsem nezkoumal jak to pracuje, ale ty pm skripty se provadi hned po probuzeni a tam patrne dochazi k tomu, ze ta X session jeste stoji kdyz se tam vykonavaj ty prikazy.
edit: ted jsem tam jeden sleep zahledl .. zkontrolovat jestli vsechno sedi ..
-
Co máš za problém s tím lirc? To by asi bylo rozumnější vyřešit.
Nicméně, jedna z věcí, kterou si musíš uvědomit je ta, že ten resume skript spouští root a tudíž i tvůj skript na spuštění i samotné MythTv se spustí pod rootem. A ten nemá definovaný display a tak grafické aplikace takto jednoduše spouštět nejde. I když mu display nastavíš, stejně to poběží pod rootem a to je špatně.
-
ad.root) ano, to je taky pravda ... taky overit .. musi to mit logiku
DISPLAY=:0 su $user -c $command
-
#!/bin/sh
cd /usr/share/mythtv
sleep 2; until ./mythfrontend.sh
do
sleep 20s
done
sleep 2;~/sleep.sh
exec
Já bych to celé napsal cca takto:
startMythTV.sh
#!/bin/sh
/usr/share/mythtv/mythfrontend.sh # předpokládám, že se ten frontend nespouští na pozadí - až mythtv ukončíš, provede se teprve další příkaz
dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
00resumeMythTV.sh
#!/bin/sh
case "$1" in
resume)
DISPLAY=:0 su -c '/home/cuore/startMythTV.sh' cuore
;;
esac
btw ty nuly na začátku názvu resume skriptu zajišťují, že se bude spouštět až mezi posledními, po systémových záležitostech.
EDIT: jen kosmetická úprava :)
-
jak budu doma u počítače, tak to otestuju. Takže asi kolem oběda. S tím Lirc to je zapeklité, htpc je ASRock 330 ION HT BD a ten má integrovaný IR na desce. První problém je, že
egrep "Name|Handlers" /proc/bus/input/devices
nic nevypíše, takže nezjistím event ovladače. Tím jsem návod na wiki mohl vypustit. No každopádně od výrobce jsem si stáhnul deb balíček pro IR, kde měli verzi pro LL 10.04 jádro xxxx25. Proto byla volba systému předem daná. A podle jejich návodu se ovladač rozchodí, že reaguje terminál na irw
Následně jsem si chtěl udělat konfigurační záznam tlačítek irrecord --driver=devinput --device=/dev/input/eventX /home/cuore/ASRock-lirc.conf
, kde jsem testoval různé čísla event, ale i když se to rozjelo tak v místě kde máš držet tlačítko, aby si lirc otestoval pauzy mezi signálem vše skončilo na irrecord: could not init hardware (lircd running ? --> close it, check permissions)
žádný kill nepomohl až nakonec sudo irrecord --driver=devinput/dev/input/eventX /home/cuore/ASRock-lirc.conf
se tohle rozjelo ale i tak to zase jen proběhlo bez vygenerování konfiguráku. Prvděpodobně jsem neuhod číslo event. No a systém komunikuje s dálkovým ovladačem pomocí daemonů irexec, irxevent, lircmd, které prostě nefungují :-[ V mythtv mi to nevadí, protože tam nastavuji tlačítko
begin
program = mythtv
button = Play
repeat = 3
config = Play
end
což funguje
-
Pak ti lirc zjevně funguje.. irexec a irxevent jsou démoni, kteří zajistí spouštění externích programů a posílání kláves, ale aby fungovali, musíš je nejprve spustit. Můžeš je přidat do aplikací spouštěných po přihlášení. Pak klávesy DO konfiguruješ podobně jak jsi ukázal, koukni do dokumentace.
-
Tak proto :) já myslel, že jsou to systémový deamoni a nahodí se automaticky, pokud je přítomno lirc.
Teď k tomu uspávání, takže jsem to upravil dle vašich rad a malinko modifikoval. Po zapnutí počítače se mythfrontend pěkně nahodí. V aplikacích po spuštění mám script startMythTV.sh. Jakmile mythfrontend ukončím, tak se systém pěkně uspí, jen vypíše v logu uspávání
+ notify-send -i /home/cuore/mythtv.png probíhá uspávání do paměti ukončuji aplikace
+ dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
+ exit 0
ale uspí. Po probuzení mythfrontend naběhne a notify-send funguje. Sript v etc/pm/sleep.d/00_auto_probuzeni.sh
#!/bin/sh
# tento script spouští po probuzení další script v
# home/cuore
set -x;
exec 2>/var/tmp/`basename $0`.log
echo 'probouzím mythTv'
DISPLAY=:0 su $user -c $command "notify-send -i /home/cuore/mythtv.png 'probouzím MythTv'" cuore
case "$1" in
hibernate|suspend)
;;
resume|thaw)
DISPLAY=:0 su -c '/home/cuore/startMythTV.sh' cuore
;;
*)
exit 0
;;
esac
jeho log je tady + echo probouzím mythTv
+ DISPLAY=:0 su -c notify-send -i /home/cuore/mythtv.png 'probouzím MythTv' cuore
+ DISPLAY=:0 su -c /home/cuore/startMythTV.sh cuore
+ basename /home/cuore/startMythTV.sh
+ exec
když opět ukončím mythfrontend, tak už se systém ale neuspí? Vše se tváří, že je v pořádku, log nevypisuje nic o poruše scriptu. Ten proběhne a regulérně se ukončí ale systém zůstává spuštěný. Pokud spustím uspání znovu, tak se provede. Má někdo nápad? čím to je?
-
ach jo .. mas to spatne .. je to tezky s tebou
1) nemas escapovane mezery pro su -c
DISPLAY=:0 su $user -c $command "notify-send -i /home/cuore/mythtv.png 'probouzím MythTv'" cuore
^^ tohle snad nelze brat ani k pousmani
2) taky jsem psal ze mas udelat export DISPLAY=:0 .. ten muj zapis aka DISPLAY=foo command byl jen priklad
-
DISPLAY=:0 su $user -c $command "notify-send -i /home/cuore/mythtv.png 'probouzím MythTv'" cuore
$user je právě cuore a $command je ten příkaz, ntz to napsal jako proměnné obecně, já to psal konkrétně pro tebe. Chybu to nevyhodí, protože nenastavená proměnná se interpretuje jako prázdný řetězec, takže to tam nemá žádný význam. export asi v tomto případě nemá význam, ale nic se jím nezkazí.
Ta chyba Dbus příkazu opravdu neznamená nic, power manager prostě neodpovídá, je to jeho vlastnost.
Další věcí je, že suspend skript se spouští stejný při uspávání i při probouzení, jen s jiným argumentem, takže tvé "probouzím" se bude hlásit ke slovu i při uspávání.
Rozdíl při druhém uspávání je právě v tom, že ten druhý už jsi spouštěl z roota. Momentálně neřeknu v čem je problém, zkusím se na to kdyžtak podívat večer.
Proč na konci toho jednoho skriptu spouštíš prázdný exec?
-
Promiň :-[ problém je v tom, že se to snažím dát do kupy a popravdě na nějaké hlubší poznávání bashe nemám prozatím čas. Kdyby to šlo vyřešit jinak, tak neváhám :) ale mythfrontend uspání nenabídne a peripetie s tím spojené jsem psal výše. Takže se ten proces snažím nějak zautomatizovat. 90% co se tady píše nebo vygooglím je pro mě jakožto uživatele špaňelská vesnice, tak se prosím nediv, když něco takhle hrubě po..
jo přiznávám jsem natvrdlý, tak měj ještě trochu trpělivosti a pokus se to nějak polopaticky vysvětlit? Třeba teď mi není moc jasné, kde je spojitost s tím, že mám problém s opětovným uspáním a ty mě spražíš za blbě napsaný script reagující při probuzení :D navíc když se mi zdá, že to funguje. Pokud bych vynechal notify-sent tak to bude takhle OK?
#!/bin/sh
# tento script spouští po probuzení další script v
# home/cuore
set -x;
exec 2>/var/tmp/`basename $0`.log
case "$1" in
hibernate|suspend)
;;
resume|thaw)
DISPLAY=:0 su -c '/home/cuore/startMythTV.sh' cuore
;;
*)
exit 0
;;
esac
pokud jo, tak to stějně na podruhý neuspí, takže jsem tam, kde na začátku
edit: GdH stihl reagovat, ještě než jsem dopsal odpověď. Takže je mi to trochu jasnější, každopádně jsem se utvrdil v tom, že to problém neřeší. To exec jsem se dočet v průvodci pro bash, že je to ukončení scriptu pokud v něm spustím nějaký nový, tak uvolní místo po ukončení pro tohoto potomka. Dřív se tak prý šetřila paměť. Tak jsem to asi blbě pochopil a dělá to něco jinýho? ::) tak omluva zase kopanec
edit1: jo už to mám je to pravda co jsem spal jenom se exec dá před příkaz a ne na konec ::) omluva, takže měním na exit
-
exec umí vyměnit shell, tzn. starý, ze kterého je sám spuštěný ukončí a místo něj spustí příkaz, který má jako argument, ale to vše v rámci jednoho procesu, nevytváří se tedy nový proces pro program, který spouští.
-
Rozdíl při druhém uspávání je právě v tom, že ten druhý už jsi spouštěl z roota. Momentálně neřeknu v čem je problém, zkusím se na to kdyžtak podívat večer.
Přišel si nějak na to jak to uspání vyřešit? Jen mě tak napadlo, sice prasárna, ale co přidělit účtu v sudoers ALL bez hesla a ve scriptech vše nahazovat pomocí sudo. Tím by se to chovalo jako pod rootem a mělo by to fungovat i při dalším probuzení. Je to PC k televizi, sice na internet má přístup, ale takhle bude využíváno minimálně a na přehrávání filmů je to putna.
-
No zatím jsem se k tomu pořádně nedostal, ale zajímá mě to, takže se na to podívám zcela jistě, otázkou je jen čas.. Snad to zvládnu do konce týdne.
-
tak budu zatím čekat ;) díky
-
Tak zásadní asi bude to, že pokud spouštíš cokoliv delšího v resume skriptu, musíš to spustit na pozadí, abys neblokoval další skripty. Ve tvém případě cca takto:
su cuore -c 'DISPLAY=:0 /home/cuore/startMythTV.sh &'
-
myslíš, že to bude jen tahle prkotina? otestuju a dám feedback ;)
-
Tak i tohle nefunguje, ale nějaké změny jsou
log sleep
+ echo probíhá uspávání do paměti
+ notify-send -i /home/cuore/mythtv.png probíhá uspávání do paměti ukončuji aplikace
+ sleep 5
+ dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Error org.freedesktop.UPower.GeneralError: not authorized
+ exit 0
snad to není nic neřešitelného
-
Log ukazuje, že příkaz neměl oprávnění, takže musíš vyplnit ještě jednu proměnnou:
export DISPLAY=:0
export XAUTHORITY="/home/cuore/.Xauthority"
su cuore -c "/home/cuore/startMythTV.sh &"
-
Tak bohužel pořád bez výsledku. Stejná hláška v logu jako předtím. Když dám
ls -a
tak žádnou složku .Xauthority nenajdu, což bude asi ten problém. Co jsem si ale o tom četl, tak by si ji měl systém vytvořit sám a je v ní uloženo heslo pro přístup jiných uživatelů do Xka. Takže netuším jak přinutit systém tu složku vytvořit. Ale každopádně se to asi bere ke konci...cítím to v kostech :) Tak prosím ještě strpení.
-
xauth add $display . `mcookie` & ### prida X autoritu pro session
-
A pak je ještě jedna možnost. Budeš ten tvůj skript startMythTV.sh spouštět z resume skriptu normálně bez přepínání uživatele a uživatele změníš jen pro spuštění ./mythfrontend.sh, případně i těch notifikací, co tam máš. Tak můžeš použít pm-suspend. Pak ale bude potřeba spuštět ten start skript přes sudo, pokud ho budeš chtít spustit ručně z terminálu uživatele.
-
Takže bez změn pořád se ne a ne uspat. Takhle to pro kontrolu mám v tom /etc/pm/sleep.d/00_suto_probuzeni.sh
#!/bin/sh
# tento script spouští po probuzení další script v
# home/cuore
set -x;
exec 2>/var/tmp/`basename $0`.log
case "$1" in
hibernate|suspend)
;;
resume|thaw)
xauth add $DISPLAY . `mcookie` &
export DISPLAY=:0
export XAUTHORITY="/home/cuore/.Xauthority"
su cuore -c "/home/cuore/startMythTV.sh &"
;;
*)
exit 0
;;
esac
tohle je log
+ export DISPLAY=:0
+ export XAUTHORITY=/home/cuore/.Xauthority
+ su cuore -c /home/cuore/startMythTV.sh &
+ mcookie
+ xauth add . e2849ef170a925a1b4cdc998b347b4b7
xauth: unable to generate an authority file name
+ basename /home/cuore/startMythTV.sh
+ exec
Jdu testovat tu druhou variantu
-
tak dotestováno a stejné rozpolcené pocity jako z té první varianty. Takže v /etc/pm/sleep.d je jen spouštění startMythTV.sh
/home/cuore/startMythTV.sh
a sript v /home/cuore je takhle upraven #!/bin/sh
set -x;
exec 2>/var/tmp/`basename $0`.log;
sleep 10
echo 'probíhá spouštění MythTv'
DISPLAY=:0 su cuore -c "notify-send -i /home/cuore/mythtv.png 'probíhá spouštění MythTv' 'mythfrontend startuje'"
xauth add $DISPLAY . `mcookie` &
export DISPLAY=:0
export XAUTHORITY="/home/cuore/.Xauthority"
su cuore -c "/usr/share/mythtv/mythfrontend.sh &"
echo 'ukončuji mythfrontend'
DISPLAY=:0 su cuore -c "notify-send -i /home/cuore/mythtv.png 'ukončuji mythfrontend' 'volám sleep'"
xauth add $DISPLAY . `mcookie` &
export DISPLAY=:0
export XAUTHORITY="/home/cuore/.Xauthority"
su cuore -c "sudo pm-suspend &"
exit 0
jeho log tady + sleep 10
+ echo probíhá spouštění MythTv
+ DISPLAY=:0 su cuore -c notify-send -i /home/cuore/mythtv.png 'probíhá spouštění MythTv' 'mythfrontend startuje'
+ export DISPLAY=:0
+ export XAUTHORITY=/home/cuore/.Xauthority
+ su cuore -c /usr/share/mythtv/mythfrontend.sh &
+ mcookie
+ xauth add . 7bffd2ed8f8b9abc39fefe339af6dbe3
xauth: unable to generate an authority file name
+ echo ukončuji mythfrontend
+ DISPLAY=:0 su cuore -c notify-send -i /home/cuore/mythtv.png 'ukončuji mythfrontend' 'volám sleep'
+ export DISPLAY=:0
+ export XAUTHORITY=/home/cuore/.Xauthority
+ su cuore -c sudo pm-suspend &
+ mcookie
+ xauth add :0 . 448040027fb6edba1fe13de04cbebab6
+ exit 0
sudo: no tty present and no askpass program specified
Píše nějakou chybu u sudo, tak jsem to dal bez něj a stejně nic. Když jsem ho nahradil su a dal spustit v terminálu aby to proběhlo stejně se jen otevřel a ihned zavřel bez uspání. Teď jak se to chová. Po probuzení se mythfrontend spustí ale script pokračuje dál tzn. že nečeká až mythfrontend ukončím a jde uspávat počítač. Nicméně ten se stejně neuspí. Když jsem ho odkázal na script sleep.sh, tak ten stále vypisuje + echo probíhá uspávání do paměti
+ notify-send -i /home/cuore/mythtv.png probíhá uspávání do paměti ukončuji aplikace
+ sleep 5
+ dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Error org.freedesktop.UPower.GeneralError: not authorized
+ exit 0
Teď se mi zdá schůdnější ta první varianta, ale když se rozchodí jakákoliv, budu vděčný
-
Čéče ty to mícháš jedno přes druhé... Jako uživatel cuore musíš v té druhé variantě spouštět ten skript co startuje vlastní MythTV frontend. Protože ten tvůj startovací skript, který ten frontend spouští, běží pod rootem (protože resume skript spouští root), bude pm-suspend fungovat bez sudo a hesla, ale spouštět pod rootem MythTV ideální nebude, proto přepneš uživatele pomocí su.
Xauthority se generuje pro konkrétní sezení a tak je potřeba ten příkaz co psal ntz nechat spouštět nejlépe při přihlášení do systému. Ale o tuhle problematiku jsem se moc nezajímal.
-
xauth add $DISPLAY . `mcookie` &
export DISPLAY=:0
uff ,,, dyk ty nejdriz pouzijes a pak inicializujes
-
Budeš ten tvůj skript startMythTV.sh spouštět z resume skriptu normálně bez přepínání uživatele a uživatele změníš jen pro spuštění ./mythfrontend.sh, případně i těch notifikací, co tam máš
Tak tohle jsem pochopil, tak že resume script je ten v /etc/pm/sleep.d a tam spustím startMythTV.sh klasicky jako root. A pak v tom startMythTV.sh spustím jako cuore mythfrontend.sh pomocí xauth add $DISPLAY . `mcookie` &
No a pak tady Jako uživatel cuore musíš v té druhé variantě spouštět ten skript co startuje vlastní MythTV frontend. Protože ten tvůj startovací skript, který ten frontend spouští, běží pod rootem.....
píšeš podle mě opak
Hmm a už jsem z toho totálně vedle :-[ přiznávám, že netuším co se kolem mě děje :D. No ale to je vám z příspěvků známo. Snad se v tom někdy vyznám a budu vědět o čem se bavíme. Teď to uzavírám, protože to je nad moje chápání a nechci vás svou neznalostí bashe decimovat. Pokud to chcete i nadále nějak se mnou dořešit, budu vdečný, ale i takhle moc děkuji, že jsem se zase něcemu nevému přiučil.