Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1

 Użytkownik
 Użytkownik
	witam,
moim celem jest napisanie skryptu, który podmieni plik xorg.conf, a następnie zresetuje serwer Xów. Wygląda prosto, ale mam jeden problem. Kiedy wywołuję ten skrypt spod gnome-terminala zamiast restartu Xów dostaję czarny ekran(śmierci ;)). Dopiero uruchomienie skryptu np na tty1, albo ręczne zresetowanie Xów poprzez wywołanie "/etc/init.d/gdm3 restart" naprawia ten stan. 
Podejrzewam, że problem tkwi w tym, że wywołując skrypt spod Xów chłopak zabija też siebie jako, że jest dzieckiem sesji w której został wywołany. Dobrze kombinuję?
Macie jakiś pomysł na rozwiązanie tego problemu? 
Zawartośc skryptu:
#!/bin/bash
normal="/etc/X11/xorg.conf.backup"
twin="/etc/X11/xorg.conf.twin"
rotated="/etc/X11/xorg.conf.twin.rotated"
xorg="/etc/X11/xorg.conf"
if [ "$1" = "normal" ]
then
    echo -n `cp $normal $xorg`
    echo -n `/etc/init.d/gdm3 restart`
    exit
fi
if [ "$1" = "twin" ]
then
    echo -n `cp $twin $xorg`
    echo -n `/etc/init.d/gdm3 restart`
    exit
fi
if [ "$1" = "rotated" ]
then
    echo -n `cp $rotated $xorg`
    echo -n `/etc/init.d/gdm3 restart`
    exit
fi
if [ "$1" = "--help" ] || [ "$1" = "-h" ]
then
    echo "Skrypt podmienia pliki xorg.conf i resetuje Xy";
    echo "";
    echo "Opcje:";
    echo -e "normal \t włącza jedynie monitor laptopa";
    echo -e "twin \t ustawia oba monitory jako aktywne";
    echo -e "rotated \t ustawia oba monitory jako aktywne i obraca hpeka o 90 stopni"
    exit
fiOffline






 Admin łajza
 Admin łajza
	







podpowłoka?
azhag@laptop /tmp % cat skrypt.sh
#!/bin/sh
echo 'jestem wesołym echem'
( sleep 10; echo 'nikt nie spodziewa się hiszpańkiej inkwizycji!' ) &
sleep 5
echo 'jestem smutnym echem, bo zanim się wykonam ktoś zabije skrypt :('
azhag@laptop /tmp % sh skrypt.sh &
[1] 23428
azhag@laptop /tmp % jestem wesołym echem 
azhag@laptop /tmp % kill 23428
[1]  + 23428 terminated  sh skrypt.sh                                                                                                            
azhag@laptop /tmp % nikt nie spodziewa się hiszpańkiej inkwizycji!Offline

 Użytkownik
 Użytkownik
	No, rzeczywiście! Dzięki azhag, ja tu już się głowiłem jak tu zrobić z tego wywołania proces zombie :D
Mam jeszcze jedno pytanie - tego mojego skryptu nie mogę uruchomić jako zwykły użytkownik ze względu na komendę echo -n `/etc/init.d/gdm3 restart`, która wymaga praw administrator. Natomiast ctrl+alt+bacspace resetują sesję bez pytania o hasło su. Nasuwa się pytanie - czym zastąpić `/etc/init.d/gdm3 restart` aby zwykły użytkownik mógł wywołać skrypt?
Offline






 Admin łajza
 Admin łajza
	







Zolnierzu napisał(-a):
Nasuwa się pytanie - czym zastąpić `/etc/init.d/gdm3 restart` aby zwykły użytkownik mógł wywołać skrypt?
sudo
Offline




 Użyszkodnik
 Użyszkodnik
	Nawiasem mówiąc, zamiast tej ifologii zastosuj konstrukcję case (być może w duecie z getopt(s)). To nie perl ;) .
Offline







 Podobno człowiek...;)
 Podobno człowiek...;)
	








Czy chodziło Ci o coś takiego?
#!/bin/bash
function ustaw_jack
{
echo "ustawiam konfig na jacka";
sudo rm /etc/asound.conf 
sudo cp /home/asound.jack /etc/asound.conf;
echo "jack w asound ustawiony";
#restart alsasound;
}
function ustaw_dmix
{
echo "ustawiam konfig na dmix";
sudo rm /etc/asound.conf 
sudo cp /home/asound.dmix /etc/asound.conf;
echo "dmix w asound ustawiony";
#restart alsasound;
}
grep jack /etc/asound.conf &>/dev/null  &&  ustaw_dmix || ustaw_jack;
exit 0;Działa prawidłowo.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2011-02-27 17:30:02)
Offline
Strony: 1