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/.
Sprawa wygląda tak:
Odpalam hibernację, volumeicon jest ubijany , pulse jest ubijany, maszyna się wyłącza. Po włączeniu moduły od dźwięku są przeładowywane pulse wstaje, volumeicon pozornie też ale reszta usług w skryptach pm-utils się zawiesza np. fancontrol (wiatrak nie zwalnia).
Szukając przyczyny, w logu pm-suspend.log widnieje taka linijka:
+ /etc/pm/sleep.d/10_sound-apps thaw hibernate (volumeicon:10727): Pango-WARNING **: error opening config file '/root/.config/pango/pangorc': Permission denied
Nie wiem skąd tam się wziął root bo skrypt skrypt wygląda tak:
#!/bin/bash case "$1" in hibernate|suspend) pkill amarok pkill volumeicon su morfik -c "pulseaudio -k" sleep 5 ;; thaw|resume) su morfik -c "pulseaudio -D" sleep 1 su morfik -c "volumeicon" ;; *) exit $NA ;; esac
W ps widnieje coś takiego:
root:~# ps -eo "%mem pid user args" | grep volume 0.1 10726 root su morfik -c volumeicon 0.9 10727 morfik volumeicon
I dla porównania pulse, który jest przecie odpalany w ten sam sposób:
root:~# ps -eo "%mem pid user args" | grep pulse 0.5 10718 morfik pulseaudio -D 0.2 10723 morfik /usr/lib/pulseaudio/pulse/gconf-helper
Oba polecenia zostały wydane zanim skrypty z pm-utils się wykonały -- zanim pm-hibernate oddał terminal.
Ubicie volumeicon (prawym na ikonce > quit) "wznawia" wykonywanie pozostałych skryptów i wszystko jest ok. Ale to ubija oba procesy od volumeicon.
Ktoś wie czemu tam jest?
root su morfik -c volumeicon
Ostatnio edytowany przez morfik (2013-07-06 22:13:54)
Offline
A po co tobie volumeicon do PA, jeśli PA ma własne PavuCośtam?
Volumeicon jest do Alsy, a przy PA nie ma już Alsy, Alsa jest tytko
tymczasowym sterownikiem, bo ten wredny LT nie chce przerobić kernela, żeby był zgodny z Pulseaudio.
Ale kiedy LT dostrzeże swój błąd i przeprosi na kolanach twórców PA, to wtedy Linux wreszcie będzie miał nowoczesny dźwięk dala głuchoniemych, a ja wreszcie przekonam się do *BSD.. :D
Z błędu wynika, ze volueicon łapie zmienną $HOME roota, pomimo su, i dlatego chce konfigu z folderu $HOME/.config/pango - czyli w tym przypadku /root/.config/pango.
su zmienia użytkownika, ale nie zmienia zmiennych systemowych.
Spróbuj
sudo -u morfik volumeicon
Pod warunkiem, ze w sudoers masz ustawione:
Defaults:ALL env_reset Defaults:ALL always_set_home
Możesz też podać zmienną $HOME w poleceniu su morfik
np
su morfik HOME="/home/morfik" volumeicon
lub:
sudo -u morfik HOME="/home/morfik" volumeicon
czy jakoś podobnie.
Popróbuj kilka wersji, któraś kombinacja powinna zaskoczyć.
A poza tym pm_utils to są skrypty powloki, wieć dalsze wykonanie skrypta czeka,
aż volumeicon się zakończy i zwróci status wykonania.
Żeby nie czekał, tylko robił co trzeba, spróbuj
...voluemicon &
Albo poszukaj innego sposobu, osobiście nie wiem, jak odpalić voluemicon, żeby chodził po zamknięciu basha, chyba żeby użyć nohup.
Inne opcje odpalenia procesu, żeby przeżył ubicie powłoki, pewnie też istnieją, ale o to pytałbym przede wszystkim azhaga.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2013-07-07 12:02:46)
Offline
Na openboxie w titn2 panelu nie ma żadnego głośniczka. Za pomocą volumeicon sobie wywołuję mixer pulse -- pavucontrol . Ponadto, ten głośnik pokazuje mi poziom głośności, no i opcjonalnie zarządza klawiszami od mute, ściszanie, zgłaśnianie . Volumeicon działa całkiem dobrze, tylko dziwnie się blokuje przy odhibernowaniu systemu.
Na wszelki wypadek usunąłem:
alias su='su -'
z /home/morfik/.bashrc ale to nic nie zmieniło.
Sposób z HOME="/home/morfik" w ogóle nie działa albo coś robię źle. W każdym razie, nie ważne jak to wpisze, ciągle się wiesza, tylko ps się zmienia:
root:~# ps -eo "%mem pid user args" | grep volume 0.1 17989 root su morfik -c volumeicon 1.0 17990 morfik volumeicon root:~# ps -eo "%mem pid user args" | grep volume 0.1 22538 root su HOME=/home/morfik morfik -c volumeicon 0.9 22539 morfik volumeicon root:~# ps -eo "%mem pid user args" | grep volume 0.1 15548 root su morfik HOME=/home/morfik -c volumeicon 0.9 15549 morfik volumeicon root:~# ps -eo "%mem pid user args" | grep volume 0.1 26381 root su --preserve-environment morfik -c volumeicon 0.8 26382 morfik volumeicon root:~# ps -eo "%mem pid user args" | grep volume 0.1 27879 root su morfik --preserve-environment -c volumeicon 0.8 27880 morfik volumeicon
W przypadkach bez dodawania -c zostawiając jedynie volumeicon , wszystko jedno czy w "" czy bez , volumeicon się nie odpala w ogóle.
W przypadku sudo jest ten sam scenatiusz. Dodałem te dwie linijki:
Defaults:ALL env_reset Defaults:ALL always_set_home
Nie wiem czy coś jeszcze tam trzeba dodać, w każdym razie cały plik wygląda tak:
## sudoers file. ## ## This file MUST be edited with the 'visudo' command as root. ## Failure to use 'visudo' may result in syntax or file permission errors ## that prevent sudo from running. ## ## See the sudoers man page for the details on how to write a sudoers file. ## ## ## Host alias specification ## ## Groups of machines. These may include host names (optionally with wildcards), ## IP addresses, network numbers or netgroups. # Host_Alias WEBSERVERS = www1, www2, www3 ## ## User alias specification ## ## Groups of users. These may consist of user names, uids, Unix groups, ## or netgroups. # User_Alias ADMINS = millert, dowdy, mikef ## ## Cmnd alias specification ## ## Groups of commands. Often used to group related commands together. # Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \ # /usr/bin/pkill, /usr/bin/top ## ## Defaults specification ## ## You may wish to keep some of the following environment variables ## when running commands via sudo. ## ## Locale settings # Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET" ## ## Run X applications through sudo; HOME is used to find the ## .Xauthority file. Note that other programs use HOME to find ## configuration files and this may lead to privilege escalation! # Defaults env_keep += "HOME" ## ## X11 resource path settings # Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH" ## ## Desktop path settings # Defaults env_keep += "QTDIR KDEDIR" ## ## Allow sudo-run commands to inherit the callers' ConsoleKit session # Defaults env_keep += "XDG_SESSION_COOKIE" ## ## Uncomment to enable special input methods. Care should be taken as ## this may allow users to subvert the command being run via sudo. # Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER" ## ## Uncomment to enable logging of a command's output, except for ## sudoreplay and reboot. Use sudoreplay to play back logged sessions. # Defaults log_output # Defaults!/usr/bin/sudoreplay !log_output # Defaults!/usr/local/bin/sudoreplay !log_output # Defaults!/sbin/reboot !log_output Defaults:ALL env_reset Defaults:ALL always_set_home ## ## Runas alias specification ## ## ## User privilege specification ## root ALL=(ALL) ALL ## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Uncomment to allow members of group sudo to execute any command # %sudo ALL=(ALL) ALL ## Uncomment to allow any user to run sudo if they know the password ## of the user they are running the command as (root by default). # Defaults targetpw # Ask for the password of the target user # ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw' ## Read drop-in files from /etc/sudoers.d ## (the '#' here does not indicate a comment) #includedir /etc/sudoers.d # Users in the truecrypt group are allowed to run TrueCrypt as root. %truecrypt ALL=(root) NOPASSWD:/usr/bin/truecrypt
W auth.log jest:
Jul 6 14:35:33 morfikownia sudo: root : TTY=pts/0 ; PWD=/home/morfik ; USER=morfik ; COMMAND=/usr/bin/volumeicon Jul 6 14:35:33 morfikownia sudo: pam_unix(sudo:session): session opened for user morfik by morfik(uid=0)
I wisi tak jak w przypadku su.
Nie wiem czemu pulse bez problemu startuje, a ten volumeicon ma problemy.
Offline
Jacekalex napisał(-a):
Inne opcje odpalenia procesu, żeby przeżył ubicie powłoki, pewnie też istnieją, ale o to pytałbym przede wszystkim azhaga.
"&" wystarczy.
Offline
Żadnego polecenia nie idzie wydać przez su user. Sprawdziłem jak wygląda sprawa przy odpalaniu normlanie z wykorzystaniem su user:
morfik:~$ su morfik -c geany Password:
I tutaj też jest tak samo: xD
morfik:~$ ps -eo "%mem pid user args" | grep geany 0.1 12285 root su morfik -c geany 1.7 12292 morfik geany
To tak powinno wyglądać, żeby ten pierwszy proces ciągle był aktywny? Dopiero jak zamknę okno geany, znikają. Pewnie dlatego taki problem jest z volumeicon.
EDIT:
Dodanie & do:
su morfik -c "volumeicon" &
Niweluje problem z odhibernowaniem. Problem, że su nie zmienia środowiska i czyta zmienne w printenv na koncie root, a tam jest home /root/ więc konfigurację do volumeicon chce pobrać z tamtej lokalizacji.
Jak nakazać su by zmienił środowisko?
Ostatnio edytowany przez morfik (2013-07-06 16:45:58)
Offline
To dopiero ciekawe.
zgodnie z tym co piszą tutaj http://wiki.debian.org/EnvironmentVariables trzeba mieć plik ~/.bash_profile o treści:
if [ -f ~/.profile ]; then . ~/.profile fi
I to ma przy każdym su user czytać ten plik, a konkretnie ten ~/.profile w którym mają być wszystkie zmienne usera. To jednak nie działa.
Postanowiłem wyexportować zmienną HOME używając bezpośrednio ~/.bash_profile i odczytać ją przez echo $HOME :
# #~/.bash_profile # [[ -f ~/.bashrc ]] && . ~/.bashrc if [ -f ~/.profile ]; then . ~/.profile fi export HOME="/home/morfik" echo $HOME
Wynik linijki:
root:~# su -l morfik -c "echo $HOME" /home/morfik /root
Tak tam są dwie wartości zmiennej HOME pierwsza po przeczytaniu pliku ~/.bash_profile druga po wykonaniu polecenia -- ktoś wie czemu się zmieniła? xD
EDIT:
To mi podsunęło myśl by zrobić skrypt:
#!/bin/bash export HOME="/home/morfik" volumeicon &
I co widzimy? xD
root:/home/morfik# su -l morfik -c "/home/morfik/volumeicon_start" root:/home/morfik# ps -eo "pid user args" | grep volume 2924 morfik volumeicon
I w logu:
2013-07-06T22:05:48.323082+02:00 morfikownia su[3066] Successful su for morfik by root 2013-07-06T22:05:48.326992+02:00 morfikownia su[3066] + /dev/pts/2 root:morfik 2013-07-06T22:05:48.327954+02:00 morfikownia su[3066] pam_unix(su:session): session opened for user morfik by morfik(uid=0) 2013-07-06T22:05:48.346243+02:00 morfikownia su[3066] pam_unix(su:session): session closed for user morfik
Teraz to tylko wrzucić do skryptu pm-utils i powinno zadziałać.
EDIT:
Działa! xD
Ostatnio edytowany przez morfik (2013-07-06 22:13:33)
Offline
azhag napisał(-a):
Jacekalex napisał(-a):
Inne opcje odpalenia procesu, żeby przeżył ubicie powłoki, pewnie też istnieją, ale o to pytałbym przede wszystkim azhaga.
"&" wystarczy.
To chyba mam jakiegoś dziwnego basha :D
Odpalam w terminalu:
volumeicon &
wyłączam terminal, i znika też vloumeicon.
Zostaje tylko, jak wbijam:
volumeicon & exit;
Dla porównania, w skrypcie perla wszystko działa prawidłowo zawsze, ale w perlu jest wyraźne rozgraniczenie między wywołaniami fork, exec i system.
W bashu jakoś nie znalazłem dokładnego wyjaśnienia tych drobnych niuansów. ;)
Offline
Jacekalex napisał(-a):
To chyba mam jakiegoś dziwnego basha :D
A widzisz, bo ja używam zsh i na nim nie ma problemu. :)
Offline
Spoko
Ja może troszkę za bardzo wrosłem w Basha, może tych skryptów się trochę za dużo nazbierało, ale jakiś kosmiczny problem to to nie jest.
Największym niebezpieczeństwem jest uważanie basha, zsh czy csh za języki programowania, którymi nie są.
Jak kogoś, tak jak mnie, Perl, Python czy inny język programowania nie wyprowadził z błędu, to można mu tylko współczuć. ;)
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2013-07-07 09:17:04)
Offline
Mi volumeicon i kilka innych appsów też kończy działanie po zamknięciu terminala mając przy tym & , inne działają bez problemu w tle.
Jacekalex napisał(-a):
volumeicon & exit;
A to sobie zapamiętam. xD
Co do samego zsh, też go używałem i też miałem z nim problemy przy działaniu aplikacji w tle. Może to bardziej zależy od aplikacji? Poza tym, chciałem się przerzucić na zsh ale ciągły rehash po instalacji, wpisywanie znaku \ przez * i innymi oraz nie działające bg 1 2 3 itp, zwłaszcza gdy dałem ctrl+z na dwóch aplikacjach, co mi uniemożliwiło podniesienie tego pierwszego zatrzymanego procesu, sprawiło, że sobie dałem spokój z zsh. Może nie wgryzłem się za bardzo w config ale trochę mi działał ten zsh na nerwy. xD
Offline
Ale ja właśnie na bashu mam problem z aplikacjami w tle. ;)
morfik napisał(-a):
Może nie wgryzłem się za bardzo w config
Po co wgryzać? Wystarczy wziąć z grmla i już.
Offline
3k linii na konfig? xD
Mogę mu dać ostatnią szanse jak tylko mi ktoś powie jak podnieść zawieszone procesy, bo:
morfik@morfikownia ~ % geany ^Z [1] + 31864 suspended geany 20 morfik@morfikownia ~ % smplayer :( This is SMPlayer v. 0.8.0 running on Linux ^Z [2] + 31872 suspended smplayer 20 morfik@morfikownia ~ % vlc :( VLC media player 2.0.6 Twoflower (revision 2.0.6-0-gbe9623c) [0x9d7f9d0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface. ^Z [3] + 31880 suspended vlc 20 morfik@morfikownia ~ % jobs :( [1] suspended geany [2] - suspended smplayer [3] + suspended vlc morfik@morfikownia ~ % bg 1 bg: job not found: 1 1 morfik@morfikownia ~ % fg 1 :( fg: job not found: 1 1 morfik@morfikownia ~ % bg 2 :( bg: job not found: 2 1 morfik@morfikownia ~ %
To po co są te numerki 1 2 3 ?
Dla porównania bash:
morfik:~$ geany ^Z [1]+ Stopped geany morfik:~$ smplayer This is SMPlayer v. 0.8.0 running on Linux ^Z [2]+ Stopped smplayer morfik:~$ vlc VLC media player 2.0.6 Twoflower (revision 2.0.6-0-gbe9623c) [0x8d1b9d0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface. ^Z [3]+ Stopped vlc morfik:~$ jobs [1] Stopped geany [2]- Stopped smplayer [3]+ Stopped vlc morfik:~$ bg 1 [1] geany & morfik:~$ jobs [1] Running geany & [2]- Stopped smplayer [3]+ Stopped vlc morfik:~$ fg 3 vlc ^Z [3]+ Stopped vlc morfik:~$ bg 3 [3]+ vlc & morfik:~$ jobs [1] Running geany & [2]+ Stopped smplayer [3]- Running vlc & morfik:~$
Offline
Jacekalex napisał(-a):
azhag napisał(-a):
Jacekalex napisał(-a):
Inne opcje odpalenia procesu, żeby przeżył ubicie powłoki, pewnie też istnieją, ale o to pytałbym przede wszystkim azhaga.
"&" wystarczy.
To chyba mam jakiegoś dziwnego basha :D
Odpalam w terminalu:Kod:
volumeicon &wyłączam terminal, i znika też vloumeicon.
Zostaje tylko, jak wbijam:Kod:
volumeicon & exit;Dla porównania, w skrypcie perla wszystko działa prawidłowo zawsze, ale w perlu jest wyraźne rozgraniczenie między wywołaniami fork, exec i system.
W bashu jakoś nie znalazłem dokładnego wyjaśnienia tych drobnych niuansów. ;)
Najwyraźniej to zależy od aplikacji - leafpad przykładowo zostaje po zamknięciu terminala, a volumeicon już nie.
Offline
PavloAkaLogan napisał(-a):
......
Najwyraźniej to zależy od aplikacji - leafpad przykładowo zostaje po zamknięciu terminala, a volumeicon już nie.
U mnie Leafpad sie zamyka tak samo, jak Volumeicon, właśnie sprawdziłem.
Też pomaga tylko
leafpad & exit;
najwyraźniej zachowanie powłoki zależy od znacznie większej liczby czynników,
niż się niektórym wydaje. ;)
Ostatnio edytowany przez Jacekalex (2013-07-07 14:12:02)
Offline