.Xsession hatalarının disk alanı yemesini nasıl önleyebilirim?


12

.Xsession-error dosyasını tamamen devre dışı bırakmanın bir yolu var mı? Dizüstü bilgisayarımın sabit diskinin (umarım) bir kez uyuyabilmesi için / sympink olarak bir symlink olarak var, ancak dosyadaki en az% 95 (saatte yaklaşık 500 bin dolar) dolduruyor ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: `` G_VALUE_HOLDS_OBJECT (değer) '' iddiası başarısız oldu

Bu benim için tam bir çöp. / Dev / null için bir symlink yapmayı denedim ama işe yaramıyor (ortaya çıkan bağlantı üzerine yazılıyor) ve ayrıca umarım dizüstü bilgisayarım bir kez uyuyabilir.

Nautilus'a özel bir eklenti olmadan Ubuntu 11.04 kullanıyorum.


Bu numara benim için işe yaramıyor çünkü başlangıçta /etc/X11/Xsessionsembolik bağlantının neye işaret ettiğini kontrol etmiyor. Benim için yeni bir .xsession-errorsnormal dosya oluşturur ve ile .xsession-errors.oldbağlantılıdır /dev/null. İstediğim bu değil. Ben istiyorum .xsession-errorsyönlendirilir /dev/null- Ben açıkça bunu kendim değiştirmek permantently sürece.
bjem

@ J-johan-edwards'a açıklık getirmek için. Komutunu test ettim ve iyi çalışıyor, sadece kalıcı olmasını istiyorum.
bjem

11.04, görüntüleme yöneticisi olarak GDM veya LightDM kullanıyor mu?
12'de

Bence benimki GDM, eğer varsayılan buysa. Unity masaüstünden uzaklaşmak dışında bunu değiştirmedim.
bjem

Evet, benim GDM. Görünüşe göre yolu .xsession-errorskaynak koduna sabit kodlanmış (?!). GDM yüklendikten sonra yeniden yönlendirmek .xsession-errorsiçin bir komut dosyası çalıştırmanın iyi bir yolu var mı /dev/null?
bjem

Yanıtlar:


10

Geçici bir çözüm buldum.

Şimdilik işi yapan /etc/X11/Xsession.ddenilen küçük bir komut dosyası koydum 91redirect-xsession-errors, ancak .xession-errorsbunun için kendi özel symlink'iniz için işe yaramazsa (denedim ve herhangi bir veri çıkmadı).

#! / Bin / sh

# $ HOME / .xsession-error komutlarını / dev / null dizinine yönlendirin.
# BJEM 11 Ocak 2012

XSESSION_ERRFILE = $ HOME / .xsession-errors

# Bu normal bir dosya için çalışmıyor gibi görünüyor,
# ie $ HOME / .xsession-error anahtarını bağlamak istiyorsanız
# başka bir dosyaya. Sebebini bilmiyorum.
XSESSION_ERRFILE_FINAL = / dev / null

# Varsa, hedef dosya oluşturur.
"$ XSESSION_ERRFILE_FINAL" öğesine dokunun

# .Xsession-error dosyasını istediğiniz hedefe bağlayın
# ne olursa olsun.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Test durumu.
#gedit &

##### DOSYANIN SONU #####

Biraz 'kaba ve hazır' ama işi benim için yapıyor. Değiştirilmiş olan tek dosya budur.


Ne yazık ki @earlonrails cevap fark etmedi. / etc / X11 / Xsession, sembolik bir bağlantıysa / tmp içindeki dosyayı oluşturur, böylece bu yöntem işe yaramaz.
int_ua

4

/ Etc / X11 / Xsession adında bir dosya var. Hangi bir tmp dosyasına symlink oluşturur. IE. 61 numaralı satırdan başlar

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

Bu Xsession dosyasını Xsession.bak dosyasına cp edebilirsiniz. Sonra bir kafa gidin ve ERRFILE / dev / null IE üzerine gelin. Çizgi 83

exec >> /dev/null 2>&1

Teşekkür ederim! Keşke bu cevabı daha önce fark etmiş olsaydım. Sana 200 itibar vereceğim. Ortam değişkenini kontrol eden bir yama yaptım $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p bu şekilde yukarı akış yapmayı umuyoruz.
int_ua

1
Çok teşekkürler! Yıllar önce kiosk yapan bir şirkette çalışırken bu benim için büyük bir sorundu. Onları genellikle kameralar için kullanılan kompakt flash kartlardan çalıştırırdık. Bu kartlar, kartlara yazılmadan önce sadece belirli sayıda yazıya sahip olacaktır. Bu nedenle, bazılarının önerdiği gibi dosyayı birçok kez silmek yalnızca sorunu daha da kötüleştirir.
earlonrails


Yukarı akışta bulabildiğim en yakın şey için birleştirme isteği yaptım : salsa.debian.org/xorg-team/xorg/merge_requests/7 Lütfen kiosklarla ilgili hikayenizi oraya ekleyin.
int_ua

0

Redhat linux 6.4 sunucusunda aynı sorunla karşı karşıya kaldım, ancak "find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" komutunu kullanarak hangi klasör veya kullanıcının daha fazla yer kapladığını bulabilirim. sonra rm -rf komutunu kullanarak el ile x oturum hatalarını sildim


1
Bu cevap hataları NASIL durdurmak için söylemez. Sadece onları nasıl sileceğini söylüyor. Lütfen cevabınızı güncelleyin.
Kaz Wolfe

0

Dosyaya hala bir işlem yazılıyorsa, .xsession-error dosyasının silinmesinin bir sistem yeniden başlatılıncaya kadar boş alan olmadığını lütfen unutmayın. Dosyayı bir karaktere ayarlamak üzere dosya içeriğinin üzerine yazmak için echo komutunu kullanın. .Xsession-error dizinine yazma işlemi duruncaya kadar dosya hemen yeniden büyümeye başlar. Bana Remmina'yý durdurmalýyým, sonra da dosyayý kesiyorum ve tekrar çalýţýyorum. Ayrıca, .xsession-error dosyanızın sürücüyü dosyalayıp sisteminizi kilitleyememesi için dosya sınırı boyutunu birkaç gig olarak ayarlamanıza da yardımcı olur. Görünüşe göre tüm Linux işletim sistemlerine yerleşik bir virüs sorununun hala cevabını arıyor. Microsoft geliştiricileri Linux'a katkıda bulunuyor gibi ... ;-)


>.xsession-errors, :>.xsession-errors bir dosyayı sıfırlamanın diğer iyi yoludur.
earlonrails
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.