Wie verhindere ich, dass .xsession-Fehler Speicherplatz belegen?

12

Gibt es eine Möglichkeit, die .xsession-errors-Datei vollständig zu deaktivieren? Ich habe es als Symlink zu / tmp, so dass meine Laptop-Festplatte (hoffentlich) einmal in den Ruhezustand versetzt werden kann, aber mindestens 95% der Daten in der Datei (sie füllt sich mit etwa 500.000 pro Stunde) sind ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: Zusicherung "G_VALUE_HOLDS_OBJECT (value)" fehlgeschlagen

Das ist totaler Müll für mich. Ich habe versucht, einen Symlink zu / dev / null zu erstellen, aber das funktioniert nicht (der resultierende Link wird überschrieben), und ich möchte die Aktivität auch nicht, damit mein Laptop hoffentlich einmal in den Ruhezustand wechselt.

Ich verwende Ubuntu 11.04 ohne spezielle Add-Ons für Nautilus.

bjem
quelle
Dieser Trick funktioniert bei mir nicht, da beim Start /etc/X11/Xsessionnicht geprüft wird, auf was der symbolische Link zeigt. Für mich erstellt es eine neue .xsession-errorsreguläre Datei und hat eine .xsession-errors.oldVerknüpfung zu /dev/null. Das will ich nicht. Ich möchte permanent .xsession-errorsweitergeleitet werden, es /dev/nullsei denn, ich ändere es ausdrücklich selbst.
Bjem
Nur um @ j-johan-edwards zu verdeutlichen. Ich habe Ihren Befehl getestet und er funktioniert einwandfrei. Ich möchte nur, dass er dauerhaft ist.
Bjem
Verwendet 11.04 GDM oder LightDM als Display Manager?
Detly
Ich denke, meine ist GDM, wenn das die Standardeinstellung ist. Ich habe es nur geändert, um vom Unity-Desktop wegzukommen.
Bjem
Ja, meine ist GDM. Anscheinend ist der Pfad zu .xsession-errors(?!) in seinem Quellcode fest programmiert. Gibt es eine gute Möglichkeit, ein Skript nach dem Laden von GDM auszuführen, zu dem umgeleitet werden .xsession-errorssoll /dev/null?
Bjem

Antworten:

10

Ich habe eine Zwischenlösung gefunden.

Ich habe ein kleines Skript /etc/X11/Xsession.dnamens erstellt 91redirect-xsession-errors, das den Job für den Moment .xession-errorserledigt , aber wenn Sie einen eigenen benutzerdefinierten Symlink haben möchten, funktioniert dies nicht (ich habe es versucht und es hat keine Daten ausgegeben).

#! / bin / sh

# $ HOME / .xsession-errors nach / dev / null umleiten.
# BJEM 11. Januar 2012

XSESSION_ERRFILE = $ HOME / .xsession-Fehler

# Dies scheint nicht für eine reguläre Datei zu funktionieren,
# zB wenn Sie $ HOME / .xsession-Fehler symbolisieren wollen
# in eine andere Datei. Keine Ahnung warum.
XSESSION_ERRFILE_FINAL = / dev / null

# Erstellt eine Zieldatei, falls diese nicht existiert.
Berühre "$ XSESSION_ERRFILE_FINAL"

# Verknüpfe die .xsession-error-Datei mit dem gewünschten Ziel
# egal was.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Testfall.
#gedit &

##### ENDE DER DATEI #####

Es ist ein bisschen rau und fertig, aber es macht den Job für mich. Beachten Sie, dass dies die einzige Datei ist, die geändert wurde.

bjem
quelle
Leider habe ich @earlonrails Antwort nicht bemerkt. / etc / X11 / Xsession erstellt die Datei in / tmp, wenn es sich um eine symbolische Verknüpfung handelt, sodass diese Methode unbrauchbar ist.
int_ua
4

Es gibt eine Datei mit dem Namen / etc / X11 / Xsession. Womit der Symlink zu einer tmp-Datei erstellt wird. IE. Beginnt in Zeile 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

Sie können diese Xsession-Datei mit Xsession.bak vergleichen. Dann gehen Sie einen Kopf und zeigen Sie Ihre ERRFILE auf / dev / null IE. Linie 83

exec >> /dev/null 2>&1
Ohrenschienen
quelle
Vielen Dank! Ich wünschte, ich hätte diese Antwort früher bemerkt. Ich werde Ihnen 200 Ruf verleihen. Ich habe einen Patch erstellt, der nach der Umgebungsvariablen $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p sucht. Auf diese Weise können wir hoffen, ihn in den Upstream zu bringen.
int_ua
1
Danke vielmals! Dies war vor Jahren ein großes Problem für mich, als ich für eine Firma arbeitete, die Kioske herstellte. Wir würden sie von CompactFlash-Karten ausführen, die normalerweise für Kameras verwendet werden. Diese Karten würden nur eine bestimmte Anzahl von Schreibvorgängen erhalten, bevor sie die Karten nicht beschreiben könnten. Daher wird das Problem nur durch mehrmaliges Löschen der Datei noch verschlimmert.
Earlonrails
Es gibt eine doppelte Frage mit meiner Antwort auch hier askubuntu.com/questions/177058/…
earlonrails
Ich habe eine Zusammenführung angefordert, um sie dem Original möglichst nahe zu bringen : salsa.debian.org/xorg-team/xorg/merge_requests/7 Bitte fügen Sie dort Ihre Geschichte über Kioske hinzu.
int_ua
0

Ich hatte das gleiche Problem mit RedHat Linux 6.4 Server, aber ich kann mit diesem Befehl feststellen, welcher Ordner oder welcher Benutzer mehr Platz benötigt. "Find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" Dann habe ich manuell x Sitzungsfehler mit dem Befehl rm -rf gelöscht

user320929
quelle
1
Diese Antwort sagt nicht, wie die Fehler zu stoppen sind. Hier steht nur, wie man sie löscht. Bitte aktualisieren Sie Ihre Antwort.
Kaz Wolfe
0

Beachten Sie, dass beim Löschen der .xsession-errors-Datei erst nach einem Neustart des Systems Speicherplatz frei wird, wenn noch ein Prozess in die Datei schreibt. Verwenden Sie Echo, um den Dateiinhalt zu überschreiben und die Datei auf ein Zeichen zu setzen. Bis der Prozess, der zu .xsession-Fehlern schreibt, stoppt, fängt die Akte sofort wieder an zu wachsen. Ich muss Remmina stoppen, dann die Datei abschneiden und ich bin wieder am Laufen. Hinweis hilft auch, wenn Sie die maximale Dateigröße auf einige Gig festlegen, damit Ihre .xsession-Errors-Datei das Laufwerk nicht archivieren kann und Ihr System abstürzt. Immer noch auf der Suche nach der Antwort auf das Problem eines Virus, der in anscheinend alle Linux-Betriebssysteme integriert ist. Klingt so, als hätten Microsoft-Entwickler einen Beitrag zu Linux geleistet ... ;-)

dneill
quelle
>.xsession-errors, :>.xsession-errors sind andere gute Möglichkeiten, eine Datei auf Null zu setzen.
Earlonrails