VPN-ის ჯანმრთელობის შემოწმება, რომელიც წუთში ერთ ხაზს ამატებს, ჩუმად ქმნის მეორე ვალდებულებას: გადაწყვიტოს, როგორ ტოვებენ ეს ხაზები დისკს. გვირაბის შეკეთება ამ ვალდებულებისთვის არაფერს აკეთებს, ხოლო ფაილის გადარქმევა არ გადაამისამართებს პროცესს, რომელიც ჯერ კიდევ ძველ აღწერილობას ინახავს. ჯერ უპასუხეთ დანიშნულების კითხვას, შემდეგ შეათანხმეთ ბრუნვა იმასთან, თუ როგორ ხსნის მწერალი მას.

დანიშნულება აირჩიეთ ბრუნვის პოლიტიკამდე

systemd-ის ერთეული, რომელიც უკვე აგზავნის თავის გამომავალს ჟურნალში, ინახავს შენახვას ერთ ადგილას. journald აწესებს ზღვრებს, როგორიცაა SystemMaxUse და MaxRetentionSec , ამიტომ იქ მოწერილი მზეთვალი ზღვარს იღებს ყოველგვარი დამატებითი სამუშაოს გარეშე. მის გვერდით მეორე შეუზღუდავი ფაილის დამატება ორმაგებს მოვლას სარგებლის გარეშე.

გამოყოფილი ფაილი იმსახურებს თავის ადგილს, როცა სხვა რამ კითხულობს მას: პარსერი, აუდიტის ექსპორტი ან გვერდი, რომელიც სტაბილურ გზას ელოდება. ამ გადაწყვეტილების შემდეგ ფაილს სჭირდება მფლობელი, რეჟიმი და ბრუნვის პოლიტიკა, რომლებიც ერთად დაიწერება, რადგან სამივე სწორია მხოლოდ როგორც ერთობლიობა. გზა, რომელიც ნებისმიერს შეუძლია შექმნას, ასევე გზაა, რომელიც ნებისმიერს შეუძლია ჩაანაცვლოს, ამიტომ კატალოგის ნებართვები იმავე ჩანაწერში ეკუთვნის. დაწერეთ ეს ყველაფერი შემოწმების გვერდით და შემდეგი რედაქტირება ამავე ფაქტებიდან დაიწყება.

დაწერეთ ბლოკი მწერლის შესაბამისად

დაიწყეთ მწერით, რომელიც ყოველ გამოძახებაზე ხსნის გზას, ამატებს ხაზს და გადის. ეს ნიმუში გადაურჩება ბრუნვას პროცესის ყოველგვარი თანამშრომლობის გარეშე, რადგან შემდეგი გაშვება ხსნის იმ ფაილს, რომელიც ამჟამად ამ გზაზეა. ქვემოთ მოცემული ბლოკი ინახავს ერთი კვირის ვერსიებს და ხელახლა ქმნის ფაილს მწერლისთვის საჭირო მფლობელითა და რეჟიმით:

/var/log/vpn-watchdog.log {
    daily
    rotate 7
    create 0600 root root
    missingok
    notifempty
}

logrotate-ის სახელმძღვანელო რაოდენობას განსაზღვრავს როგორც შენახული დაბრუნებული ვერსიების რაოდენობას, და არა როგორც შვიდი დღის ისტორიის გარანტიას, და daily საკვანძო სიტყვა ფასდება სამუშაოს გაშვებისას, ნაცვლად იმისა, რომ საკუთარი დამგეგმავი იყოს. უმეტეს დისტრიბუტივებში systemd-ის ტაიმერი ან cron-ის ჩანაწერი უკვე ფლობს ამ გამოძახებას, ამიტომ სანამ მეორეს დაამატებთ, შეამოწმეთ რომელი არსებობს. საკუთრების დამთხვევა უფრო მნიშვნელოვანია, ვიდრე შენახვის რაოდენობა. მხოლოდ root-ის რეჟიმის კოპირება სერვისის ანგარიშის მიერ დაწერილ ფაილზე აჩერებს ჟურნალს შემდეგ ბრუნვაზე, და ჩავარდნა საათების შემდეგ ჩნდება როგორც მოძველებული დროის ნიშანი და არა როგორც შეცდომა. დაადასტურეთ მწერლის მომხმარებელი, სანამ ბლოკს სხვა ადგილიდან დააკოპირებთ.

მწერალს, რომელიც არასდროს ხსნის ხელახლა, სხვა გამოსწორება სჭირდება

ხანგრძლივი პროცესი, რომელიც ღია აღწერილობას ინახავს, აგრძელებს წერას გადარქმეულ inode-ში. ადგილი არ თავისუფლდება და ხილული ფაილი წყვეტს ზრდას, რაც გატეხილ ბრუნვას ჰგავს, სანამ inode-ს არ შეამოწმებთ. ან ასწავლეთ პროცესს ხელახლა გახსნა, ან აიძულეთ ბრუნვა დააკოპიროს და მოჭრას გადარქმევის ნაცვლად.

