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

Název: mythTv pm-suspend [vyřešeno]
Přispěvatel: 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
Kód: [Vybrat]
#!/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:
Kód: [Vybrat]
#!/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:
Kód: [Vybrat]
#!/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:
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
# /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.
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 23 Května 2012, 15:48:57
Zatím nikdo? :)
tak jsem udělal malé úpravy, místo pm-suspend jsem upravil uspávání
Kód: [Vybrat]
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í.
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 23 Května 2012, 17:33:14
moc celou vec nechapu, ale poradim ti magickou formulku:

Kód: [Vybrat]
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
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 23 Května 2012, 21:06:01
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 
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
#!/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ší  ;)
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 24 Května 2012, 16:29:21
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.
Kód: [Vybrat]
+ 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
Kód: [Vybrat]
+ 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
Kód: [Vybrat]
+ 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
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 24 Května 2012, 18:18:59
./probuzeni.sh: 1: ~/autostartMythTv.sh: not found


^^ ale dyk je to tam napsany .. dej tam plnou cestu nebo to vyres jinak, treba promennou
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 24 Května 2012, 22:02:21
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
Kód: [Vybrat]
#!/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?
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 24 Května 2012, 22:18:01
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
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 24 Května 2012, 22:25:32
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 ..
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 24 Května 2012, 22:26:14
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ě.
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 24 Května 2012, 22:27:58
ad.root) ano, to je taky pravda ... taky overit .. musi to mit logiku

DISPLAY=:0 su $user -c $command
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 24 Května 2012, 23:00:00
Citace
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
#!/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 :)
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 25 Května 2012, 01:16:40
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
Kód: [Vybrat]
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
Kód: [Vybrat]
irw Následně jsem si chtěl udělat konfigurační záznam tlačítek
Kód: [Vybrat]
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
Kód: [Vybrat]
irrecord: could not init hardware (lircd running ? --> close it, check permissions) žádný kill nepomohl až nakonec
Kód: [Vybrat]
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
Kód: [Vybrat]
begin
program   = mythtv
button = Play
repeat = 3
config = Play
end
což funguje
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 25 Května 2012, 08:45:36
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.
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 25 Května 2012, 15:26:07
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í
Kód: [Vybrat]
+ 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
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
+ 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?
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 25 Května 2012, 15:55:07
ach jo .. mas to spatne .. je to tezky s tebou

1) nemas escapovane mezery pro su -c

Kód: [Vybrat]
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
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 25 Května 2012, 16:20:45
Citace
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?
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 25 Května 2012, 16:38:08
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?
Kód: [Vybrat]
#!/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
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 25 Května 2012, 17:26:45
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í.
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 29 Května 2012, 19:42:27
Citace
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.
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 29 Května 2012, 23:05:13
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.
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 30 Května 2012, 10:03:18
tak budu zatím čekat  ;) díky
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 03 Června 2012, 21:05:44
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:

Citace
su cuore -c 'DISPLAY=:0 /home/cuore/startMythTV.sh &'

Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 03 Června 2012, 22:20:39
myslíš, že to bude jen tahle prkotina? otestuju a dám feedback  ;)
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 04 Června 2012, 13:27:51
Tak i tohle nefunguje, ale nějaké změny jsou
log sleep
Kód: [Vybrat]
+ 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
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 04 Června 2012, 21:51:00
Log ukazuje, že příkaz neměl oprávnění, takže musíš vyplnit ještě jednu proměnnou:

Kód: [Vybrat]
export DISPLAY=:0
export XAUTHORITY="/home/cuore/.Xauthority"
su cuore -c "/home/cuore/startMythTV.sh &"
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 05 Června 2012, 12:42:37
Tak bohužel pořád bez výsledku. Stejná hláška v logu jako předtím. Když dám
Kód: [Vybrat]
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í.
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 05 Června 2012, 12:47:03
xauth add $display . `mcookie` & ### prida X autoritu pro session
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 05 Června 2012, 13:14:14
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.
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 05 Června 2012, 17:32:55
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
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
+ 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
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 05 Června 2012, 19:02:39
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
Kód: [Vybrat]
/home/cuore/startMythTV.sh a sript v /home/cuore je takhle upraven
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
+ 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
Kód: [Vybrat]
+ 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ý
Název: Re:mythTv pm-suspend
Přispěvatel: GdH 05 Června 2012, 20:00:48
Čéč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.
Název: Re:mythTv pm-suspend
Přispěvatel: ntz_reloaded 06 Června 2012, 02:50:32
xauth add $DISPLAY . `mcookie` &
export DISPLAY=:0

uff ,,, dyk ty nejdriz pouzijes a pak inicializujes
Název: Re:mythTv pm-suspend
Přispěvatel: Cuore 06 Června 2012, 15:45:23
Citace
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í
Kód: [Vybrat]
xauth add $DISPLAY . `mcookie` &No a pak tady
Citace
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.