Journalctl ඉවත් කරන්නේ කෙසේද?


268

Systemd ජර්නලය ඉවත් කිරීමට මට ආරක්ෂිත ක්‍රමයක් ගූගල් හි සොයාගත නොහැකි විය. එසේ කිරීමට ආරක්ෂිත සහ විශ්වාසදායක ක්‍රමයක් කිසිවෙකු දන්නවාද?

මම යමක් අත්හදා බලමින් සිටි අතර මගේ ල logs ු-සටහන් විවිධ දෝෂ පණිවිඩ සමඟ පැටලී ඇත. එපමණක් නොව මම කොන්කි භාවිතා කරමින් මගේ ජර්නලය මගේ ඩෙස්ක්ටොප් එකේ ප්‍රදර්ශනය කරමි. මම මේ දේවල් නිවැරදි කරන භයානක දවසක් මට මතක් කර දෙන නිසා මට එම දෝෂ දැකීමට අවශ්‍ය නැත, මෙම භීෂණයෙන් පසු මට නැවුම් මිනිසෙකු මෙන් දැනෙන්නට අවශ්‍යය. ල logs ු-සටහන් ඉවත් කිරීමට මෙය වලංගු හේතුවක් බව සියලු දෙනා එකඟ වනු ඇතැයි මම සිතමි: P.

Answers:


377

ස්වයං නඩත්තු ක්‍රමය වන්නේ ප්‍රමාණයෙන් හෝ වේලාවෙන් ලොග් රික්ත කිරීමයි.

පසුගිය දින දෙක පමණක් රඳවා ගන්න:

journalctl --vacuum-time=2d

පසුගිය 500 MB පමණක් රඳවා ගන්න:

journalctl --vacuum-size=500M

man journalctl වැඩි විස්තර සඳහා.


12
නියම විධානය, නමුත් openSUSE 13.2 (වත්මන් ස්ථාවර නිකුතුව) සඳහා මට වැඩ කළේ නැත. සාමාන්‍යයෙන් කර්නල් සහ පරිශීලක භූමි වැඩසටහන් සම්බන්ධයෙන් ආරුක්කුව කැපී පෙනෙන අද්දර ඇති බව දන්නා කරුණකි, එබැවින් මම අනුමාන කළේ රික්ත විකල්ප මෑතකදී systemd වෙත එකතු කර ඇති අතර මගේ ඩිස්ට්‍රෝවට වැටී නැති බවය. මෙම විධානය systemd v218 හි එකතු කර ඇති බව 2014 දෙසැම්බර් 10 වන දින ලෙනාට්ගේ නිවේදනයෙන් techupdates.com/go/1002774 මගින් තහවුරු කර ඇත. මෙම ප්‍රකාශය එක් කිරීමෙන් මා වැනි වෙනත් කිසිවෙකුට ආරුක්කුවේ නොසිටින ලෙසට සමාන ප්‍රශ්නයක් තිබේ. කෙසේ හෝ ඉහළට.
ජෝෂුවා හියුබර්

8
උබුන්ටු 16.04 හි "systemd 229" අනුවාදයේ වැඩ කළේ නැත. journalctl --vacuum-size=1Kඉන්පසු journalctlතවමත් 1K ට වඩා වැඩි මාර්ගයක් පෙන්වයි. එය අවසන් ඇරඹුමේ සිට සියලුම පණිවිඩ පෙන්වයි.
ඩෑන් ඩස්කල්ස්කු

28
මෙය ඉවත් කරන්නේ සංරක්‍ෂිත ලොග් මිස ක්‍රියාකාරී ඒවා නොවේ. මම journalctl --flush --rotateකලින් දුවන්නට උත්සාහ කළ journalctl --vacuum-time=1sඅතර, එය සෑම දෙයක්ම නොතිබුණද, එය තවත් දේවල් ඉවත් කළේය.
user60039

2
ප්‍රලේඛනය මට එතරම් පැහැදිලි නැත. එය සැමවිටම 2d ලෙස සකසා තිබේද (ඔබේ උදාහරණයේ)? නැතහොත් ඔබ විධානය ක්‍රියාත්මක කරන වේලාවේ සිට 2d ද? සමහර විට මෙය හරියටම ක්‍රියාත්මක වන්නේ කෙසේදැයි මට වැටහෙන්නේ නැත.
ජර්සි බෝංචි