ხელახლა გახსნის გზა უფრო სუფთაა იქ, სადაც პროგრამა მას მხარს უჭერს: გაგზავნეთ დოკუმენტირებული სიგნალი ან გაუშვით დოკუმენტირებული ბრძანება და მიეცით პროცესს თავად გახსნას ახალი ფაილი. ალტერნატივაა copytruncate , რომელიც შიგთავსს ბრუნვის სახელზე აკოპირებს და შემდეგ ორიგინალს ადგილზე ჭრის, ასე რომ აღწერილობა ძალაში რჩება, მაგრამ კოპირებასა და ჭრას შორის მოხვედრილი ჩანაწერები იკარგება.

systemd-ის მიერ გაშვებული ერთეულებისთვის StandardOutput მიუთითეთ ჟურნალზე ან ფაილზე და მიეცით ერთეულს სიცოცხლის ციკლის ფლობა. shell-ის ციკლი, რომელიც ზომის ზღვრის გარეშე ამატებს tee -a-ის მეშვეობით, ის განლაგებაა, რომელიც შეფერხების დროს ავსებს დანაყოფს, რადგან ჩავარდნილი შემოწმება ხშირად გაცილებით მეტს წერს, ვიდრე ჯანმრთელი.

შეამოწმეთ ბრუნვა ტაიმერის მოლოდინის გარეშე

გამართვის რეჟიმი აცნობს, რა მოხდებოდა და არაფერს ეხება, რაც მას რედაქტირების შემდეგ უსაფრთხო პირველ გაშვებად აქცევს. როცა კმაყოფილი ხართ, აიძულეთ ნამდვილი ბრუნვა, შემდეგ დაადასტურეთ, რომ შემდეგი ჟურნალის ხაზი ახალ ფაილში ხვდება და არა გადარქმეულში:

logrotate -d /etc/logrotate.d/vpn-watchdog
logrotate -f /etc/logrotate.d/vpn-watchdog
ls -l /var/log/vpn-watchdog.log*
tail -n 3 /var/log/vpn-watchdog.log
df -h /var/log

წაიკითხეთ გამომავალი ამ თანმიმდევრობით. გამართვის გავლამ უნდა დაასახელოს ფაილი და განზრახული მოქმედებები; იძულებითმა გაშვებამ უნდა წარმოქმნას მოსალოდნელი ბრუნვის სახელი; tail-მა უნდა აჩვენოს ახალი ჩანაწერი მას შემდეგ, რაც მწერალი კვლავ იმუშავებს. მზარდი df მნიშვნელობა და მცირე ხილული ფაილი ნიშნავს ზემოთ აღწერილ აღწერილობის პრობლემას.

გაიმეორეთ იძულებითი გაშვება ორჯერ, რომ ნახოთ, როგორ იქცევა შენახვა, როცა ვერსიები უკვე არსებობს. უძველესი ფაილის წაშლა მოსალოდნელი შედეგია, და წაშლის არქონა ჩვეულებრივ ნიშნავს, რომ ბრუნვის სახელში რაოდენობა ან ველური სიმბოლო არ ემთხვევა იმას, რაც logrotate-მა შექმნა.

შეინახეთ უკუქცევა და წერილობითი ჩანაწერი

შეინახეთ წინა ბლოკი რედაქტირებამდე და აღნიშნეთ, რომელი დამგეგმავი უშვებს მას, რადგან უკუქცევა, რომელიც ფაილს აბრუნებს, მაგრამ ტაიმერს არა, თავდაპირველი პრობლემის ნახევარს ამრავლებს. აღდგენის შემდეგ ერთხელ ხელით დაატრიალეთ, შემდეგ დაადასტურეთ, რომ მწერლის ანგარიშს შეუძლია ჟურნალის გზაზე წერა. თუ სერვისი systemd-ის ქვეშ მუშაობს, ნებისმიერი ცვლილების შემდეგ მისი გამომავალის გადამისამართებაში ხელახლა ჩატვირთეთ ერთეული, რადგან მოქმედი პროცესი კვლავ ძველ სამიზნეზე წერს. თავად წაიკითხეთ შემდეგი რამდენიმე ჟურნალის ხაზი, ნაცვლად იმისა, რომ დაეყრდნოთ ერთეულის სუფთად დაბრუნებას.

ჩაწერეთ რეჟიმი, მფლობელი, შენახვის რაოდენობა და მოსალოდნელი დისკის ბიუჯეტი თავად შემოწმების გვერდით. როცა მოგვიანებით შემოწმება ერთჯერადი სკრიპტიდან დემონად გადაიქცევა, ბრუნვის პოლიტიკა მასთან ერთად უნდა შეიცვალოს, და ის ჩანაწერი ეუბნება შემდეგ ადამიანს, რომელი ვარაუდი გატყდა.

ბოლოს, ჟურნალის გადაწყვეტილება გამოყავით აღდგენის გადაწყვეტილებისგან. ჩავარდნილი შემოწმება უნდა მიჰყვეს კავშირის საკუთარ აღდგენის პოლიტიკას და არა logrotate-ში დამალულ წესს, და არცერთი ჟურნალის განლაგება არ უნდა იყოს მომუშავე გვირაბის გადატვირთვის მიზეზი.

დაკავშირებული სტატიები