.xsession-errors가 디스크 공간을 차지하지 않도록하려면 어떻게합니까?


12

.xsession-errors 파일을 완전히 비활성화하는 방법이 있습니까? 필자는 랩탑 하드 디스크가 (잠시 적으로) 한 번만 잠들 수 있도록 / tmp에 대한 심볼릭 링크로 사용하지만 파일의 적어도 95 % (시간당 약 500k로 채워짐)는 ...

(노틸러스 : 1618) : GLib-GObject-CRITICAL ** : g_value_get_object : 어설 션`G_VALUE_HOLDS_OBJECT (값) '실패

그것은 나에게 총 쓰레기입니다. / dev / null에 대한 심볼릭 링크를 시도했지만 작동하지 않습니다 (결과 링크를 덮어 씁니다). 또한 랩탑이 한 번 잠자기 상태가되도록 활동을 원하지 않습니다.

노틸러스에 특별한 추가 기능이없는 Ubuntu 11.04를 사용하고 있습니다.


시작시 /etc/X11/Xsession심볼릭 링크가 가리키는 것을 확인하지 않기 때문에 그 트릭이 작동 하지 않습니다. 나를 위해 새로운 .xsession-errors일반 파일을 만들고에 .xsession-errors.old링크했습니다 /dev/null. 그것은 내가 원하는 것이 아닙니다. 명시 적으로 변경하지 않는 한 영구적으로 .xsession-errors리디렉션 하고 싶습니다 /dev/null.
bjem

@ j-johan-edwards를 명확히하기 위해. 나는 당신의 명령을 테스트했고 정상적으로 작동합니다.
bjem

11.04는 GDM 또는 LightDM을 디스플레이 관리자로 사용합니까?
detly

이것이 기본값 인 경우 GDM이라고 생각합니다. Unity 데스크톱에서 벗어나는 것을 제외하고는 변경하지 않았습니다.
bjem

예, 제 GDM입니다. 분명히 경로 .xsession-errors는 소스 코드에 하드 코딩 (?!)되어 있습니다. 리디렉션 .xsession-errors을 위해 GDM로드 후 스크립트를 실행하는 좋은 방법 이 /dev/null있습니까?
bjem

답변:


10

중간 해결책을 찾았습니다.

나는 현재 작업을 수행 하는 작은 스크립트를 /etc/X11/Xsession.d호출 91redirect-xsession-errors했지만 사용자 정의 symlink를 .xession-errors원한다면 작동하지 않습니다 (시도했지만 데이터를 출력하지 않았습니다).

#! / bin / sh

# $ HOME / .xsession-errors를 / dev / null로 리디렉션하십시오.
# BJEM 2012 년 1 월 11 일

XSESSION_ERRFILE = $ HOME / .xsession-errors

# 일반 파일에서는 작동하지 않는 것 같습니다.
# 즉, $ HOME / .xsession-errors를 심볼릭 링크하려는 경우
# 다른 파일로. 이유를 모르겠습니다.
XSESSION_ERRFILE_FINAL = / dev / null

# 대상 파일이 존재하지 않으면 작성합니다.
"$ XSESSION_ERRFILE_FINAL"을 터치합니다.

# .xsession-errors 파일을 원하는 대상에 연결
# 무슨 일이 있어도.
ln -sf "$ XSESSION_ERRFILE_FINAL" "$ XSESSION_ERRFILE"

# 테스트 사례.
#gedit &

##### 파일 끝 #####

그것은 '거칠고 준비가 된'것이지만 나를 위해 일합니다. 이 파일은 변경된 유일한 파일입니다.


불행히도 나는 @earlonrails 답변을 보지 못했습니다. / etc / X11 / Xsession은 기호 링크 인 경우 / tmp에 파일을 작성하므로이 방법은 쓸모가 없습니다.
int_ua

4

/ etc / X11 / Xsession이라는 파일이 있습니다. tmp 파일에 대한 심볼릭 링크를 만듭니다. IE. 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

이 Xsession 파일을 Xsession.bak로 cp 할 수 있습니다. 그런 다음 ERRFILE을 / dev / null IE로 지정하십시오. 83 행

exec >> /dev/null 2>&1

감사합니다! 나는이 답변을 일찍 알았기를 바랍니다. 평판 200 점을드립니다. 환경 변수 $NOXSESSIONERRORS paste.ubuntu.com/p/TFxZ344k2p 를 확인하여 패치를 업스트림으로 만들 수 있는 패치 를 만들었습니다.
int_ua

1
고마워요! 이것은 키오스크를 만든 회사에서 일할 때 몇 년 전 큰 문제였습니다. 우리는 일반적으로 카메라에 사용되는 컴팩트 플래시 카드에서 실행할 것입니다. 이러한 카드는 카드 쓰기에 실패하기 전에 특정 개수의 쓰기 만 할 수 있습니다. 따라서 다른 사람들이 제안한 것처럼 파일을 여러 번 삭제하면 문제가 악화 될뿐입니다.
earlonrails

뿐만 아니라 여기에 내 대답과 중복 된 질문이 askubuntu.com/questions/177058/...
earlonrails

업스트림에서 찾을 수 있는 가장 가까운 것에 병합 요청을했습니다 . salsa.debian.org/xorg-team/xorg/merge_requests/7 키오스크에 대한 이야기를 추가하십시오.
int_ua

0

Redhat Linux 6.4 서버에서 동일한 문제에 직면했지만이 명령 "find / -xdev -type f -size + 100000000c -exec ls -lh {} \;" 를 사용하여 어떤 폴더 또는 사용자가 더 많은 공간을 차지하는지 찾을 수 있습니다 . 그런 다음 rm -rf 명령을 사용하여 수동으로 x 세션 오류를 삭제했습니다.


1
이 답변은 오류를 중지하는 방법을 말하지 않습니다. 삭제 방법 만 알려줍니다. 답변을 업데이트하십시오.
Kaz Wolfe

0

프로세스가 여전히 파일에 쓰는 경우 .xsession-errors 파일을 삭제해도 시스템을 다시 시작할 때까지 공간을 확보 할 수 없습니다. echo를 사용하여 파일 내용을 덮어 쓰면 파일을 한 문자로 설정할 수 있습니다. .xsession-errors에 쓰는 프로세스가 중지되면 파일이 즉시 다시 커지기 시작합니다. Remmina를 중지 한 다음 파일을 자르고 다시 실행됩니다. .xsession-errors 파일이 드라이브를 정리하고 시스템에 충돌을 일으키지 않도록 파일 제한 크기를 약간의 공연으로 설정하면 도움이됩니다. 분명히 모든 Linux 운영 체제에 내장 된 바이러스의이 문제에 대한 해답을 찾고 있습니다. 마이크로 소프트 개발자들이 리눅스에 기여한 것처럼 들린다 ... ;-)


>.xsession-errors, :>.xsession-errors 파일을 0으로 다른 좋은의 방법이 있습니다.
earlonrails
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.