Como evito que os erros .xsession consumam espaço em disco?


12

Existe alguma maneira de desativar completamente o arquivo .xsession-errors? Eu o tenho como um link simbólico para / tmp, para que o disco rígido do meu laptop possa (espero) entrar em suspensão por uma vez, mas pelo menos 95% das coisas no arquivo (ele preenche cerca de 500k por hora) é ...

(nautilus: 1618): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value) 'falhou

que é lixo total para mim. Eu tentei fazer um link simbólico para / dev / null, mas isso não funciona (o link resultante é substituído) e também não quero a atividade, para que meu laptop possa dormir uma vez.

Estou usando o Ubuntu 11.04, sem suplementos especiais para o Nautilus.


Esse truque não funciona para mim, porque na inicialização /etc/X11/Xsessionnão verifica o que o link simbólico está apontando. Para mim, ele cria um novo .xsession-errorsarquivo regular e .xsession-errors.oldvinculou a /dev/null. Não é isso que eu quero. Quero .xsession-errorsredirecionar para /dev/null- permanentemente, a menos que eu mude explicitamente.
bjem

Apenas para esclarecer @ j-johan-edwards. Testei seu comando e ele funciona bem, só quero que seja permanente.
bjem

O 11.04 usa GDM ou LightDM como seu gerenciador de exibição?
detly

Eu acho que o meu é GDM, se esse é o padrão. Eu não mudei, exceto para me afastar da área de trabalho do Unity.
bjem

Sim, o meu é o GDM. Aparentemente, o caminho para .xsession-errorsé codificado (?!) em seu código-fonte. Existe uma boa maneira de executar um script após as cargas GDM para redirecionar .xsession-errorspara /dev/null?
bjem

Respostas:


10

Encontrei uma solução provisória.

Coloquei um pequeno script /etc/X11/Xsession.dchamado 91redirect-xsession-errorsque faz o trabalho por enquanto, mas se você quiser ter seu próprio link simbólico personalizado, .xession-errorsele não funcionará para isso (tentei e não produzi nenhum dado).

#! / bin / sh

# Redirecione $ HOME / .xsession-errors para / dev / null.
# BJEM 11 de janeiro de 2012

XSESSION_ERRFILE = $ HOME / .xsession-errors

# Parece não funcionar para um arquivo comum,
# ie se você deseja criar um link simbólico de $ HOME / .xsession-errors
# para outro arquivo. Eu não sei porque.
XSESSION_ERRFILE_FINAL = / dev / null

# Cria o arquivo de destino se ele não existir.
toque em "$ XSESSION_ERRFILE_FINAL"

# Vincule o arquivo .xsession-errors ao destino desejado
# não importa o que.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# Caso de teste.
#gedit &

##### FIM DO ARQUIVO #####

É um pouco "áspero e pronto", mas faz o trabalho para mim. Observe que este é o único arquivo que foi alterado.


Infelizmente não percebi a resposta @earlonrails. O arquivo / etc / X11 / Xsession criará o arquivo em / tmp se for um link simbólico, portanto este método é inútil.
int_ua 5/07/19

4

Há um arquivo chamado / etc / X11 / Xsession. O que criará o link simbólico para um arquivo tmp. IE. Começa na linha número 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

Você pode cp esse arquivo Xsession para Xsession.bak. Então vá em frente e aponte seu ERRFILE para / dev / null IE. Linha 83

exec >> /dev/null 2>&1

Obrigado! Eu gostaria de ter notado essa resposta mais cedo. Vou conceder-lhe 200 reputação. Eu fiz um patch que verifica a variável de ambiente $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p dessa maneira, podemos esperar torná-lo upstream.
int_ua 5/07/19

1
Muito obrigado! Isso foi um grande problema para mim anos atrás, quando eu trabalhava para uma empresa que fabricava quiosques. Seríamos executados com cartões flash compactos, geralmente usados ​​para câmeras. Esses cartões teriam apenas um certo número de gravações antes de falharem na gravação nos cartões. Portanto, excluir o arquivo muitas vezes, como sugerem outros, só piora o problema.
earlonrails

Existe uma pergunta duplicada com a minha resposta aqui também askubuntu.com/questions/177058/…
earlonrails

Fiz uma solicitação de mesclagem na coisa mais próxima que encontrei no upstream : salsa.debian.org/xorg-team/xorg/merge_requests/7 Adicione sua história sobre quiosques lá.
int_ua 12/07/19

0

Eu enfrentei o mesmo problema no servidor redhat linux 6.4, mas posso encontrar qual pasta ou usuário ocupa mais espaço usando este comando "find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" então eu apaguei manualmente x erros de sessão usando o comando rm -rf


1
Esta resposta não diz como parar os erros. Diz apenas como excluí-los. Atualize sua resposta.
Kaz Wolfe

0

Observe que a exclusão do arquivo .xsession-errors não libera espaço até que o sistema seja reiniciado se um processo ainda estiver gravando no arquivo. Use echo para substituir o conteúdo do arquivo para definir o arquivo para um caractere. Até que o processo de gravação em .xsession-errors interrompa o arquivo começará a crescer imediatamente novamente. Eu tenho que parar o Remmina, em seguida, truncar o arquivo e volto a funcionar. A observação também ajuda se você definir o tamanho do limite do arquivo para alguns shows, para que o arquivo .xsession-errors não possa arquivar a unidade e travar o sistema. Ainda procurando a resposta para esse problema de um vírus embutido em aparentemente todos os sistemas operacionais Linux. Parece que os desenvolvedores da Microsoft têm contribuído para o Linux ... ;-)


>.xsession-errors, :>.xsession-errors são outras boas maneiras de zerar um arquivo.
earlonrails
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.