Yanıtlar:
Mail.log dosyasını sildiğinizde, rsyslog (ubuntu üzerinde) dosyaya gevşek tanıtıcı. Ubuntu'da tekrar çalışmasını sağlamak için lütfen şunu verin:
sudo service rsyslog restart
Bu sadece yeni bir dosya oluşturmakla kalmayacak, aynı zamanda günlükleri yazmaya başlayacaktır.
Bu, syslog'daki bir hatadır, ancak bir program tarafından açıkken bir dosyayı sildiğinde sık karşılaşılan bir sorunu gösterir. Bir "rm" yaptığınızda, bir dizin girdisini kaldırıyorsunuz ancak temel alınan dosyayı SİLMİYORSUNUZ. İşletim sistemi, dosyaya yapılan başvuruları tutar ve başvuru sayısı sıfıra gelene kadar temeldeki dosya verilerini silmez. Ortalama bir dosya durumunda, açılmamış dosyanın referans sayısı birdir (dizin girişi). Dosya açıldığında, sayı ikiye çıkarılır. İkinci bir program aynı dosyayı açarsa, sayım üçe çıkarılır. Dizin girişi şimdi silinirse, sayım ikiye düşürülür - bu, dosyanın anormal olduğu (adı yoktur),
/ Var / log / mail'i sildiğinizde, sistem günlükçüsü hala dosya yazmak için açıktır. Yeni bir / var / log / mail oluşturursanız, sistem kaydedicisinin şu anda yazdığı dosyadan farklı bir dosyayı gösterecektir. Her şeyi tutarlı hale getirmenin tek yolu sistem kaydediciyi yeniden başlatmaktır. Özgün sistem günlüğü sona erdiğinde, dizin girdisini sildiğiniz anonim posta günlüğü de dahil olmak üzere, ilişkili tüm dosyalar kapatılır. Sistem günlüğünü yeniden başlattığınızda, bir günlük mesajı yazması gerektiğinde yeniden açılacak / var / log / mail ve daha sonra açık kalacaktır.
Bunun sıklıkla keşfedilen bir başka yolu, çalışan bir programın tüm diski dosya verileriyle doldurmasıdır; kullanıcı çok büyük dosyayı siler, ancak dosya hala var olduğundan ve disk alanını kapladığı için disk alanı boşaltılmaz, ancak dizin girişi kaldırılmıştır. Program sona erdiğinde (kullanıcı onu öldürdüğü veya kendi kendine sona erdiği için), dosyadaki referans sayısı sıfıra ineceği için disk alanı kurtarılır.
Kaydedicinin bunu önlemek için yapabilecekleri ilk olarak günlük mesajını yazmak, günlük dosyası dizini girişinin var olup olmadığını kontrol etmek ve yoksa, günlük dosyasını kapatmak, yeni bir tane açmak ve ardından yeniden yazmaktır. mesaj - böylece mesaj kaybolmaz. Ancak tüm bunları yapmak için sistem kaydedicisinin sahip olması gerekenden çok daha fazla karmaşıklık gerekir - her ileti için ekstra dizin denetimi nedeniyle yazılması biraz daha uzun sürer - bu da dosya her seferinde başarılı olur Silinmedi.
Yukarıdakilerin tümünü daha açık bir şekilde anlamak için, aşağıdaki komut öğreticidir, çünkü dizin girişi kaldırmayı ve referans düşüşünü gerçekleştiren sistem çağrısını açıklar: "man 3 unlink"
CentOS 7'deki sorun bu değil. Birisi, postfix posta günlüklerinin günlükçüye gitmenin harika bir fikir olacağını düşündü. Postfix günlüklerini görmek istiyorsanız:
journalctl -u postfix
(tüm günlüğü görmek için)
journalctl -u postfix -f
(kütüğü kuyruğa almak için)
Postfix için main.cf dosyasına da ihtiyacınız olabilir.
syslog_name = postfix
journalctl --vacuum-time=1d