journalctl를 지우는 방법


208

Google에서 체계적 저널을 지우는 안전한 방법을 찾을 수 없습니다. 안전하고 신뢰할 수있는 방법을 아는 사람이 있습니까?

내가 무언가를 실험하고 있는데 로그에 다양한 오류 메시지가 복잡해 졌다고 가정 해 봅시다. 또한 Conky를 사용하여 데스크톱에 저널을 표시하고 있습니다. 나는 그들이이 물건을 고치고있는 끔찍한 하루를 상기시켜주기 때문에 그 오류를보고 싶지 않습니다.이 공포 후에 신선한 사람처럼 느끼고 싶습니다. 나는 이것이 로그를 지우는 유효한 이유라고 모든 사람들이 동의 할 것이라고 생각합니다.

답변:


289

자체 유지 관리 방법은 로그를 크기 또는 시간별로 진공 청소기로 청소하는 것입니다.

지난 이틀 만 유지하십시오.

journalctl --vacuum-time=2d

지난 500MB 만 유지하십시오.

journalctl --vacuum-size=500M

man journalctl 자세한 내용은.


11
멋진 명령이지만 openSUSE 13.2 (현재 안정적인 릴리스)에서 작동하지 않았습니다. 아치는 커널 및 사용자 프로그램에서 일반적으로 최첨단에있는 것으로 알려져 있으므로 진공 옵션이 최근에 시스템에 추가되어 단순히 내 배포판에 침전되지 않았다고 추측했습니다. Lennart의 2014 년 12 월 10 일 techupdates.com/go/1002774 발표 에서이 명령이 systemd v218에 추가 되었다는 사실을 확인했습니다 . 아치에 있지 않은 나와 같은 다른 사람이 비슷한 문제를 겪을 수 있도록이 의견을 추가하면됩니다. 어쨌든 upvoted.
Joshua Huber

방금 'journalctl --vacuum-time = 1d'를 사용하여 새 로그 메시지가 'journalctl -f'와 함께 표시되지 않는 상황을 해결했습니다. 분명히 내 시스템 시간이 일시적으로 하루 정도 앞당겨졌다가 다시 복구되었고 journalctl은 미래의 로그 이벤트 타임 스탬프를 저널 테일로 사용하고있었습니다.
user5071535

8
Ubuntu 16.04의 "systemd 229"버전에서는 작동하지 않았습니다. journalctl --vacuum-size=1K다음 journalctl여전히 1K보다 훨씬 더 보여줍니다. 마지막 부팅 이후의 모든 메시지를 보여줍니다.
Dan Dascalescu

18
이렇게하면 활성 로그가 아닌 아카이브 된 로그 만 지워지는 것 같습니다. 나는 journalctl --flush --rotate전에 달리기 를 시도했지만 journalctl --vacuum-time=1s더 많은 것을 제거했지만 여전히 모든 것은 아닙니다.
user60039

2
문서가 나에게 명확하지 않은 것 같습니다. 항상 2d로 설정되어 있습니까 (예 :)? 아니면 명령을 실행할 때부터 2d입니까? 어쩌면 이것이 어떻게 작동하는지 이해하지 못할 수도 있습니다.
저지 빈

84

일반적으로 저널을 직접 지우지 않습니다. 이는 시스템 자체에 의해 관리되며 새 데이터가 들어 오면 오래된 로그가 순환됩니다. 올바른 방법은 원하는만큼의 데이터 만 유지하도록 저널링을 예약하는 것입니다. 가장 일반적인 조정은 총 디스크입니다. 공간을 차지할 수 있습니다. 이 경계를 넘어 서면이 값 근처에 머물기 위해 오래된 항목을 던지기 시작합니다.

다음과 /etc/systemd/journald.conf같이 설정할 수 있습니다 .

SystemMaxUse=100M

11
좋습니다. 그러나 비정형적인 상황도 있습니다. 나는 그것들의 대부분이 이유로서 미학이라는 것을 알고 있지만 미학은 인간에게 유효한 이유입니다.).
Łukasz Zaroda

2
@ ŁukaszZaroda이 경우 "안전"을 정의해야합니다. 일반적으로 "데몬이 유지하도록 구성된 것을 날려 버리고 싶습니다"는 "안전"과 호환되지 않습니다. 강제로 실행하려면 서비스를 종료하고 로그 파일을 제로화하십시오. 정상적으로 작동하려면 질문의 매개 변수를 더 잘 정의해야합니다. "안전하다"는 무슨 뜻입니까?
Caleb

안전하다는 것은 새 공간에서 시작한 후 평소대로 작동한다는 것을 의미합니다.
Łukasz Zaroda 12

5
그것은하지 일반적인 상황이 될 수 있지만 경우에 따라서는, 예를 들면 인해 일부 systemd의 버그에 오래된 로그를 삭제 할 필요가 bbs.archlinux.org/viewtopic.php?pid=1173031#p1173031
diffycat는

1
특정 크기에 도달하지 않고 일정 시간이 지난 후 로그를 정리하려면 MaxRetentionSec대신 매개 변수 를 설정하면 됩니다 SystemMaxUse. 자세한 내용 man journald.conf은 참조하십시오.
joelostblom

52

Michael의 대답 에는 한 가지가 빠져 있습니다. 진공 청소기로 청소하면 보관 된 저널 파일 만 제거되고 활성 파일은 제거되지 않습니다. 모든 것을 제거하려면 최근 항목이 비활성 파일로 이동되도록 파일을 먼저 회전시켜야합니다.

