
리눅스 시스템 로깅은 systemd. 사용법을 배우십시오 journalctl 시스템 로그 메시지를 읽고 필터링하는 명령입니다.
중앙 로깅
논쟁에 익숙한 사람은 없습니다. systemd 시스템 및 서비스 관리자는 시스템 로그를 수집하는 방식이 크게 변경되었습니다. 로그는 생성 한 서비스 또는 데몬에 따라 파일 시스템의 다른 위치에있었습니다. 그러나 그들은 모두 한 가지 공통점이있었습니다. 그들은 평문 파일이었다.
와 systemd 모든 시스템, 부팅 및 커널 로그 파일은 중앙의 전용 로깅 솔루션으로 수집 및 관리됩니다. 이들이 저장되는 형식은 이진 형식입니다. 이것이 촉진하는 한 가지는 JSON과 같은 다른 형식으로 데이터를 추출 할 수 있다는 것입니다.
또한 이전에 별도의 로그 파일에 기록 된 관련 정보를 쉽게 참조 할 수 있습니다. 이제 데이터가 단일 저널에 보관되므로 여러 관심있는 소스의 데이터를 선택하여 하나의 짜여진 항목 목록으로 표시 할 수 있습니다.
journalctl 저널 작업에 사용되는 도구입니다.
프릴이없는 journalctl
당신은 호출 할 수 있습니다 journalctl 명령 행 매개 변수없이 :
journalctl

journalctl 목록의 맨 위에 가장 오래된 항목과 함께 전체 저널이 표시됩니다. 목록이 표시됩니다 less의 일반적인 탐색 기능을 사용하여 페이지를 만들고 검색 할 수 있습니다. less. 당신은 또한 사용할 수 있습니다 Left Arrow 과 Right Arrow 넓은 로그 항목을 읽기 위해 옆으로 스크롤하는 키.

누르면 End 키는 목록의 맨 아래 및 최신 로그 항목으로 바로 이동합니다.

프레스 Ctrl+C 나가기 위해서.
관련 : Linux에서 less 명령을 사용하는 방법
이기는 하지만 journalctl 사용하지 않고 호출 가능 sudo를 사용하면 로그에 모든 세부 정보가 표시됩니다. sudo.
sudo journalctl

필요한 경우 만들 수 있습니다 journalctl 출력을 대신 터미널 창으로 보냅니다. less을 사용하여 --no-pager 선택권.
sudo journalctl --no-pager

출력이 터미널 창을 통해 빠르게 스크롤되고 명령 프롬프트로 돌아갑니다.

줄 수를 제한하려면 journalctl 반환, 사용 -n (라인) 옵션. 10 줄의 출력을 요청합시다 :
sudo journalctl -n 10

저널 업데이트 다음
만들다 journalctl 저널에 도착한 최신 항목을 표시하려면 -f (따라) 옵션.
sudo journalctl -f


최신 항목의 타임 스탬프는 07:09:07입니다. 새로운 활동이 발생하면 새로운 항목이 디스플레이 하단에 추가됩니다. 거의 실시간 업데이트 — 멋지다!

07:09:59에 geek-app “HTG의 새 메시지”라고 적힌 로그에 저널을 삽입했습니다.
디스플레이 형식 변경
저널은 이진 파일이기 때문에 저널에 표시되기 전에 저널의 데이터를 텍스트로 변환하거나 구문 분석해야합니다. 다른 파서를 사용하면 동일한 이진 소스 데이터에서 다른 출력 형식을 만들 수 있습니다. 몇 가지 다른 형식이 있습니다 journalctl 사용할 수 있습니다.
기본 출력은 짧은 형식으로, 클래식 시스템 로그 형식과 매우 유사합니다. 짧은 형식을 명시 적으로 요청하려면 -o (출력) 옵션 short 수정 자.
sudo journalctl -n 10 -o short-full

