logrotate - يقوم بتدوير وضغط وإرسال سجلات النظام عبر البريد الإلكتروني
ملخص
logrotate [–force] [–debug] [–state file] [–skip-state-lock] [–wait-for-state-lock] [–verbose] [–log file] [–mail command] config_file [config_file2 ...]
الوصف
تم تصميم logrotate لتسهيل إدارة الأنظمة التي تولد أعدادًا كبيرة من ملفات السجلات.
يسمح بالتدوير التلقائي وضغط وإزالة وإرسال ملفات السجلات عبر البريد الإلكتروني. يمكن التعامل مع كل ملف سجل يوميًا أو أسبوعيًا أو شهريًا أو عندما يصبح كبيرًا جدًا.
عادةً ما يتم تشغيل logrotate كوظيفة cron يومية. لن يقوم بتعديل السجل أكثر من مرة في اليوم ما لم يكن معيار السجل يعتمد على حجم السجل ويتم تشغيل logrotate أكثر من مرة في اليوم، أو ما لم يتم استخدام الخيار -f أو --force.
يمكن إعطاء أي عدد من ملفات التكوين على سطر الأوامر. يمكن أن تتجاوز ملفات التكوين اللاحقة الخيارات المعطاة في الملفات السابقة، لذلك فإن ترتيب سرد ملفات تكوين logrotate مهم. عادةً، يجب استخدام ملف تكوين واحد يتضمن أي ملفات تكوين أخرى مطلوبة. انظر أدناه للحصول على مزيد من المعلومات حول كيفية استخدام التوجيه "include" لتحقيق ذلك. إذا تم إعطاء دليل على سطر الأوامر، فسيتم استخدام كل ملف في هذا الدليل كملف تكوين.
إذا لم يتم إعطاء أي وسيطات لسطر الأوامر، فسيقوم logrotate بطباعة الإصدار ومعلومات حقوق النشر، بالإضافة إلى ملخص قصير للاستخدام. إذا حدثت أي أخطاء أثناء تدوير السجلات، فسوف يخرج logrotate بحالة غير صفرية، على الرغم من تحديث ملف الحالة.
الخيارات
-f, --force
يخبر logrotate بإجراء التدوير بالقوة، حتى لو لم يعتقد أنه ضروري. في بعض الأحيان يكون هذا مفيدًا بعد إضافة إدخالات جديدة إلى ملف تكوين logrotate، أو إذا تمت إزالة ملفات السجل القديمة يدويًا، حيث سيتم إنشاء الملفات الجديدة، وسيستمر التسجيل بشكل صحيح.
-d, --debug
قم بتشغيل وضع التصحيح، مما يعني أنه لن يتم إجراء أي تغييرات على السجلات ولن يتم تحديث ملف حالة logrotate. يتم طباعة رسائل التصحيح فقط.
-s, --state statefile
يخبر logrotate باستخدام ملف حالة بديل. هذا مفيد إذا كان يتم تشغيل logrotate كمستخدم مختلف لمجموعات مختلفة من ملفات السجل. لمنع التنفيذ المتوازي، يقوم logrotate افتراضيًا بالحصول على قفل على ملف الحالة، وإذا لم يتمكن من الحصول عليه، فسوف يخرج logrotate بالقيمة 3. ملف الحالة الافتراضي هو /var/lib/logrotate/status. إذا تم إعطاء /dev/null كملف حالة، فلن يحاول logrotate قفل ملف الحالة أو كتابته.
--skip-state-lock
لا تقم بقفل ملف الحالة، على سبيل المثال إذا كان القفل غير مدعوم أو ممنوعًا.
--wait-for-state-lock
انتظر حتى يتم تحرير القفل الموجود على ملف الحالة بواسطة عملية logrotate أخرى. قد يؤدي هذا الخيار إلى انتظار logrotate إلى أجل غير مسمى. استخدمه بحذر.
-v, --verbose
يقوم بتشغيل الوضع المطول، على سبيل المثال لعرض الرسائل أثناء التدوير.
-l, --log file
يخبر logrotate بتسجيل الإخراج المطول في ملف السجل. يكون الإخراج المطول المسجل في هذا الملف هو نفسه عند تشغيل logrotate باستخدام الخيار -v. يتم استبدال ملف السجل في كل مرة يتم فيها تشغيل logrotate.
-m, --mail command
يخبر logrotate بالأمر الذي يجب استخدامه عند إرسال السجلات عبر البريد. يجب أن يقبل هذا الأمر الوسائط التالية:
1. موضوع الرسالة المعطاة باستخدام الخيار '-s subject'
2. المستلم.
يجب أن يقوم الأمر بعد ذلك بقراءة رسالة على الإدخال القياسي وإرسالها عبر البريد إلى المستلم. الأمر الافتراضي لإرسال البريد هو /usr/bin/mail.
--usage
يطبع رسالة استخدام موجزة.
-?, --help
يطبع رسالة المساعدة.
--version
يعرض معلومات الإصدار.
ملف التهيئة
يقرأ logrotate كل شيء حول ملفات السجل التي يجب معالجتها من سلسلة من ملفات التهيئة المحددة في سطر الأوامر. يمكن لكل ملف تهيئة أن يحدد خيارات عامة (تعمل التعريفات المحلية على إلغاء الخيارات العامة، وتعمل التعريفات اللاحقة على إلغاء التعريفات السابقة). الخيارات العامة لا تؤثر على توجيهات التضمين السابقة. يبدو ملف التهيئة البسيط كما يلي:
# نموذج ملف تهيئة logrotate
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail _
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
sharedscripts
postrotate
kill -HUP $(cat /var/run/inn.pid)
endscript
nocompress
}
~/log/*.log {}
تحدد الأسطر القليلة الأولى الخيارات العامة؛ في المثال، يتم ضغط السجلات بعد تدويرها. لاحظ أنه يمكن أن تظهر التعليقات في أي مكان في ملف التهيئة طالما أن الحرف الأول غير الفراغي في السطر هو #.
يتم فصل القيم عن التوجيهات بواسطة مسافات و/أو علامة = اختيارية. يجب تحديد الأرقام بتنسيق مفهوم بواسطة strtoul(3).
يحدد القسم التالي من ملف التهيئة كيفية التعامل مع ملف السجل /var/log/messages. سيتم تدوير السجل خمس مرات أسبوعيًا قبل إزالته. بعد تدوير ملف السجل (ولكن قبل ضغط النسخة القديمة من السجل)، سيتم تنفيذ الأمر /usr/bin/killall -HUP syslogd.
يحدد القسم التالي المعلمات لكل من /var/log/httpd/access.log و /var/log/httpd/error.log. يتم تدوير كل ملف كلما زاد حجمه عن 100 كيلوبايت، ويتم إرسال ملفات السجلات القديمة (غير المضغوطة) عبر البريد إلى _ بعد 5 مرات من التدوير، بدلاً من إزالتها. يشير sharedscripts إلى أن البرنامج النصي postrotate سيتم تشغيله مرة واحدة فقط لهذا القسم، وليس مرة واحدة لكل سجل يتم تدويره. لاحظ أنه يمكن وضع أسماء ملفات السجل بين علامات الاقتباس (ويجب وضع علامات الاقتباس إذا كان الاسم يحتوي على مسافات). تنطبق قواعد الاقتباس القياسية لل shell، مع دعم الأحرف ', "، و .
يحدد القسم التالي المعلمات لجميع الملفات الموجودة في /var/log/news. يتم تدوير كل ملف على أساس شهري.
يستخدم القسم الأخير توسيع الرمز "~" لتدوير ملفات السجل في الدليل الرئيسي للمستخدم الحالي. هذا متاح فقط إذا كانت مكتبة glob لديك تدعم توسيع الرمز "~". تدعم GNU glob هذا.
يرجى استخدام أحرف البدل بحذر. إذا حددت "*"، فسيقوم logrotate بتدوير جميع الملفات، بما في ذلك الملفات التي تم تدويرها مسبقًا. إحدى الطرق لتجنب ذلك هي استخدام التوجيه olddir أو حرف بدل أكثر دقة (مثل *.log).
يرجى ملاحظة أنه افتراضيًا، عند استخدام systemd(1)، يتم تعيين الخيار ProtectSystem=full في ملف logrotate.service. يمنع هذا logrotate من تعديل السجلات الموجودة في /etc و /usr.
فيما يلي مزيد من المعلومات حول التوجيهات التي يمكن تضمينها في ملف تكوين logrotate:
توجيهات ملف التكوين
يمكن تضمين هذه التوجيهات في ملف تكوين logrotate:
التدوير
rotate count
يتم تدوير ملفات السجل عدد المرات المحدد في "count" قبل إزالتها أو إرسالها بالبريد إلى العنوان المحدد في توجيه "mail". إذا كانت "count" هي 0، فسيتم حذف الإصدارات القديمة بدلاً من تدويرها. إذا كانت "count" هي -1، فلن يتم حذف سجلات العمليات القديمة على الإطلاق، باستثناء أنها تتأثر بخيار "maxage" (استخدم هذا بحذر، فقد يؤدي إلى إهدار الأداء ومساحة القرص). القيمة الافتراضية هي 0.
olddir directory
يتم نقل السجلات إلى الدليل المحدد للتدوير. يجب أن يكون الدليل على نفس الجهاز الفعلي مثل ملف السجل الذي يتم تدويره، ما لم يتم استخدام خيارات "copy" أو "copytruncate" أو "renamecopy". يُفترض أن يكون الدليل نسبيًا للدليل الذي يحتوي على ملف السجل، ما لم يتم تحديد مسار مطلق. عند استخدام هذا الخيار، ستنتهي جميع الإصدارات القديمة من السجل في الدليل المحدد. يمكن تجاوز هذا الخيار باستخدام خيار "noolddir".
noolddir
يتم تدوير السجلات في الدليل الذي توجد فيه عادةً (هذا يتجاوز خيار "olddir").
su user group
قم بتدوير ملفات السجل التي تم تعيينها لهذا المستخدم وهذه المجموعة بدلاً من استخدام المستخدم/المجموعة الافتراضيين (عادةً root). يحدد "user" المستخدم المستخدم للتدوير، ويحدد "group" المجموعة المستخدمة للتدوير (راجع قسم المستخدم والمجموعة للحصول على التفاصيل). إذا لم يكن لدى المستخدم/المجموعة التي تحددها هنا امتيازات كافية لإنشاء ملفات بالملكية التي حددتها في توجيه "create"، فسوف يتسبب ذلك في حدوث خطأ. إذا كان logrotate يعمل بامتيازات root، فمن المستحسن استخدام التوجيه "su" لتدوير الملفات في الدلائل التي يتحكم فيها المستخدمون ذوو الامتيازات المحدودة بشكل مباشر أو غير مباشر.
التكرار
hourly يتم تدوير ملفات السجل كل ساعة. لاحظ أنه عادةً ما يتم تكوين logrotate ليتم تشغيله بواسطة cron يوميًا (أو بواسطة logrotate.timer عند استخدام [systemd]({filename}../../systemd)(1)). يجب عليك تغيير هذا التكوين وتشغيل logrotate كل ساعة لتتمكن من تدوير السجلات بالفعل كل ساعة.
يتم تدوير ملفات السجل يوميًا.
أسبوعيًا [يوم_الأسبوع]
يتم تدوير ملفات السجل مرة واحدة في كل يوم من أيام الأسبوع، أو إذا تقدم التاريخ بمقدار 7 أيام على الأقل
منذ التدوير الأخير (مع تجاهل الوقت المحدد). يتم تفسير يوم الأسبوع على النحو التالي: 0 تعني الأحد، 1 تعني الاثنين، ...، 6 تعني السبت؛ والقيمة الخاصة 7
تعني كل 7 أيام، بغض النظر عن يوم الأسبوع. الافتراضي هو 0 إذا تم حذف وسيطة يوم الأسبوع.
شهريًا
يتم تدوير ملفات السجل في المرة الأولى التي يتم فيها تشغيل logrotate في الشهر (عادةً في
اليوم الأول من الشهر).
سنويًا يتم تدوير ملفات السجل إذا كانت السنة الحالية مختلفة عن آخر تدوير.
حجم الحجم
يتم تدوير ملفات السجل فقط إذا أصبحت أكبر من حجم بايت. إذا تبع حجم الحرف k،
يُفترض أن الحجم بالكيلوبايت. إذا تم استخدام M، يكون الحجم بالميجابايت، وإذا تم استخدام G، يكون الحجم بالجيجابايت. لذا، حجم 100، وحجم 100 كيلو بايت، وحجم 100 ميجابايت وحجم 100 جيجابايت كلها
خيارات صالحة. هذا الخيار متعارض مع خيارات الفاصل الزمني، ويتسبب في تدوير ملفات السجل دون مراعاة وقت التدوير الأخير، إذا تم تحديده بعد
معايير الوقت (الخيار الأخير له الأسبقية).
تحديد الملف
missingok
إذا كان ملف السجل مفقودًا، فانتقل إلى الملف التالي دون إصدار رسالة خطأ. انظر أيضًا إلى nomissingok.
nomissingok
إذا لم يكن ملف السجل موجودًا، فأصدر خطأ. هذا هو الافتراضي.
ignoreduplicates
تجاهل أي تطابقات لاحقة لملف السجل.
ifempty
قم بتدوير ملف السجل حتى لو كان فارغًا، مع إلغاء خيار notifempty (ifempty هو
الافتراضي).
notifempty
لا تقم بتدوير السجل إذا كان فارغًا (هذا يلغي خيار ifempty).
minage العدد
لا تقم بتدوير السجلات التي يقل عمرها عن <العدد> من الأيام.
maxage العدد
إزالة السجلات التي تم تدويرها والتي يبلغ عمرها أكثر من <العدد> من الأيام. يتم التحقق من العمر فقط إذا كان من المفترض تدوير ملف السجل. لا يمنع rotate -1 الإزالة. يتم إرسال الملفات عبر البريد الإلكتروني إلى العنوان الذي تم تكوينه إذا تم تكوين maillast و mail.
minsize الحجم
يتم تدوير ملفات السجل عندما تصبح أكبر من حجم بايت، ولكن ليس قبل الفترة الزمنية الإضافية المحددة (يوميًا، أسبوعيًا، شهريًا أو سنويًا). الخيار المتعلق بالحجم مشابه باستثناء أنه متعارض مع خيارات الفاصل الزمني، ويتسبب في تدوير ملفات السجل دون مراعاة وقت التدوير الأخير، إذا تم تحديده بعد معايير الوقت (الخيار الأخير له الأسبقية). عند استخدام minsize، يتم أخذ كل من حجم ملف السجل والطابع الزمني في الاعتبار.
maxsize الحجم
يتم تدوير ملفات السجل عندما تصبح أكبر من حجم بايت حتى قبل الفترة الزمنية الإضافية المحددة (يوميًا، أسبوعيًا، شهريًا أو سنويًا). الخيار المتعلق بالحجم مشابه باستثناء أنه متعارض مع خيارات الفاصل الزمني، ويتسبب في تدوير ملفات السجل دون مراعاة وقت التدوير الأخير، إذا تم تحديده بعد معايير الوقت (الخيار الأخير له الأسبقية). عند استخدام maxsize، يتم أخذ كل من حجم ملف السجل والطابع الزمني في الاعتبار.
tabooext [+] قائمة
تُعدّل قائمة امتدادات الحظر الحالية (راجع توجيه "include" للحصول على معلومات حول امتدادات الحظر). إذا سبقت علامة "+" قائمة الامتدادات، يتم توسيع قائمة امتدادات الحظر الحالية، وإلا يتم استبدالها. عند بدء التشغيل، تكون قائمة امتدادات الحظر هي: ,v, .bak, .cfsaved, .disabled, .dpkg-bak, .dpkg-del, .dpkg-dist, .dpkg-new, .dpkg-old, .dpkg-tmp, .new, .old, .orig, .rhn-cfg-tmp-*, .rpmnew, .rpmorig, .rpmsave, .swp, .ucf-dist, .ucf-new, .ucf-old, ~
taboopat [+] قائمة
تُعدّل قائمة أنماط الحظر الحالية (راجع توجيه "include" للحصول على معلومات حول امتدادات الحظر والأنماط). إذا سبقت علامة "+" قائمة الأنماط، يتم توسيع قائمة الأنماط الحالية، وإلا يتم استبدالها. عند بدء التشغيل، تكون قائمة أنماط الحظر فارغة.
الملفات والمجلدات
create mode owner group, create owner group
مباشرة بعد التدوير (قبل تشغيل برنامج "postrotate")، يتم إنشاء ملف السجل (بنفس اسم ملف السجل الذي تم تدويره). يحدد "mode" وضع الملف في النظام الثماني (نفس "chmod" chmod(2)، ويحدد "owner" المستخدم الذي سيملك ملف السجل، ويحدد "group" المجموعة التي سينتمي إليها ملف السجل (راجع قسم "USER AND GROUP" للحصول على التفاصيل). يمكن حذف أي من سمات ملف السجل، وفي هذه الحالة ستستخدم سمات الملف الجديد نفس قيم ملف السجل الأصلي للسمات المحذوفة. يمكن تعطيل هذا الخيار باستخدام خيار "nocreate".
nocreate
لا يتم إنشاء ملفات سجل جديدة (هذا يلغي خيار "create").
createolddir mode [owner [group]], createolddir [owner [group]]
إذا كان الدليل المحدد بواسطة توجيه "olddir" غير موجود، فسيتم إنشاؤه. يحدد "mode" الوضع في النظام الثماني (نفس "chmod" chmod(2)، ويحدد "owner" المستخدم الذي سيمتلك دليل "olddir"، ويحدد "group" المجموعة التي سينتمي إليها دليل "olddir" (راجع قسم "USER AND GROUP" للحصول على التفاصيل). إذا لم يتم تحديد "mode"، فسيتم افتراض 0755. يمكن تعطيل هذا الخيار باستخدام خيار "nocreateolddir".
nocreateolddir
لا يقوم "logrotate" بإنشاء دليل "olddir" عند عدم وجوده.
copy قم بإنشاء نسخة من ملف السجل، ولكن لا تقم بتغيير الملف الأصلي على الإطلاق. يمكن استخدام هذا الخيار، على سبيل المثال، لإنشاء لقطة من ملف السجل الحالي، أو عندما تحتاج أداة أخرى إلى اقتطاع أو تحليل الملف. عند استخدام هذا الخيار، لن يكون لخيار "create" أي تأثير، حيث يظل ملف السجل القديم في مكانه. يسمح خيار "copy" بتخزين ملفات السجل التي تم تدويرها على أجهزة مختلفة باستخدام توجيه "olddir".
nocopy لا تقم بنسخ ملف السجل الأصلي واتركه في مكانه. (يلغي هذا الخيار خيار "copy").
copytruncate
بعد إنشاء نسخة، يتم اقتطاع الملف الأصلي للسجل في مكانه ليصبح حجمه صفرًا، بدلاً من نقل ملف السجل القديم وإنشاء ملف جديد اختياريًا. يمكن استخدامه عندما لا يمكن إخبار بعض البرامج بإغلاق ملف السجل الخاص بها، وبالتالي قد يستمر في الكتابة (إلحاق) إلى ملف السجل السابق إلى الأبد. لاحظ أن هناك شريحة زمنية صغيرة بين نسخ الملف واقتطاعه، لذلك قد يتم فقدان بعض بيانات التسجيل. عند استخدام هذا الخيار، لن يكون لخيار الإنشاء أي تأثير، حيث يظل ملف السجل القديم في مكانه. يسمح خيار copytruncate بتخزين ملفات السجل التي تم تدويرها على أجهزة مختلفة باستخدام توجيه olddir. خيار copytruncate يعني norenamecopy.
nocopytruncate
لا تقطع ملف السجل الأصلي في مكانه بعد إنشاء نسخة (يلغي هذا خيار copytruncate).
renamecopy
يتم إعادة تسمية ملف السجل إلى اسم ملف مؤقت في نفس الدليل عن طريق إضافة امتداد ".tmp" إليه. بعد ذلك، يتم تشغيل برنامج postrotate، ويتم نسخ ملف السجل من اسم الملف المؤقت إلى اسم الملف النهائي. في النهاية، تتم إزالة اسم الملف المؤقت. يسمح خيار renamecopy بتخزين ملفات السجل التي تم تدويرها على أجهزة مختلفة باستخدام توجيه olddir. خيار renamecopy يعني nocopytruncate.
norenamecopy
لا تقم بإعادة تسمية ونسخ ملف السجل الأصلي (يلغي هذا خيار renamecopy).
shred
احذف ملفات السجل باستخدام الأمر shred -u بدلاً من الأمر unlink(). يجب أن يضمن هذا عدم إمكانية قراءة السجلات بعد حذفها المجدول؛ هذا الخيار معطل افتراضيًا. انظر أيضًا noshred.
noshred
لا تستخدم الأمر shred عند حذف ملفات السجل القديمة. انظر أيضًا shred.
shredcycles count
يطلب من الأمر GNU [shred]({filename}../../shred)(1) الكتابة فوق ملفات السجل عدة مرات قبل حذفها. بدون هذا الخيار، سيتم استخدام الإعداد الافتراضي للأمر shred.
allowhardlink
قم بتدوير الملفات التي تحتوي على روابط ثابتة متعددة؛ هذا الخيار معطل افتراضيًا. قد يتم إفراغ الملف الهدف، على سبيل المثال باستخدام shred أو copytruncate. استخدم بحذر، خاصةً عند تدوير ملفات السجل كجذر.
noallowhardlink
لا تقم بتدوير الملفات التي تحتوي على روابط ثابتة متعددة. انظر أيضًا allowhardlink.
الضغط
compress
يتم ضغط الإصدارات القديمة من ملفات السجل باستخدام الأمر [gzip]({filename}../../gzip)(1) افتراضيًا. انظر أيضًا nocompress.
nocompress
لا يتم ضغط الإصدارات القديمة من ملفات السجل. انظر أيضًا compress.
compresscmd
يحدد الأمر الذي يجب استخدامه لضغط ملفات السجل. الإعداد الافتراضي هو [gzip]({filename}../../gzip)(1). انظر أيضًا compress.
uncompresscmd
يحدد الأمر الذي يجب استخدامه لفك ضغط ملفات السجل. الإعداد الافتراضي هو الأمر gunzip(1).
compressext
يحدد الامتداد الذي سيتم استخدامه في ملفات السجل المضغوطة، في حالة تمكين الضغط. الإعداد الافتراضي يتبع الإعداد الافتراضي لأمر الضغط الذي تم تكوينه.
compressoptions
يمكن تمرير خيارات سطر الأوامر إلى برنامج الضغط، في حالة استخدامه. بالنسبة للأمر [gzip]({filename}../../gzip)(1)، يكون الإعداد الافتراضي هو "-6" (يفضل الضغط العالي على حساب السرعة). إذا كنت تستخدم أمر ضغط مختلف، فقد تحتاج إلى تغيير خيارات الضغط لتتوافق معه.
delaycompress
يؤجل ضغط ملف السجل السابق إلى دورة التدوير التالية. هذا له تأثير فقط عند استخدامه مع خيار compress. يمكن استخدامه عندما لا يمكن إخبار برنامج ما بإغلاق ملف السجل الخاص به وقد يستمر في الكتابة إلى ملف السجل السابق لفترة من الوقت.
nodelaycompress
لا يؤجل ضغط ملف السجل السابق إلى دورة التدوير التالية (يلغي هذا الخيار `delaycompress`).
أسماء الملفات
extension ext
يمكن لملفات السجل ذات الامتداد `ext` الاحتفاظ به بعد التدوير. إذا تم استخدام الضغط، يظهر امتداد الضغط (عادةً `.gz`) بعد `ext`. على سبيل المثال، لديك ملف سجل باسم `mylog.foo` وتريد تدويره إلى `mylog.1.foo.gz` بدلاً من `mylog.foo.1.gz`.
addextension ext
يتم إعطاء ملفات السجل الامتداد النهائي `ext` بعد التدوير. إذا كان الملف الأصلي ينتهي بالفعل بـ `ext`، فلا يتم تكرار الامتداد، بل يتم نقله ببساطة إلى النهاية، أي يتم تدوير كل من `filename` و `filenameext` إلى `filename.1ext`. إذا تم استخدام الضغط، يظهر امتداد الضغط (عادةً `.gz`) بعد `ext`.
start count
هذا هو الرقم الذي سيتم استخدامه كأساس للتدوير. على سبيل المثال، إذا حددت 0، فسيتم إنشاء ملفات السجل بامتداد `.0` عند تدويرها من ملفات السجل الأصلية. إذا حددت 9، فسيتم إنشاء ملفات السجل بامتداد `.9`، مع تخطي 0-8. سيظل يتم تدوير الملفات بالعدد المحدد في التوجيه `rotate`.
dateext
يتم أرشفة الإصدارات القديمة من ملفات السجل عن طريق إضافة امتداد تاريخ مثل `YYYYMMDD` بدلاً من مجرد إضافة رقم. يمكن تكوين الامتداد باستخدام خيارات `dateformat` و `dateyesterday`.
nodateext
لا تقم بأرشفة الإصدارات القديمة من ملفات السجل بامتداد التاريخ (يلغي هذا الخيار `dateext`).
dateformat format_string
حدد الامتداد لـ `dateext` باستخدام الترميز المشابه لوظيفة `strftime(3)`. يُسمح فقط بالمحددات `%Y %m %d %H %M %S %V %s` و `%z`. القيمة الافتراضية هي `-%Y%m%d` باستثناء التدوير الساعي، الذي يستخدم `- %Y%m%d%H` كقيمة افتراضية. لاحظ أن الحرف الذي يفصل اسم الملف عن الامتداد هو أيضًا جزء من سلسلة `dateformat`. يجب تعيين ساعة النظام بعد 9 سبتمبر 2001 لكي تعمل `%s` بشكل صحيح. لاحظ أن الطوابع الزمنية التي تم إنشاؤها بواسطة هذا التنسيق يجب أن تكون قابلة للفرز معجميًا (أي أولاً السنة، ثم الشهر ثم اليوم. على سبيل المثال، `2001/12/01` جيد، ولكن `01/12/2001` ليس كذلك، لأن `01/11/2002` سيتم فرزه بشكل أقل في حين أنه أحدث). وذلك لأن عند استخدام خيار `rotate`، يقوم `logrotate` بفرز جميع أسماء الملفات التي تم تدويرها لمعرفة ملفات السجل الأقدم التي يجب إزالتها.
dateyesterday
استخدم تاريخ أمس بدلاً من تاريخ اليوم لإنشاء امتداد `dateext`، بحيث يكون ملف السجل الذي تم تدويره يحتوي على تاريخ في اسمه هو نفسه التاريخ الموجود في الطوابع الزمنية بداخله.
datehourago
استخدم "ساعة مضت" بدلاً من التاريخ الحالي لإنشاء امتداد "dateext"، بحيث يحتوي ملف السجل الذي تم تدويره على رقم ساعة في اسمه يطابق الطوابع الزمنية الموجودة بداخله. مفيد مع التدوير كل ساعة.
البريد
mail address
عندما يتم تدوير سجل وإزالته، يتم إرساله بالبريد الإلكتروني إلى العنوان المحدد. إذا لم يكن من المفترض إنشاء أي بريد إلكتروني لسجل معين، فيمكن استخدام التوجيه "nomail".
nomail لا ترسل ملفات السجل القديمة بالبريد الإلكتروني إلى أي عنوان.
mailfirst
عند استخدام أمر "mail"، أرسل ملف السجل الذي تم تدويره للتو بالبريد الإلكتروني، بدلاً من الملف الذي سيتم التدوير قريبًا.
maillast
عند استخدام أمر "mail"، أرسل الملف الذي سيتم تدويره قريبًا بالبريد الإلكتروني، بدلاً من الملف الذي تم تدويره للتو (هذا هو الإعداد الافتراضي).
ملفات التكوين الإضافية
include file_or_directory
يقرأ الملف المحدد كمعامل كما لو تم تضمينه بشكل مباشر في المكان الذي يظهر فيه توجيه "include". إذا تم إعطاء دليل، فسيتم قراءة معظم الملفات الموجودة في هذا الدليل بترتيب أبجدي قبل الاستمرار في معالجة الملف الذي يتضمنه. الملفات الوحيدة التي يتم تجاهلها هي الملفات التي ليست ملفات عادية (مثل الدلائل والأنابيب المسماة) والملفات التي تنتهي أسماؤها بواحد من الامتدادات أو الأنماط المحظورة، كما هو محدد بواسطة التوجيهين "tabooext" أو "taboopat" على التوالي. يمكن أن يبدأ المسار المحدد بـ "~/ " لجعله نسبيًا إلى الدليل الرئيسي للمستخدم الذي يقوم بتشغيل البرنامج. لأسباب أمنية، يجب ألا تكون ملفات التكوين قابلة للكتابة من قبل المجموعة أو قابلة للكتابة من قبل الجميع.
البرامج النصية
sharedscripts
عادةً، يتم تشغيل البرامج النصية "prerotate" و "postrotate" لكل سجل يتم تدويره، ويتم تمرير المسار المطلق لملف السجل كأول وسيطة إلى البرنامج النصي. هذا يعني أنه يمكن تشغيل برنامج نصي واحد عدة مرات لإدخالات ملف السجل التي تطابق أنماطًا متعددة (مثل مثال "/var/log/news/*"). إذا تم تحديد "sharedscripts"، فسيتم تشغيل البرامج النصية مرة واحدة فقط، بغض النظر عن عدد السجلات التي تطابق النمط المحدد، ويتم تمرير النمط بأكمله إليها. ومع ذلك، إذا لم تكن هناك حاجة لتدوير أي من السجلات في النمط، فلن يتم تشغيل البرامج النصية على الإطلاق. إذا خرجت البرامج النصية بخطأ (أو فشل أي سجل في التدوير)، فلن يتم تنفيذ الإجراءات المتبقية لأي من السجلات. يتجاوز هذا الخيار الخيار "nosharedscripts".
nosharedscripts
قم بتشغيل البرامج النصية "prerotate" و "postrotate" لكل ملف سجل يتم تدويره (هذا هو الإعداد الافتراضي، ويتجاوز الخيار "sharedscripts"). يتم تمرير المسار المطلق لملف السجل كأول وسيطة إلى البرنامج النصي. يتم تمرير المسار المطلق لملف السجل الذي تم تدويره النهائي كوسيطة ثانية إلى برنامج "postrotate". إذا خرجت البرامج النصية بخطأ، فلن يتم تنفيذ الإجراءات المتبقية للسجل المتأثر فقط.
firstaction
script
endscript
يتم تنفيذ البرنامج النصي مرة واحدة قبل تدوير جميع ملفات السجل التي تطابق النمط المحدد، وقبل تشغيل البرنامج النصي "prerotate"، وفقط إذا كان سيتم تدوير سجل واحد على الأقل فعليًا. يمكن أن تظهر هذه التوجيهات فقط داخل تعريف ملف السجل. يتم تمرير النمط بأكمله إلى البرنامج النصي كأول وسيطة. إذا خرج البرنامج النصي بخطأ، فلن يتم إجراء أي معالجة إضافية. انظر أيضًا إلى "lastaction" والجزء "SCRIPTS".
lastaction
script
endscript
يتم تنفيذ البرنامج النصي مرة واحدة بعد تدوير جميع ملفات السجل التي تطابق النمط المحدد، وبعد تشغيل البرنامج النصي postrotate، وفقط إذا تم تدوير ملف سجل واحد على الأقل. قد تظهر هذه التوجيهات داخل تعريف ملف السجل فقط. يتم تمرير النمط بأكمله إلى البرنامج النصي كأول وسيطة له. إذا فشل البرنامج النصي مع إرجاع خطأ، فسيتم عرض رسالة خطأ فقط (نظرًا لكونه الإجراء الأخير). انظر أيضًا firstaction وقسم SCRIPTS.
prerotate
script
endscript
يتم تنفيذ البرنامج النصي قبل تدوير ملف السجل وملفاته القديمة، وفقط إذا كان ملف السجل سيتم تدويره بالفعل. قد تظهر هذه التوجيهات داخل تعريف ملف السجل فقط. عادةً، يتم تمرير المسار المطلق لملف السجل كأول وسيطة للبرنامج النصي. إذا تم تحديد sharedscripts، يتم تمرير النمط بأكمله إلى البرنامج النصي. انظر أيضًا postrotate وقسم SCRIPTS. انظر sharedscripts و nosharedscripts لمعالجة الأخطاء.
postrotate
script
endscript
يتم تنفيذ البرنامج النصي بعد تدوير ملف السجل وقبل ضغط ملف السجل. قد تظهر هذه التوجيهات داخل تعريف ملف السجل فقط. عادةً، يتم تمرير المسار المطلق لملف السجل كأول وسيطة للبرنامج النصي، ويتم تمرير المسار المطلق لملف السجل الذي تم تدويره الأخير كأول وسيطة ثانية للبرنامج النصي. إذا تم تحديد sharedscripts، يتم تمرير النمط بأكمله كأول وسيطة للبرنامج النصي، ويتم حذف الوسيطة الثانية. انظر أيضًا prerotate وقسم SCRIPTS. انظر sharedscripts و nosharedscripts لمعالجة الأخطاء.
preremove
script
endscript
يتم تنفيذ البرنامج النصي مرة واحدة قبل إزالة ملف السجل. سيمرر logrotate اسم الملف الذي سيتم إزالته قريبًا كأول وسيطة للبرنامج النصي. انظر أيضًا firstaction وقسم SCRIPTS.
SCRIPTS
يتم تنفيذ الأسطر الموجودة بين الكلمة الأساسية البادئة (مثل prerotate) و endscript (يجب أن يظهر كلاهما على سطر منفصل) (باستخدام /bin/sh). يرث البرنامج النصي بعض الخصائص من عملية logrotate، بما في ذلك stderr و stdout والدليل الحالي والبيئة و umask. يتم تشغيل البرامج النصية كمستخدم ومجموعة الاستدعاء، بغض النظر عن أي توجيه su. إذا تم تحديد علامة --log، فإن واصف الملف 3 هو ملف السجل. الدليل العامل الحالي غير محدد.
USER AND GROUP
يتم حل معرّفات المستخدم والمجموعة أولاً عن طريق محاولة التمثيل النصي، وبعد ذلك، في حالة فشله، عن طريق القيمة العددية.
FILES
/var/lib/logrotate/status ملف الحالة الافتراضي.
/etc/logrotate.conf خيارات التهيئة.
انظر أيضاً
chmod(2)، gunzip(1)، gzip(1)، mail(1)، shred(1)، strftime(3)، strtoul(3)، [https://github.com/logrotate/logrotate]
المؤلفون
إريك تروان، بريستون براون، يان كالوza.
[https://github.com/logrotate/logrotate]