2
පරිස්සමින්, මම භාවිතා කළ sudo journalctl --vacuum-time=7dඅතර අද සිට ඉතිරිව ඇත්තේ ලොග් පමණි ... දෝෂ සහිත අංගයක් සේ පෙනේ
EarthMind

107

ඔබ සාමාන්‍යයෙන් ඔබම සඟරාව ඉවත් නොකරයි. එය කළමනාකරණය කරනු ලබන්නේ systemd විසින්ම වන අතර නව දත්ත පැමිණෙන විට පැරණි ල logs ු-සටහන් කරකවනු ලැබේ. කළ යුතු නිවැරදි දෙය නම් ඔබ උනන්දුවක් දක්වන තරම් දත්ත පමණක් තබා ගැනීම සඳහා ජර්නල්ඩ් උපලේඛනගත කිරීමයි. සකස් කිරීමට වඩාත්ම සුපුරුදු දෙය වන්නේ සම්පූර්ණ තැටියයි අවකාශය එය භාර ගැනීමට අවසර ඇත. එය මෙම සීමාව පසු කළ පසු එය මෙම අගය ආසන්නයේ රැඳී සිටීමට පැරණි ඇතුළත් කිරීම් ආරම්භ කරයි.

ඔබට මෙය එසේ සැකසිය හැකිය /etc/systemd/journald.conf:

SystemMaxUse=100M

13
හරි, නමුත් අද්විතීය තත්වයන් ද තිබේ. ඒවායින් බොහොමයක් සෞන්දර්යය පමණක් බව මම දනිමි, නමුත් සෞන්දර්යය යනු මිනිසාට වලංගු හේතුවකි;).
Łukasz Zaroda

2
As ŁukaszZaroda එවැනි අවස්ථාවක ඔබට "ආරක්ෂිත" යන්න අර්ථ දැක්වීමට සිදුවේ. සාමාන්‍යයෙන් "ඩීමන් තබා ගැනීම සඳහා වින්‍යාස කර ඇති දෙයක්" ආරක්ෂිත "සමඟ නොගැලපේ. ඔබට එය බල කිරීමට අවශ්‍ය නම් සේවාව වසා දමා ලොග් ගොනු ශුන්‍ය කරන්න. ඔබට එය සාමාන්‍යයෙන් ක්‍රියාත්මක වීමට අවශ්‍ය නම් ඔබේ ප්‍රශ්නයේ පරාමිතීන් වඩා හොඳින් අර්ථ දැක්විය යුතුය. "ආරක්ෂිත" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද?
කාලෙබ්

1
ආරක්ෂිතව, මම අදහස් කළේ එය ඉවත් කිරීමෙන් පසු එය සුපුරුදු පරිදි ක්‍රියාත්මක වනු ඇති බවයි.
Łukasz Zaroda

5
එය සාමාන්‍ය තත්වයක් නොවිය හැකි නමුත් සමහර විට සමහර පද්ධති දෝෂ නිසා පැරණි ල logs ු
difycat

1
ල logs ු-සටහන් යම් ප්‍රමාණයකට ළඟා වනවාට වඩා යම් කාලයකට පසු ඒවා පිරිසිදු කිරීම සඳහා, ඔබට MaxRetentionSecඒ වෙනුවට පරාමිතිය සැකසිය හැකිය SystemMaxUse. බලන්න man journald.confවැඩි විස්තර සඳහා.
joelostblom

77

මයිකල්ගේ පිළිතුරට එක් දෙයක් අස්ථානගත වී ඇත: රික්ත කිරීම මඟින් ඉවත් කරනු ලබන්නේ සංරක්ෂිත ජර්නල් ලිපිගොනු මිස ක්‍රියාකාරී ඒවා නොවේ. සෑම දෙයක්ම ඉවත් කිරීම සඳහා, ඔබ මුලින්ම ගොනු කරකැවිය යුතු අතර එමඟින් මෑත ඇතුළත් කිරීම් අක්‍රිය ලිපිගොනු වෙත ගෙන යනු ලැබේ.

එබැවින්, සියලු ඇතුළත් කිරීම් ඉවත් කිරීම සඳහා සම්පූර්ණ පිළිතුර පෙනේ

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