왼쪽에서 오른쪽으로 필드는 다음과 같습니다.
- 메시지가 작성된 시간 (현지 시간)
- 호스트 이름
- 프로세스 이름 이것이 메시지를 생성 한 프로세스입니다.
- 로그 메시지
완전한 날짜 및 시간 소인을 얻으려면 short-full 수정 자 :
sudo journalctl -n 10 -o short-full

이 출력의 날짜 및 시간 형식은 곧 볼 수 있듯이 기간별로 로그 메시지를 선택할 때 날짜 및 시간을 제공해야하는 형식입니다.
각 로그 메시지와 함께 제공되는 모든 메타 데이터를 보려면 verbose 수정 자.
sudo journalctl -n 10 -o verbose

가능한 필드는 많지만 모든 필드가 메시지에 나타나는 경우는 거의 없습니다.

논의 할 가치가있는 한 가지 분야는 Priority 들. 이 예에서 값은 6입니다.이 값은 메시지의 중요도를 나타냅니다.
- 0: 비상. 시스템을 사용할 수 없습니다.
- 1: 경고. 즉시 정정해야하는 조건이 플래그되었습니다.
- 2: 위독한. 여기에는 기본 응용 프로그램의 충돌, 코어 덤프 및 심각한 오류가 포함됩니다.
- 삼: 오류. 오류가보고되었지만 심각한 것으로 간주되지는 않습니다.
- 4: 경고. 무시하면 오류가 될 수있는 상태를주의해서 가져옵니다.
- 5: 공지 사항. 비정상이지만 오류는 아닌 이벤트를보고하는 데 사용됩니다.
- 6: 정보. 정기적 인 운영 메시지. 조치가 필요하지 않습니다.
- 7: 디버그. 디버깅하기 쉽도록 메시지를 응용 프로그램에 넣습니다.
출력이 올바르게 구성된 JSON (JavaScript Object Notation) 오브젝트로 표시되도록하려면 json 수정 자 :
sudo journalctl -n 10 -o json

각 메시지는 올바른 형식의 JSON 오브젝트로 올바르게 랩핑되며 출력 라인 당 하나의 메시지를 표시합니다.
JSON 출력을 예쁘게 인쇄하려면 json-pretty 수정 자.
sudo journalctl -n 10 -o json-pretty

각 JSON 객체는 여러 줄로 나뉘며 각 이름-값 쌍은 새 줄에 있습니다.

타임 스탬프 또는 기타 메타 데이터없이 로그 항목 메시지 만 보려면 cat 수정 자 :
sudo journalctl -n 10 -o cat

이 표시 형식을 사용하면 일부 메시지에 실마리가 포함되어 있지만 로그 이벤트를 발생시킨 프로세스를 식별하기가 어려울 수 있습니다.

기간별 로그 메시지 선택
출력을 제한하려면 journalctl 관심있는 기간에 -S (부터) 그리고 -U 옵션까지.
특정 시간 및 날짜 이후의 로그 항목을 보려면 다음 명령을 사용하십시오.
sudo journalctl -S "2020-91-12 07:00:00"

디스플레이에는 명령에서 날짜 및 시간 이후에 도착한 메시지 만 포함됩니다.

보고하려는 기간을 정의하려면 -S (부터) 그리고 -U (옵션까지) 함께. 이 명령은 15 분 동안의 로그 메시지를 확인합니다.
sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00"

시스템에서 이상한 일이 발생했을 때와 대략 일어 났을 때이를 잘 조합하여 사용할 수 있습니다.

상대 기간 사용
기간을 선택할 때 상대 주소를 사용할 수 있습니다. 즉,“하루 전부터 지금까지 모든 이벤트를 보여주십시오.”와 같은 것을 말할 수 있습니다. 이것이 바로이 명령의 의미입니다. “d”는 “day”를 나타내고 “-1″은 과거의 하루를 의미합니다.
sudo journalctl -S -1d

로그 메시지는 어제 00:00:00부터 “지금”까지 표시됩니다.

