د 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 کې پټه قاعده، او هیڅ د لاګ ترتیب باید د یوه فعال تونل د بیا پیلولو دلیل نه شي۔

اړوندې مقالې