(ඔබට මෙය එක් journalctlවිධානයකට ඒකාබද්ධ කළ නොහැකි බව සලකන්න .)

මාර්ගය වන විට, සමහර බෙදාහැරීම් ජර්නල් වින්‍යාස කර ඇති අතර එමඟින් තැටියට ( /var/log/journal) ල logs ු-සටහන් ලියන අතර අනෙක් ඒවා ලොග් මතකයේ තබා ගනී ( /run/log/journal). සමහර අවස්ථාවල journalctl --flushසියල්ල ඉවත් කිරීමට පළමුව භාවිතා කිරීම අවශ්‍ය වනු ඇතැයි මම අපේක්ෂා කරමි .

ඔබ නැති නම් --rotateඔබේ ප්රකාශය තුළ, ඔබ භාවිතා කළ හැකිය --sinceපෙරහන ඇතුළත් කිරීම් තර්කය:

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

3
magazinectl: හඳුනා නොගත් විකල්පය '--rotate'
stiv

5
අනෙක් පිළිතුරු වෙත ළඟා වන දේ මට ලැබෙන අතර (දිගු කාලීන උපාය) - ප්‍රශ්නය සරල ය: ඔබ දැන් ල logs ු-සටහන් ඉවත් කරන්නේ කෙසේද (සමහර විට ඔබ ඔබේ වර්තමාන කාර්යය සඳහා දිගු කාලීනව උනන්දු නොවනු ඇත). මෙය වෙනත් උපකල්පන නොකර එම ප්‍රශ්නයට පිළිතුරු සපයන අතර ජර්නල්ක්ල් තේරුම් ගැනීමට තවත් විශාල වටිනාකමක් එක් කරයි. මෙය පිළිතුර විය යුතුය.
මාක්

2
මට ඇති එකම ප්‍රයෝජනවත් පිළිතුර මෙයයි. ස්තූතියි!
ෆ්‍රීඩෝ

3
මුල්ම ප්‍රශ්නය වූයේ "නිදොස් කිරීමේ අරමුණු සඳහා මගේ ලොග් නැවත සකසන්නේ කෙසේද" යන්නයි. එය ආමන්ත්‍රණය කරන එකම පිළිතුර මෙයයි. මම එය සොයා ගැනීම ගැන සතුටුයි. ඉතිරිය සිත්ගන්නාසුලු ජර්නල්ක් ෆැක්ටෝයිඩ්, නමුත් ප්‍රශ්නවලට පිළිතුරු නොවේ.
ට්‍රැවිස් ග්‍රිග්ස්

21

ආරුක්කු ලිනක්ස් හි, මට ඇති ආසන්නතම දෙය නම්:

  • SystemMaxUse = 1M සැකසීමට /etc/systemd/journald.conf සංස්කරණය කරන්න
  • ජර්නලය නැවත ආරම්භ කිරීම: sudo systemctl restart systemd-journald
  • SystemMaxUse = 200M නැවත සැකසීම
  • ජර්නලය නැවත ආරම්භ කිරීම

මගේ පද්ධතියේ, සෑම ජර්නල් ගොනුවක්ම 8MB වන අතර, ඉහත සියල්ල 3 හැර අනෙක් සියල්ලම ඉවත් කර ඇති අතර, මුළු ප්‍රමාණය M 25MB දක්වා ගෙන එයි.

