Sistem günlüğümün boyutunu nasıl sınırlayabilirim?


14

Annemin bilgisayarında Ubuntu 12.04 LTS çalışıyor. Çok iyi çalışıyor ama ani sistem günlüğü doluyor. Doldurmak istediğim, sadece /var/log/syslog400GB boyutunda bir dosyayı sildim . Evet - Gigabayt.

Orada bazı yararlı bilgiler olduğundan emin olsam da, 400GB'ın elemek için herhangi bir bilgi olduğundan emin değilim. Ve bu konuda gerçekten şaşırtıcı olan şey, 8 saatlik bir süre içinde gerçekleşmiş olmasıydı - dföğlen koştum ve o zamanla şu anki sürüşü% 30'u doldurdu (% 70'in altından% 100'e kadar).

Buna ne neden olabilir ve nasıl düzeltebilirim? ''

EDIT usb suçlu gibi görünüyor:

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use

2
Boyutu sınırlamak yerine, onu neyin doldurduğunu bulmaya çalışmanız gerektiğini söyleyebilirim. Çok sayıda tekrarlanan mesaj olmalı tail -n20 /var/log/syslog, son 20 satıra bir göz atmak için koşmayı deneyin .
mikewhatever

Dosyaya zarar vermeden önce denedim - hiçbir şey tekrarlanmıyor gibiydi, ama tekrar bakacağım
Wayne Werner

Yani bu, Google'da hiçbir şey bulamadığım "demond_nscan" sorunu gibi görünüyor. nscanbir bağlantı noktası tarama uygulamasıdır, bu yüzden bu bir başkasının modifikasyonu olabilir (ama sadece teori veriyorum). Bu, açıkça çalıştırmaya çalıştığınız bir uygulama değilse, yürütülebilir dosyayı (benzeri bir şey find / -iname demond_nscan) bulmaya çalışmanızı ve yeniden adlandırılmasını / yürütülebilir olmayan şekilde izinlerini değiştirmenizi öneririm . (Bu şekilde, eğer bir şey için gerçekten önemliyse, onu kaybetmediniz ve başka bir şey tarafından başlatılmışsa, fark edebilirsiniz. Ayrıca, kontrol et crontab -l?
Steve Kroon

1
demond_nscan, lexmark tarama sürücüleri ile ilgili gibi görünüyor.
Wayne Werner

Yanıtlar:


12

Büyük miktarda iletiye neyin neden olduğunu bulmalısınız, bu sorunu giderirseniz büyük günlük dosyasını düzeltirsiniz.

