Jak zapobiec jedzeniu miejsca na dysku przez błędy .xsession?

12

Czy istnieje sposób na całkowite wyłączenie pliku błędów .xsession? Mam go jako dowiązanie symboliczne do / tmp, dzięki czemu dysk twardy mojego laptopa może (mam nadzieję) raz zasnąć, ale co najmniej 95% zawartości pliku (wypełnia się około 500k na godzinę) to ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: asercja `G_VALUE_HOLDS_OBJECT (wartość) 'nie powiodła się

co jest dla mnie totalnym śmieciem. Próbowałem zrobić dowiązanie symboliczne do / dev / null, ale to nie działa (powstały link jest nadpisany), a także nie chcę tej aktywności, aby mam nadzieję, że mój laptop może raz zasnąć.

Korzystam z Ubuntu 11.04, bez specjalnych dodatków do Nautilus.

bjem
źródło
Ta sztuczka nie działa dla mnie, ponieważ podczas uruchamiania /etc/X11/Xsessionnie sprawdza, na co wskazuje dowiązanie symboliczne. Dla mnie tworzy nowy .xsession-errorszwykły plik i .xsession-errors.oldłączy się z nim /dev/null. Nie tego chcę. Chcę .xsession-errorsprzekierować do /dev/null- na stałe, chyba że ja osobiście to zmienię.
bjem
Tylko dla wyjaśnienia @ j-johan-edwards. Przetestowałem twoje polecenie i działa dobrze, chcę tylko, żeby było trwałe.
bjem
Czy 11.04 używa GDM lub LightDM jako menedżera wyświetlania?
detly
Myślę, że mój jest GDM, jeśli jest to domyślny. Nie zmieniłem tego, poza ucieczką od pulpitu Unity.
bjem
Tak, mój jest GDM. Najwyraźniej ścieżka do .xsession-errorsjest zakodowana na stałe (?!) w kodzie źródłowym. Czy jest to dobry sposób, aby uruchomić skrypt po GDM ładunki do przekierowania .xsession-errorsdo /dev/null?
bjem

Odpowiedzi:

10

Znalazłem tymczasowe rozwiązanie.

I umieścić mały skrypt /etc/X11/Xsession.do nazwie 91redirect-xsession-errors, która spełnia swoje zadanie na teraz, ale jeśli chcesz mieć swój własny dowiązania za .xession-errorsto nie działa, że (próbowałem i nie wyprowadzać dane).

#! / bin / sh

# Przekieruj $ HOME / .xsession-błędy do / dev / null.
# BJEM 11 stycznia 2012 r

XSESSION_ERRFILE = $ HOME / .xsession-error

# To nie wydaje się działać dla zwykłego pliku,
# tzn. jeśli chcesz dowiązać symbol $ HOME / .xsession-error
# do innego pliku. Nie wiem dlaczego.
XSESSION_ERRFILE_FINAL = / dev / null

# Tworzy plik docelowy, jeśli nie istnieje.
kliknij „$ XSESSION_ERRFILE_FINAL”

# Połącz plik .xsession-error z pożądanym celem
# nieważne co.
ln -sf „$ XSESSION_ERRFILE_FINAL” „$ XSESSION_ERRFILE”

# Przypadek testowy.
#gedit &

##### KONIEC PLIKU #####

Jest trochę „szorstki i gotowy”, ale spełnia moje zadanie. Pamiętaj, że jest to jedyny plik, który został zmieniony.

bjem
źródło
Niestety nie zauważyłem odpowiedzi na @earlonrails. / etc / X11 / Xsession utworzy plik w / tmp, jeśli jest to dowiązanie symboliczne, więc ta metoda jest bezużyteczna.
int_ua
4

Istnieje plik o nazwie / etc / X11 / Xsession. Który utworzy dowiązanie symboliczne do pliku tmp. TO ZNACZY. Zaczyna się od linii 61

ERRFILE=$HOME/.xsession-errors

# attempt to create an error file; abort if we cannot
if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] &&
  [ ! -L "$ERRFILE" ]; then
  chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
    message "warning: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
             "\"$ERRFILE\"; look for session log/errors in" \
             "\"$TMPDIR/xsession-$USER\"."
  fi
else
  errormsg "unable to create X session log/error file; aborting."
fi

Możesz skopiować ten plik Xsession do Xsession.bak. Następnie idź głową i skieruj ERRFILE do / dev / null IE. Linia 83

exec >> /dev/null 2>&1
Earlrails
źródło
Dziękuję Ci! Chciałbym wcześniej zauważyć tę odpowiedź. Dam ci 200 punktów reputacji. Zrobiłem łatkę, która sprawdza zmienną środowiskową $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p w ten sposób, że możemy mieć nadzieję, że uda się ją upstream.
int_ua
1
Wielkie dzięki! To był dla mnie duży problem lata temu, kiedy pracowałem dla firmy, która produkowała kioski. Uruchomilibyśmy je z kart Compact Flash, zwykle używanych w aparatach. Te karty miałyby tylko pewną liczbę zapisów, zanim nie zapisałyby się na kartach. Dlatego wielokrotne usuwanie pliku, jak sugerują inni, tylko pogarsza problem.
Earlonrails,
Istnieje duplikat pytania z moją odpowiedzią tutaj również askubuntu.com/questions/177058/…
earlonrails
0

Napotkałem ten sam problem na serwerze redhat linux 6.4, ale mogę znaleźć, który folder lub użytkownik zajmuje więcej miejsca za pomocą polecenia „find / -xdev -type f -size + 100000000c -exec ls -lh {} \;” następnie ręcznie usunąłem x błędów sesji za pomocą polecenia rm -rf

użytkownik320929
źródło
1
Ta odpowiedź nie mówi JAK zatrzymać błędy. Mówi tylko, jak je usunąć. Zaktualizuj swoją odpowiedź.
Kaz Wolfe
0

Pamiętaj, że usunięcie pliku błędów .xsession nie zwalnia miejsca, dopóki system nie uruchomi się ponownie, jeśli proces nadal zapisuje do pliku. Użyj echa, aby zastąpić zawartość pliku, aby ustawić plik na jeden znak. Dopóki proces zapisywania do błędów .xsession nie zatrzyma, plik zacznie się natychmiast powiększać. Ja muszę zatrzymać Remminę, potem obciąć plik i wrócić do działania. Uwaga pomaga również, jeśli ustawisz limit wielkości pliku na kilka koncertów, aby plik błędów .xsession nie mógł zapisać dysku i spowodować awarię systemu. Wciąż szukam odpowiedzi na ten problem wirusa wbudowanego w najwyraźniej wszystkie systemy operacyjne Linux. Wygląda na to, że programiści Microsoft wnieśli swój wkład w system Linux ... ;-)

dneill
źródło
>.xsession-errors, :>.xsession-errors to inne dobre sposoby zerowania pliku.
Earlonrails,