따라서 모든 항목 을 제거하는 완전한 대답은

journalctl --rotate
journalctl --vacuum-time=1s

(이 journalctl명령 을 하나의 명령 으로 결합 할 수는 없습니다 .)

그건 그렇고, 일부 배포판은 로그를 디스크에 기록 /var/log/journal하고 다른 배포판은 로그를 메모리에 보관 하도록 저널링을 구성했습니다 ( /run/log/journal). 경우에 따라 journalctl --flush모든 것을 제거 하기 위해 먼저 사용해야 할 수도 있습니다 .

--rotate버전 이없는 경우 --since인수를 사용하여 항목을 필터링 할 수 있습니다 .

--since "2019-01-30 14:00:00"
--since today

journalctl : 알 수없는 옵션 '--rotate'
stiv

1
다른 답변이 다가오는 것을 얻는 동안 (장기 전략)-질문은 간단합니다. 지금 로그를 지우는 방법은 무엇입니까 (현재 작업에 장기적으로 관심이 없을 수도 있습니다). 이것은 다른 가정을하지 않고 그 질문에 대답하고 저널을 이해하는 데 다른 큰 가치를 더합니다. 이것이 답이되어야합니다.
Marc

1
이것은 나에게 유일한 도움이되었습니다. 감사!
Freedo

18

아치 리눅스에서 가장 가까운 것은 다음과 같습니다.

  • SystemMaxUse = 1M을 설정하도록 /etc/systemd/journald.conf를 편집하십시오
  • 저널 재시작 : sudo systemctl restart systemd-journald
  • 시스템 재설정 최대 사용량 = 200M
  • 저널 다시 시작

내 시스템에서 각 저널 파일은 8MB이며 위의 3을 제외한 모든 저널 파일은 총 크기가 ~ 25MB입니다.

내 유스 케이스는 BTRFS에 대한 CoW를 비활성화했습니다 (저널 디렉토리 및 하위 디렉토리에 대해서만) sudo chattr +C /var/log/journal/*. 문제는 속성이 새로 작성된 파일에만 설정되므로 저널을 비 우려는 욕구입니다.


4
실제로 사용 사례는 필요하지 않았습니다. 저널에서 CoW를 비활성화하는 요점은 자주 쓰여지는 것입니다. 그것은 오래된 회전 저널 파일의 경우가 아니며 단지 거기에 앉아 있습니다.
Hjulle

1
을 설정 SystemMaxUse=1K하고 다시 시작 systemd-journald했지만 journalctl에 여전히 원하는 항목이 표시됩니다. 일반 텍스트 파일에서이 진행 상황은 어떻습니까?
Dan Dascalescu

13

이후 --vacuum-time--vacuum-size나를 위해 일을하지 않았다 나는 다음과 같은했다 :

$ sudo find /var/log/journal -name "*.journal" | xargs sudo rm 
$ sudo systemctl restart systemd-journald

옳지 않지만 효과가있었습니다.


데비안 제시에서 경로는 /run/log입니다.
Synchro

1
이것 만이 나를 도왔다!
T.Todua

이것은 현재 정답입니다. journalctl 명령으로이 작업을 수행 할 수 있으면 좋지만 불가능한 것으로 보입니다.
Kevin Lyda

11

전체 로그를 정리하는 매우 무차별 대입 방법 :

$ sudo journalctl --vacuum-time=1seconds

--vacuum-size마이클 멘토 인으로 도 사용할 수 있습니다 .


5
작동하지 않았다. 실행 한 후에도 15 분 전의 항목이 계속 표시됩니다 systemctl restart systemd-journald.
Dan Dascalescu

1
여기도 마찬가지입니다. 이것은 나에게도 효과가 없었다. CentOS7을 실행 중입니다.
저지 빈

5

CentOS에서는 --rotate와 --vacuum-time = 1s가 모두 작동하지 않았습니다. 나는 이것을 다음과 같이 지울 수 있었다 :

sudo rm -rf /run/log/journal/*

에서 16 진수 이름을 가진 2 개의 디렉토리를 찾았습니다 ./journal. 이 journalctl명령은 가장 최근 의 명령에서만 작동합니다. 따라서 이전 디렉토리를 수동으로 삭제해야했는데 안전합니다. 저널 conf에서 크기를 제한 한 후
KeitelDOG

1
  1. 나중에 필요할 경우 백업하십시오.
    cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak

  2. 파일을 지우십시오 :
    cd /run/log/journal/<temp-string>/ >system.journal

  3. 최신 로그를 확인하십시오.
    journalctl -xe


1

journalctl -b최신 부팅에서만 표시됩니다. 당신은 또한 사용할 수 있습니다 -b -1, -b -2귀하의 끔찍한 일이 여전히 등을하지만 당신은 당신이 필요하지 않는 한, 그것을 볼 필요가 없습니다.


0

이전 답변이 "중복"되어 삭제되었습니다. 글쎄, 이전 답변에서 충분히 명확하지 않아서 죄송하지만 기존 답변과 다릅니다. 보다 정교한 버전은 다음과 같습니다.

journalctl -m --vacuum-time=1s나를 위해 트릭을했다. 통지 바랍니다 -m플래그 는 모든 저널을 병합 한 다음 전원을 정리. -m깃발이 없으면 내 경우 (CentOS-7에서) 아무것도 정리하지 않았습니다.

도움이 되길 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.