최근에 발생한 일을 조사하려는 경우 시간 단위로 측정되는 상대 시간을 지정할 수 있습니다. 지난 1 시간 동안의 로그 메시지를 검토 중입니다.
sudo journalctl -S -1h

지난 1 시간 동안의 메시지가 표시됩니다. “m”을 사용하여 분 단위로 측정 된 상대 시간을 설정하고 몇 주 동안 “w”를 설정할 수도 있습니다.

journalctl 이해한다 today, yesterday, tomorrow. 이 수정자는 공통 시간을 지정하는 편리한 방법을 제공합니다. 어제 발생한 모든 이벤트를 보려면 다음 명령을 사용하십시오.
sudo journalctl -S yesterday

어제 발생한 00:00:00까지의 모든 저널 로그 이벤트가 검색되어 표시됩니다.

지금까지받은 모든 로그 메시지를 보려면 다음 명령을 사용하십시오.
sudo journalctl -S today

00:00:00부터 명령이 실행될 때까지 모든 것이 표시됩니다.

다른 시간대 수정자를 혼합 할 수 있습니다. 이틀 전부터 오늘 시작까지 모든 것을 보려면 다음 명령을 사용하십시오.
sudo journalctl -S -2d -U today

어제 전날부터 오늘까지의 모든 것이 검색되어 표시됩니다.

데이터 필드별로 로그 메시지 선택
광범위한 저널 필드와 일치하는 로그 메시지를 검색 할 수 있습니다. 이러한 검색은 각 메시지에 첨부 된 메타 데이터에서 일치하는 항목을 찾으려고합니다. 필드 목록을 참조하여 가장 유용한 필드를 선택하는 것이 좋습니다.
응용 프로그램이 모든 필드를 완료하는지 여부는 전적으로 응용 프로그램 작성자에게 달려 있습니다. 모든 필드가 채워지는 것을 보장 할 수는 없습니다.
모든 저널 필드 수정자는 동일한 방식으로 사용됩니다. 아래 예에서 몇 가지를 사용하겠습니다. 특정 응용 프로그램에서 로그 메시지를 찾으려면 _COMM (명령) 수정 자. 당신이 또한 사용하는 경우 -f (따라) 옵션, journalctl 도착하면이 애플리케이션에서 새 메시지를 추적합니다.
sudo journalctl -f _COMM=geek-app

로그 메시지를 생성 한 프로세스의 프로세스 ID를 사용하여 로그 항목을 검색 할 수 있습니다. 사용 ps 검색 할 데몬 또는 애플리케이션의 프로세스 ID를 찾는 명령입니다.
sudo journalctl _PID=751

이 기사를 연구하는 데 사용 된 머신에서 SSH 데몬은 프로세스 751입니다.

사용자 ID로 검색 할 수도 있습니다. 응용 프로그램이나 명령을 시작한 사람 또는 프로세스를 소유 한 사람의 사용자 ID입니다.
sudo journalctl _UID=1000

다른 사용자 ID와 관련된 모든 메시지가 필터링됩니다. 사용자 1000과 관련된 메시지 만 표시됩니다.

특정 응용 프로그램과 관련된 로그 메시지를 검색하는 다른 방법은 실행 파일의 경로를 제공하는 것입니다.
sudo journalctl /usr/bin/anacron

모든 anacron 스케줄러 로그 메시지가 검색되어 표시됩니다.

보다 쉽게 검색 할 수 있도록 journalctl 저널 필드에 대해 보유하고있는 모든 값을 나열합니다.
사용자 ID를 보려면 journalctl 에 대한 로그 메시지를 기록했습니다. -F (필드) 옵션을 전달하고 _UID 필드 식별자.
journalctl -F _UID

다시 한 번 그룹 ID (GID)를 살펴 보겠습니다.
journalctl -F _GID

