Comment empêcher les erreurs .xsession de consommer de l'espace disque?

12

Existe-t-il un moyen de désactiver complètement le fichier .xsession-errors? Je l'ai en tant que lien symbolique vers / tmp afin que le disque dur de mon ordinateur portable puisse (espérons-le) s'endormir une fois, mais au moins 95% du contenu du fichier (il se remplit à environ 500k par heure) est ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: l'assertion `G_VALUE_HOLDS_OBJECT (value) 'a échoué

ce qui est une ordure totale pour moi. J'ai essayé de faire un lien symbolique vers / dev / null mais cela ne fonctionne pas (le lien résultant est écrasé), et je ne veux pas non plus l'activité afin que, espérons-le, mon ordinateur portable puisse dormir une fois.

J'utilise Ubuntu 11.04, sans modules complémentaires spéciaux pour Nautilus.

bjem
la source
Cette astuce ne fonctionne pas pour moi, car au démarrage /etc/X11/Xsessionne vérifie pas à quoi pointe le lien symbolique. Pour moi, il crée un nouveau .xsession-errorsfichier régulier et s'est .xsession-errors.oldlié à /dev/null. Ce n'est pas ce que je veux. Je veux .xsession-errorsrediriger vers /dev/null- de manière permanente, sauf si je le change explicitement moi-même.
bjem
Juste pour clarifier @ j-johan-edwards. J'ai testé votre commande et cela fonctionne bien, je veux juste qu'elle soit permanente.
bjem
11.04 utilise-t-il GDM ou LightDM comme gestionnaire d'affichage?
detly
Je pense que le mien est GDM, si c'est la valeur par défaut. Je ne l'ai pas changé sauf pour m'éloigner du bureau Unity.
bjem
Oui, mon nom est GDM. Apparemment, le chemin d'accès à .xsession-errorsest codé en dur (?!) Dans son code source. Est - il un bon moyen d'exécuter un script après le chargement GDM à redirigent .xsession-errorsà /dev/null?
bjem

Réponses:

10

J'ai trouvé une solution provisoire.

J'ai mis un petit script dans /etc/X11/Xsession.dappelé 91redirect-xsession-errorsqui fait le travail pour l'instant, mais si vous voulez avoir votre propre lien symbolique personnalisé, .xession-errorscela ne fonctionne pas pour cela (j'ai essayé et il n'a pas sorti de données).

#! / bin / sh

# Redirige $ HOME / .xsession-errors vers / dev / null.
# BJEM 11 janvier 2012

XSESSION_ERRFILE = $ HOME / .xsession-errors

# Cela ne semble pas fonctionner pour un fichier normal,
# c'est-à-dire si vous voulez créer un lien symbolique vers $ HOME / .xsession-errors
# vers un autre fichier. Je ne sais pas pourquoi.
XSESSION_ERRFILE_FINAL = / dev / null

# Crée un fichier cible s'il n'existe pas.
appuyez sur "$ XSESSION_ERRFILE_FINAL"

# Liez le fichier .xsession-errors à la cible souhaitée
# peu importe ce que.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Cas de test.
#gedit &

##### FIN DE FICHIER #####

C'est un peu «rude et prêt» mais ça fait le boulot pour moi. Notez que c'est le seul fichier qui a été modifié.

bjem
la source
Malheureusement, je n'ai pas remarqué de réponse @earlonrails. / etc / X11 / Xsession créera le fichier dans / tmp s'il s'agit d'un lien symbolique, cette méthode est donc inutile.
int_ua
4

Il existe un fichier appelé / etc / X11 / Xsession. Ce qui créera le lien symbolique vers un fichier tmp. C'EST À DIRE. Commence à la ligne numéro 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

Vous pouvez copier ce fichier Xsession dans Xsession.bak. Ensuite, dirigez votre tête et pointez votre ERRFILE vers / dev / null IE. Ligne 83

exec >> /dev/null 2>&1
earlonrails
la source
Je vous remercie! J'aimerais avoir remarqué cette réponse plus tôt. Je vais vous attribuer 200 points de réputation. J'ai fait un patch qui vérifie la variable d'environnement $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p de cette façon, nous pouvons espérer le faire en amont.
int_ua
1
Merci beaucoup! C'était un gros problème pour moi il y a des années quand je travaillais pour une entreprise qui fabriquait des kiosques. Nous les exécutions à partir de cartes flash compactes, généralement utilisées pour les appareils photo. Ces cartes n'auraient qu'un certain nombre d'écritures avant de ne pas pouvoir écrire sur les cartes. Par conséquent, la suppression du fichier plusieurs fois, comme certains le suggèrent, ne fait qu'aggraver le problème.
earlonrails
Il y a une question en double avec ma réponse ici aussi askubuntu.com/questions/177058/…
earlonrails
J'ai fait une demande de fusion dans la chose la plus proche que je pouvais trouver en amont : salsa.debian.org/xorg-team/xorg/merge_requests/7 Veuillez y ajouter votre histoire sur les kiosques.
int_ua
0

J'ai rencontré le même problème sur le serveur redhat linux 6.4 mais je peux trouver quel dossier ou utilisateur prend plus d'espace en utilisant cette commande "find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" puis j'ai supprimé manuellement les erreurs de session x en utilisant la commande rm -rf

user320929
la source
1
Cette réponse ne dit pas COMMENT arrêter les erreurs. Il indique seulement comment les supprimer. Veuillez mettre à jour votre réponse.
Kaz Wolfe
0

Veuillez noter que la suppression du fichier .xsession-errors ne libère pas d'espace jusqu'au redémarrage du système si un processus écrit toujours dans le fichier. Utilisez echo pour écraser le contenu du fichier pour définir le fichier sur un caractère. Jusqu'à ce que le processus d'écriture dans .xsession-errors s'arrête, le fichier recommence à croître immédiatement. Moi je dois arrêter Remmina puis tronquer le fichier et je recommence à courir. Remarque aide également si vous définissez la taille limite de votre fichier sur quelques gig afin que votre fichier .xsession-errors ne puisse pas classer le lecteur et planter votre système. Toujours à la recherche de LA réponse à ce problème de virus intégré à apparemment tous les systèmes d'exploitation Linux. On dirait que les développeurs Microsoft ont contribué à Linux ... ;-)

dneill
la source
>.xsession-errors, :>.xsession-errors sont d'autres bonnes façons de mettre à zéro un fichier.
earlonrails