Ancak, o zamana kadar aşağıdakilerden birine bir günlük döndürme tabanı koyabilirsiniz.

  • zaman (ör. her gün döndür)
  • boyut (ör. dosya 10mb'ye ulaştığında döndür)

Bu, varsayılan olarak sistemde önceden ayarlanacaktır: /etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

Buradan bunu, / var / log / syslog dosyasına he dönecektir görebilirsiniz günlük ve tutmak 7 kopya döndürülmüş dosyasının.

Bunu, 1mb diyelim boyut sınırında döndürülecek şekilde değiştirebilir veya sakladığı kopya sayısını azaltabilirsiniz.

Uyarı: Bu, sorununuzun temel nedenini düzeltmez , ancak dosya sisteminin dolmasını durduracağı için size biraz zaman kazandıracaktır.

  • Kaynak: /etc/logrotate.d/rsyslog
  • Kaynak: man logrotate

2
Bu, gerçek sistem günlüğünün boyutunu sınırlamaz!
abu_bua

6

Logrotate boyutunu sınırlayın

/etc/logrotate.d/syslogYapılandırma dosyasını açın

sudo nano /etc/logrotate.d/syslog

Dosya sth görünüyor. sevmek

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

Örneğin size 100k parantez içine ekleyin . Daha sonra şöyle görünmelidir:

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Bunun, gerçek syslog dosyasını değil, dönen dosyaların dosya boyutunu sınırladığını unutmayın. Dosya 'yı kaydet. Logrotate chron işi bir sonraki başladığında, döndürülen günlüklerin boyutunu sınırlar.

Geçerli sistem günlüğünün boyutunu sınırla

Boyutunu sınırlamak için /var/log/syslog, öğesini düzenlemeniz /etc/rsyslog.d/50-default.confve sabit bir günlük boyutu ayarlamanız gerekir.

Aşağıdaki satırı değiştirerek bu ayarı ekleyin veya değiştirin /etc/rsyslog.d/50-default.conf:

.*;auth,authpriv.none       -/var/log/syslog

İşte rsyslog kılavuzundan bir alıntı :

Çıkış kanalları$ outchannel yönergesi ile tanımlanır. Sözdizimi aşağıdaki gibidir: $ outchannel name, dosya adı, max-boyut, max-boyutta eylem adı çıkış kanalının adıdır (dosya değil), dosya adı yazılacak dosya adıdır , maksimum boyut, izin verilen maksimum boyut ve maks. boyut üzerinde işlem, maksimum boyuta ulaşıldığında verilecek bir komut. Bu komut her zaman tam olarak bir parametreye sahiptir. İkili, ilk boşluktan önceki maksimum boyut üzerindeki eylemin bir parçasıdır, parametresi bu alanın arkasındaki her şeydir. Günlük mesajını dosyaya yazmadan ÖNCE maksimum boyutun sorgulandığını lütfen unutmayın. Bu nedenle, herhangi bir iletinin sığabilmesi için bu sınırı makul şekilde ayarladığınızdan emin olun. Mevcut sürüm için, beklediğinizden 1k daha düşük ayarlanması faydalıdır. Maksimum boyut her zaman bayt cinsinden belirtilmelidir - özel sembol yoktur (1k, 1m gibi, …) Bu gelişme noktasında. $ Outchannel'in sadece "name" olan bir kanalı tanımladığını unutmayın. Etkinleştirmez. Bunu yapmak için bir seçici çizgi kullanmalısınız (aşağıya bakın). Bu seçim satırı, kanal adını ve önünde bir $ işareti içerir. Bir örnek şunlar olabilir:. : omfile: $ mychannel Şu anki biçiminde, çıktı kanalları öncelikle bir çıktı dosyasını boyut sınırlaması olanağı sağlar. Bunu yapmak için bir maksimum boyut belirtin. Bu boyuta ulaşıldığında, rsyslogd maksimum boyutta eylem komutunu yürütür ve ardından dosyayı yeniden açar ve yeniden dener. Komut, günlük döndürme komut dosyası veya benzeri bir şey olmalıdır.

Maks-size-size-boyutlu komut yoksa veya komut durumu çözmediyse, dosya kapatılır ve rsyslogd tarafından asla yeniden açılmaz (elbette huping hariç). Bu mantık, ilk olarak 2GB daha büyük dosyalarla ciddi sorunlar yaşadığımızda entegre edildi, bu da rsyslogd boşaltma çekirdeğine yol açabilir. Bu gibi durumlarda, tek bir dosyaya yazmayı durdurmak daha uygundur. Bu arada, rsyslogd 2GB'den büyük dosyaları destekleyecek şekilde düzeltildi, ancak açıkçası sadece bunu yapan dosya sistemleri ve işletim sistemi sürümlerinde. Bu yüzden 2GB'lık bir dosya boyutu sınırını zorlamak mantıklı olabilir.

İşte max boy 1MB olduğunu daha önce bu hattı yerleştirmek *.*; ...hattı

$outchannel mysyslog,/var/log/syslog,1048576

ve *.*; ...satırı

*.*;auth,authpriv.none  :omfile:$mysyslog

Rsyslogd dosyasını yeniden başlat

sudo service rsyslog restart

0

Aynı sorunu iki hafta boyunca Lexmark Pro915 ile yaşadım. İki şey yaptım ve şimdi iyi çalışıyor. Sürücüyü yeniden yükledim. (Bunun yardımcı olduğunu düşünmeyin.) Toplam uzunluğu neredeyse 15 'olan ve tamamen uyumlu olmayan USB uzantısını çıkardım. Linux sistemleri için Lexmark sürücüsünün zayıf veya kötü zamanlanmış bir sinyal algıladığından ve size günde 10 milyar kez anlatmak isteyebileceğinden şüpheleniyorum. Bağlantınızı bir şekilde geliştirmeyi deneyin.

Logrotate ve benzeri çözümler bana yardımcı olmadı. Kern.log ve syslog birlikte günde 1 TB'tan fazla günlüğe kaydediliyordu! Logrotate, on iki dakikada bir çalışacak şekilde ayarlayabilirseniz yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.