모든 저널 필드 ID로이를 수행 할 수 있습니다.
커널 메시지 나열
커널 메시지를 빠르게 격리 할 수있는 기본 제공 방법이 있습니다. 직접 검색하고 분리 할 필요가 없습니다. 그만큼 -k (커널) 옵션은 다른 모든 메시지를 제거하고 커널 로그 항목을 즉시 보여줍니다.
sudo journalctl -k

강조 표시는의 값에 따라 메시지의 중요성을 반영합니다. Priority 들.

부팅 메시지 검토
부팅과 관련하여 조사하려는 문제가있는 경우, journalctl 당신은 덮여있다. 새 하드웨어를 추가했는데 응답하지 않거나 마지막 시스템 업그레이드 후에 이전에 작동하던 하드웨어 구성 요소가 더 이상 작동하지 않을 수 있습니다.
마지막 부팅과 관련된 로그 항목을 보려면 -b (부팅) 옵션 :
journalctl -b

마지막 부팅에 대한 로그 항목이 표시됩니다.

“마지막 부팅”이라고 말하면 현재 로그인 한 세션 동안 컴퓨터를 활성화시키는 부팅 프로세스를 의미합니다. 이전 부츠를 보려면 숫자를 사용하여 journalctl 관심있는 부팅. 세 번째 이전 부팅을 보려면 다음 명령을 사용하십시오.
journalctl -b 3

일반적으로 문제가 발생하여 컴퓨터를 재부팅해야한다면 이전 부팅 순서에 해당합니다. 따라서 일반적인 명령 형식입니다.

부츠 순서와 혼동하기 쉽습니다. 도움을 요청할 수 있습니다 journalctl 저널에 기록 된 부츠를 나열하려면 --list-boots 선택권.
journalctl --list-boots

날짜 및 타임 스탬프에서 메시지를 보려는 부팅을 식별 한 다음 왼쪽 열의 숫자를 사용하여 해당 부팅 순서에 대한 로그 메시지를 얻을 수 있습니다. 32 비트 부팅 식별자를 선택하여 전달할 수도 있습니다. journalctl.
sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

요청한 부팅 순서의 로그 메시지가 검색되어 표시됩니다.

저널 하드 드라이브 공간 관리
물론 저널과 모든 로그 메시지는 하드 드라이브에 저장됩니다. 그것은 그들이 하드 드라이브 공간을 차지한다는 것을 의미합니다. 저널이 얼마나 많은 공간을 차지했는지 확인하려면 --disk-usage 선택권.
journalctl --disk-usage

오늘날의 하드 드라이브를 사용하면 152MB의 공간이 부족하지 않지만 시연을 위해 여전히 하드 디스크 공간을 줄입니다. 두 가지 방법이 있습니다. 첫 번째는 저널을 축소하려는 크기 제한을 설정하는 것입니다. 물론 다시 성장할 것이지만 이제는 새로운 성장에 대비할 수 있습니다.
우리는 멋진 제목을 사용합니다 --vacuum-size 옵션을 선택하고 저널 크기를 줄이십시오. 100MB를 요청합니다. 이것을 생각하는 방법은 우리가 묻는 것입니다 journalctl “가능한 모든 것을 버려야하지만 100MB 이하로 떨어지지 마십시오.”
journalctl --vacuum-size=100M

저널 크기를 다듬는 다른 방법은 --vacuum-time 선택권. 이 옵션은 journalctl 명령 줄에 제공 한 기간보다 오래된 메시지를 삭제합니다. 당신이 사용할 수있는 days, weeks, months, years 그 기간 동안.
일주일이 지난 모든 메시지를 제거하십시오.
journalctl --vacuum-time=1weeks

데이터 대 정보
데이터를 입수하여 활용할 수 없다면 데이터는 유용하지 않습니다. 그러면 유용한 정보가됩니다. 그만큼 journalctl command는 다양한 방법으로 관심있는 정보를 얻을 수있는 유연하고 정교한 도구입니다.
필요한 로그 메시지에 대한 정보 스 니펫 만 사용할 수 있습니다.








