Procesy wylogowanego użytkownika zostają w pamięci

Po wylogowaniu użytkownika w pamięci pozostają jego procesy. Nie jeden lub kilka, ale kilkadziesiąt procesów, które w dodatku potrafią się objawiać innemu użytkownikowi w postaci duchów niemożliwych do usunięcia:


Program widać na panelu, ale nie ma go wśród uruchomionych :frowning:

…i oczywiście procesy te zajmują czas procesora i pamięć.

Pytanie:
W jaki sposób spowodować automatyczne zamykanie wszystkich procesów użytkownika po jego wylogowaniu?

W Linuksie do sprawdzenia stanu procesów służy polecenie ps. Polecam poczytanie man ps i użycie tego narzędzia.

Skąd ta pewność? Ile zajmują? Sprawdziłeś to jakimkolwiek narzędziem?

  1. Pomińmy, póki co, temat ilości procesów.
  2. Jesteś pewien, że wylogowujesz się, a nie przełączasz użytkownika?
  3. Workrave:
    • jesteś pewien, że proces widoczny jest pod tą nazwą?
    • jesteś pewien, że masz włączoną opcję ‘Wszystkie procesy’?
    • jeżeli klikniesz na ikonę krzyżyka, a następnie na okno programu, to Menedżer zadań pokaże Ci odpowiedni proces.
  4. Ilość zajmowanej pamięci:
    • utwórz skrypt lub alias:
      ps -A --sort -rss -o comm,rss | grep $1 | awk '{ sum+=$2 } END { print sum/1024 }'
    • nazwij go, np. ram;
    • użycie:
      $ ram firefox
      pokaże Ci ilość zajmowanej pamięci przez aplikację, w tym przypadku przez Firefox’a.
  1. Na pewno

  2. Rezultat:
    https://i.imgur.com/W87A4sR.png

  3. Ilość zajmowanej pamięci i skąd wiem (nie wszystko się zmieściło):
    https://i.imgur.com/kZZCJEk.png
    Tylko to, co jest widoczne, to 25% pamięci.

  1. Workrave:
    • jesteś pewien, że masz włączoną opcję ‘Wszystkie procesy’?
  2. Zarówno ja, jak i @napcok, myśleliśmy (jak nieśmiało sądzę) o tym, żebyś TY sprawdził zajmowaną pamięć i moc procesora i przedstawił wynik. Oczywiście, chodzi o zasoby zajmowane przez problematyczne procesy, a nie wszystkie.
  1. OK, włączyłem wszystkie procesy oraz wszystkie inne opcje, a wynik ten sam.

  2. Obrazek, który zamieściłem, to wynik uruchomienia sudo htop w terminalu użytkownika monter. Problematyczne są wszystkie procesy, które zostały po poprzednio zalogowanym (i oczywiście wylogowanym) użytkowniku profesor. Te wszystkie procesy zabierają pamięć aktualnie zalogowanemu użytkownikowi.
    Tak, od razu to napiszę, można je zaznaczyć i usunąć z pamięci bez żadnych problemów. Przypuszczam, że można napisać skrypt, który będzie usuwał z pamięci procesy wylogowanego użytkownika. Wydawało mi się jednak, że powinno to być automatyczne działanie systemu.

  3. Bonus. Usunięcie wszystkich procesów poprzedniego użytkownika nie usuwało tajemniczej manifestacji Workrave. Okazało się jednak, że przeładowanie powłoki pozwala się pozbyć tego fenomenu.
    Po uruchomieniu Workrave przez użytkownika (tu – monter), duszek pojawił się znowu, a po przeładowaniu powłoki, zniknął, bez wpływu na uruchomiony i działający Workrave.
    Zaczynam się czuć jak eksplorator jakiejś Zony.

workrave - widać, że zachowuje się niewłaściwie. Odinstalowałbym, zrestartował i sprawdził - choćby po to, aby wyeliminować ten element.

Właściwie, to po stwierdzeniu, że podobny efekt pojawia się przy korzystaniu z aplikacji pracujących w środowisku Java (jDownloader, Freeplane), zdecydowałem się na przejście na XFCE, w którym rzeczone manifestacje nie pojawiły się już więcej.

Za to, po usunięciu środowiska Cinnamon, pojawiły się znajome kłopoty, które opisywałem w wątku Jeden użytkownik już się nie zaloguje. W związku z tym zaczynam doceniać to, co klienci Canonical nazywają piekłem zależności.

Główny problem, czyli procesy poprzedniego użytkownika pozostające w pamięci po jego wylogowaniu, w dalszym ciągu nie uległ zmianie.

Znalazłem rozwiązanie:

  1. Należy wyedytować /etc/systemd/logind.conf
  2. Usunąć wykomentowanie z linii #KillUserProcesses=no
  3. Zamienić no na yes
  4. Zapisać

Uruchomić system ponownie.

Na podstawie rozwiązania znalezionego w forum.dobreprogramy.pl