මගේ භාවිත අවස්ථාව වූයේ බීටීආර්එෆ්එස් සඳහා CoW අක්‍රීය කිරීමයි (ජර්නල් නාමාවලිය සහ උප බහලුම් සඳහා පමණි) : sudo chattr +C /var/log/journal/*. ගැටළුව වන්නේ, ආරෝපණය සකසා ඇත්තේ අළුතින් සාදන ලද ලිපිගොනු මත පමණක් වන අතර එමඟින් ජර්නලය ගලායාමේ ආශාවයි.


5
ඔබේ භාවිත නඩුව ඇත්ත වශයෙන්ම අවශ්‍ය නොවීය. ජර්නලයේ CoW අක්‍රීය කිරීමේ කාරණය නම් එය නිතර ලියා ඇති බවයි. පැරණි භ්‍රමණය වූ ජර්නල් ලිපිගොනු සඳහා එය එසේ නොවේ, ඔවුන් එහි හිඳිති.
Hjulle

1
මම සකසා SystemMaxUse=1K, නැවත ආරම්භ කර ඇත systemd-journald, නමුත් ජර්නල්ක්ල් තවමත් මට අවශ්‍ය සටහන් පෙන්වයි. පැතලි පෙළ ලිපිගොනු වලින් මෙම ප්‍රගතිය කෙසේද?
ඩෑන් ඩස්කලෙස්කු

15

සිට --vacuum-timeහා --vacuum-sizeමම පහත සඳහන් කළේ මා වෙනුවෙන් දෙයක් කරන්න නැහැ:

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

එය හරි නැත, නමුත් එය ක්‍රියාත්මක විය.


ඩේබියන් ජෙසී මත, මාර්ගය /run/log.
සමමුහුර්ත

2
මෙය මට පමණක් උපකාර විය!
ටී. ටොඩුවා

දැනට නිවැරදි පිළිතුර මෙයයි. Journalctl විධානයට මෙය කළ හැකි නමුත් එය කළ නොහැකි බව පෙනේ.
කෙවින් ලිඩා

සමහර වැඩසටහන් ඔවුන්ගේ
ල logs ු

11

සම්පූර්ණ ලොගය පිරිසිදු කිරීම සඳහා ඉතා තිරිසන් බල ක්‍රමයක්:

$ sudo journalctl --vacuum-time=1seconds

ඔබට --vacuum-sizeමයිකල් මානසිකව භාවිතා කළ හැකිය.


5
වැඩ කළේ නැහැ. මිනිත්තු 15 කට පෙර ඇතුළත් කිරීම් තවමත් ධාවනයෙන් පසුව පවා පෙන්වයි systemctl restart systemd-journald.
ඩෑන් ඩස්කලෙස්කු

1
මෙහෙත් එහෙමයි. මෙය මටද සාර්ථක වූයේ නැත. මම CentOS7 ධාවනය කරනවා.
ජර්සි බෝංචි

5

--Rotate සහ --vacuum-time = 1s යන දෙකම CentOS හි මට වැඩ කළේ නැත. මට එය මේ ආකාරයෙන් ඉවත් කිරීමට හැකි විය:

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

1
මට ෂඩාස්රාකාර නම සහිත නාමාවලි 2 ක් හමු විය ./journal. මෙම journalctlවිධාන වඩාත් ම මෑත එක් ක්රියා කරයි. ඒ නිසා මට පැරණි නාමාවලිය අතින් මකා දැමීමට සිදු වූ අතර එය ආරක්ෂිතයි. මම ජර්නල් කොන්ෆරයේ ප්‍රමාණය සීමා කළ පසු.
කීටෙල්ඩෝග්

3

මගේ පෙර පිළිතුර "අනුපිටපත්" වීම නිසා මකා දමා ඇත. හොඳයි, මගේ පෙර පිළිතුරෙහි ප්‍රමාණවත් නොවීම ගැන කණගාටුයි, නමුත් එය පවතින පිළිතුරු වලට වඩා වෙනස් විය. එබැවින් වඩාත් සවිස්තරාත්මක අනුවාදයක් මෙන්න:

journalctl -m --vacuum-time=1sමට උපක්‍රමය කළා. කරුණාකර -mධජය සැලකිල්ලට ගන්න , එය ඔබගේ සියලු සඟරා ඒකාබද්ධ කර ඒවා පිරිසිදු කරයි. -mධජය නොමැතිව , එය මගේ නඩුවේ කිසිවක් පිරිසිදු කළේ නැත (CentOS-7 මත).

එය උපකාරී වේ යැයි සිතමි.


2

journalctl -bපෙන්වන්නේ නවතම ඇරඹුමෙන් පමණි. ඔබ ද භාවිතා කළ හැකිය -b -1, -b -2ඔබේ බිහිසුණු දිනය තවමත් තිබේ එහෙත් ඔබ ඔබට අවශ්ය නම්, එය දැකීමට කළ යුතු නැත ආදිය.


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. නවතම ල logs ු-සටහන් බැලීමට පරීක්ෂා කරන්න:
    journalctl -xe


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.