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
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 fi
Offline
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
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
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
Nawiasem mówiąc, zamiast tej ifologii zastosuj konstrukcję case (być może w duecie z getopt(s)). To nie perl ;) .
Offline
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