LOGROTATE(8) راهنمای مدیر سیستم LOGROTATE(8)

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 کند). برای کسب اطلاعات بیشتر درباره نحوه استفاده از دستورالعمل include، به بخش‌های بعدی مراجعه کنید. اگر یک دایرکتوری در خط فرمان مشخص شود، هر فایلی در آن دایرکتوری به عنوان فایل پیکربندی به کار گرفته می‌شود.

اگر هیچ آرگومانی در خط فرمان داده نشود، logrotate اطلاعات نسخه و حق رونوشت (copyright) را به همراه خلاصه‌ای کوتاه از نحوه استفاده نمایش می‌دهد. اگر در حین چرخش لاگ‌ها خطایی رخ دهد، logrotate با وضعیتی غیر از صفر خارج می‌شود، هرچند فایل وضعیت به‌روزرسانی خواهد شد.

به logrotate می‌گوید که چرخش لاگ‌ها را اجباری کند، حتی اگر تشخیص دهد که نیازی به این کار نیست. گاهی این گزینه پس از افزودن مدخل‌های جدید به یک فایل پیکربندی logrotate، یا در صورتی که فایل‌های لاگ قدیمی به صورت دستی حذف شده باشند مفید است، چرا که فایل‌های جدید ساخته می‌شوند و ثبت لاگ به درستی ادامه خواهد یافت.
فعال‌سازی حالت اشکال‌زدایی؛ بدین معنا که هیچ تغییری در لاگ‌ها ایجاد نمی‌شود و فایل وضعیت logrotate به‌روزرسانی نمی‌گردد. فقط پیام‌های اشکال‌زدایی چاپ می‌شوند.
به logrotate می‌گوید از یک فایل وضعیت جایگزین استفاده کند. این گزینه زمانی سودمند است که logrotate با کاربری دیگری برای مجموعه‌های متفاوتی از فایل‌های لاگ اجرا شود. به منظور جلوگیری از اجرای موازی، logrotate به طور پیش‌فرض یک قفل روی فایل وضعیت ایجاد می‌کند؛ اگر دریافت قفل ممکن نباشد، logrotate با مقدار ۳ خارج می‌شود. فایل وضعیت پیش‌فرض /var/lib/logrotate.status است. اگر /dev/null به عنوان فایل وضعیت داده شود، logrotate تلاشی برای قفل کردن یا نوشتن در فایل وضعیت نخواهد کرد.
قفل نکردن فایل وضعیت؛ برای نمونه زمانی که قفل‌گذاری پشتیبانی نمی‌شود یا مجاز نیست.
صبر کردن تا زمانی که قفل روی فایل وضعیت توسط یک فرآیند دیگر logrotate آزاد شود. این گزینه ممکن است باعث شود logrotate تا ابد در انتظار بماند. با احتیاط استفاده کنید.
فعال کردن حالت پرگو؛ مثلاً برای نمایش پیام‌ها در حین چرخش.
به logrotate می‌گوید که خروجی پرگو را در file ثبت کند. خروجی پرگوی ثبت‌شده در آن فایل مانند خروجی هنگام اجرای logrotate با سوییچ -v است. این فایل لاگ با هر بار اجرای logrotate بازنویسی می‌شود.
به logrotate می‌گوید هنگام ارسال ایمیل لاگ‌ها از چه دستوری استفاده کند. این دستور باید آرگومان‌های زیر را بپذیرد:
۱) موضوع پیام که با '-s subject' داده می‌شود
۲) گیرنده پیام.
سپس دستور باید پیامی را از ورودی استاندارد بخواند و به گیرنده ایمیل کند. دستور پیش‌فرض ارسال ایمیل /usr/bin/mail است.
پیام کوتاهی درباره نحوه استفاده چاپ می‌کند.
-?, --help
پیام راهنما را نمایش می‌دهد.
نمایش اطلاعات نسخه.

logrotate تمام اطلاعات مربوط به فایل‌های لاگی را که باید مدیریت شوند از مجموعه‌ای از فایل‌های پیکربندی ارائه‌شده در خط فرمان می‌خواند. هر فایل پیکربندی می‌تواند گزینه‌های سراسری را تنظیم کند (تعاریف محلی بر تعاریف سراسری اولویت دارند، و تعاریف بعدی تعاریف قبلی را بازنویسی می‌کنند) و فایل‌های لاگ را برای چرخش مشخص نماید. گزینه‌های سراسری بر دستورالعمل‌های include قبلی تأثیری ندارند. یک فایل پیکربندی ساده شبیه به این است:

# sample logrotate configuration file
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 recipient@example.org
    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 تعریف می‌کند. هر کدام هر زمان که حجمشان از ۱۰۰ کیلوبایت بیشتر شود چرخانده می‌شوند و فایل‌های لاگ قدیمی پس از گذراندن ۵ چرخش به جای حذف شدن، به صورت فشرده‌نشده به آدرس recipient@example.org ایمیل می‌شوند. گزینه sharedscripts به این معنی است که اسکریپت postrotate تنها یک بار برای این بخش اجرا می‌شود، نه یک بار برای هر لاگی که چرخانده شده است. توجه داشته باشید که نام فایل‌های لاگ می‌تواند در میان علامت نقل‌قول قرار گیرد (و اگر نام شامل فاصله باشد، استفاده از نقل‌قول الزامی است). قوانین معمول نقل‌قول شل اعمال می‌شوند و نویسه‌های '، " و \ پشتیبانی می‌شوند.

بخش بعدی پارامترها را برای تمام فایل‌های موجود در /var/log/news مشخص می‌کند. هر فایل بر اساس یک دوره ماهانه چرخانده می‌شود.

بخش آخر از بسط تیلدا برای چرخش فایل‌های لاگ در دایرکتوری خانگی کاربر جاری استفاده می‌کند. این قابلیت تنها در صورتی در دسترس است که کتابخانه glob شما از بسط تیلدا پشتیبانی کند. کتابخانه GNU glob از آن پشتیبانی می‌کند.

لطفاً از نویسه‌های عام با احتیاط استفاده کنید. اگر * را مشخص کنید، logrotate همه فایل‌ها، از جمله فایل‌هایی را که قبلاً چرخانده شده‌اند می‌چرخاند. راهکار این موضوع استفاده از دستورالعمل olddir یا یک نویسه عام دقیق‌تر (مانند ‎*.log‎) است.

لطفاً توجه داشته باشید که به طور پیش‌فرض هنگام استفاده از systemd(1)، گزینه ProtectSystem=full در فایل logrotate.service تنظیم شده است. این امر مانع از دستکاری لاگ‌ها در /etc و /usr توسط logrotate می‌شود.

در اینجا اطلاعات بیشتری در مورد دستورالعمل‌هایی که ممکن است در یک فایل پیکربندی logrotate گنجانده شوند آمده است:

این دستورالعمل‌ها ممکن است در یک فایل پیکربندی logrotate گنجانده شوند:

فایل‌های لاگ پیش از حذف یا ارسال به آدرس مشخص‌شده در یک دستورالعمل mail، به تعداد count بار چرخانده می‌شوند. اگر count برابر ۰ باشد، نسخه‌های قدیمی به جای چرخش حذف می‌شوند. اگر count برابر -1 باشد، لاگ‌های قدیمی اصلاً حذف نمی‌شوند، به جز مواردی که تحت تأثیر maxage قرار گیرند (با احتیاط استفاده شود، زیرا ممکن است باعث اتلاف کارایی و فضای دیسک گردد). مقدار پیش‌فرض ۰ است.
لاگ‌ها برای چرخش به دایرکتوری directory منتقل می‌شوند. این directory باید روی همان دستگاه فیزیکی فایل لاگی که چرخانده می‌شود قرار داشته باشد، مگر اینکه از گزینه‌های copy، copytruncate یا renamecopy استفاده شود. فرض می‌شود که directory نسبت به دایرکتوری نگه‌دارنده فایل لاگ نسبی است، مگر اینکه یک نام مسیر مطلق مشخص شده باشد. هنگام استفاده از این گزینه، تمام نسخه‌های قدیمی لاگ در directory قرار می‌گیرند. این گزینه را می‌توان با گزینه noolddir لغو کرد.
لاگ‌ها در همان دایرکتوری که معمولاً در آن قرار دارند چرخانده می‌شوند (این گزینه، گزینه olddir را لغو می‌کند).
چرخش فایل‌های لاگ با کاربر و گروه مشخص‌شده به جای استفاده از کاربر/گروه پیش‌فرض (معمولاً root). آرگومان user کاربر مورد استفاده برای چرخش و group گروه مورد استفاده برای چرخش را مشخص می‌کند (برای جزئیات به بخش کاربر و گروه مراجعه کنید). اگر کاربر/گروهی که در اینجا مشخص می‌کنید دسترسی کافی برای ساخت فایل‌هایی با مالکیتی که در دستورالعمل create تعیین کرده‌اید نداشته باشد، منجر به بروز خطا می‌شود. اگر logrotate با دسترسی ریشه اجرا می‌شود، توصیه می‌شود برای چرخش فایل‌ها در دایرکتوری‌هایی که مستقیماً یا غیرمستقیم تحت کنترل کاربران فاقد دسترسی ریشه هستند، از دستورالعمل su استفاده کنید.

فایل‌های لاگ هر ساعت چرخانده می‌شوند. توجه داشته باشید که معمولاً logrotate به گونه‌ای پیکربندی می‌شود که روزانه توسط cron (یا توسط logrotate.timer هنگام استفاده از systemd(1)) اجرا گردد. شما باید این پیکربندی را تغییر دهید و logrotate را به صورت ساعتی اجرا کنید تا بتوانید لاگ‌ها را واقعاً ساعتی بچرخانید.
فایل‌های لاگ هر روز چرخانده می‌شوند.
فایل‌های لاگ یک بار در هر weekday، یا در صورتی که تاریخ حداقل ۷ روز نسبت به آخرین چرخش جلوتر رفته باشد (با صرف‌نظر از ساعت دقیق) چرخانده می‌شوند. تفسیر weekday به این صورت است: ۰ به معنای یکشنبه، ۱ به معنای دوشنبه، ...، ۶ به معنای شنبه است؛ مقدار ویژه ۷ به معنای هر ۷ روز یک بار، صرف‌نظر از روز هفته است. در صورت حذف آرگومان weekday، مقدار پیش‌فرض ۰ است.
فایل‌های لاگ در اولین باری که logrotate در یک ماه اجرا می‌شود چرخانده می‌شوند (این حالت معمولاً در روز اول ماه است).
فایل‌های لاگ در صورتی که سال جاری با سال آخرین چرخش یکسان نباشد چرخانده می‌شوند.
فایل‌های لاگ تنها در صورتی چرخانده می‌شوند که حجم آنها از size بایت بزرگ‌تر شود. اگر به دنبال size حرف k بیاید، اندازه بر حسب کیلوبایت در نظر گرفته می‌شود. اگر از M استفاده شود، اندازه بر حسب مگابایت و اگر از G استفاده شود، اندازه بر حسب گیگابایت است. بنابراین size 100، size 100k، size 100M و size 100G همگی معتبر هستند. این گزینه با گزینه‌های بازه زمانی مانعةالجمع است و در صورت تعیین پس از معیارهای زمانی، باعث می‌شود فایل‌های لاگ بدون توجه به زمان آخرین چرخش چرخانده شوند (آخرین گزینه مشخص‌شده اولویت دارد).

اگر فایل لاگ وجود نداشته باشد، بدون صدور پیام خطا به سراغ فایل بعدی برود. همچنین nomissingok را ببینید.
اگر یک فایل لاگ وجود نداشته باشد، یک پیام خطا صادر کند. این حالت پیش‌فرض است.
نادیده گرفتن هرگونه تطابق بعدی یک فایل لاگ.
چرخش فایل لاگ حتی در صورتی که خالی باشد، که گزینه notifempty را بازنویسی می‌کند (ifempty پیش‌فرض است).
عدم چرخش لاگ در صورتی که خالی باشد (این گزینه، گزینه ifempty را لغو می‌کند).
لاگ‌هایی را که کمتر از <count> روز قدمت دارند نچرخاند.
حذف لاگ‌های چرخانده‌شده‌ای که قدمت آنها بیش از <count> روز است. سن فایل تنها در صورتی بررسی می‌شود که فایل لاگ قرار باشد چرخانده شود. گزینه rotate -1 مانع حذف نمی‌شود. در صورت پیکربندی maillast و mail، فایل‌ها به آدرس تنظیم‌شده ایمیل می‌شوند.
فایل‌های لاگ زمانی چرخانده می‌شوند که از size بایت بزرگ‌تر شوند، اما نه پیش از بازه زمانی تعیین‌شده اضافی (daily، weekly، monthly یا yearly). گزینه مرتبط size مشابه است، به جز اینکه با گزینه‌های بازه زمانی مانعةالجمع است و اگر پس از معیارهای زمانی مشخص شود، باعث چرخش فایل‌های لاگ بدون در نظر گرفتن زمان آخرین چرخش می‌شود (آخرین گزینه مشخص‌شده اولویت دارد). هنگامی که از minsize استفاده می‌شود، هم اندازه و هم برچسب زمانی فایل لاگ در نظر گرفته می‌شوند.
فایل‌های لاگ زمانی که از size بایت بزرگ‌تر شوند حتی پیش از بازه زمانی تعیین‌شده اضافی (daily، weekly، monthly یا yearly) چرخانده می‌شوند. گزینه مرتبط size مشابه است، به جز اینکه با گزینه‌های بازه زمانی مانعةالجمع است و اگر پس از معیارهای زمانی مشخص شود، باعث چرخش فایل‌های لاگ بدون توجه به زمان آخرین چرخش می‌گردد (آخرین گزینه مشخص‌شده اولویت دارد). هنگامی که از maxsize استفاده می‌شود، هم اندازه و هم برچسب زمانی یک فایل لاگ در نظر گرفته می‌شوند.
فهرست پسوندهای ممنوعه جاری تغییر داده می‌شود (برای اطلاعات درباره پسوندهای ممنوعه، به دستورالعمل 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، ~
فهرست الگوهای تطبیق (glob) ممنوعه جاری تغییر داده می‌شود (برای اطلاعات درباره پسوندها و الگوهای ممنوعه به دستورالعمل include مراجعه کنید). اگر یک + پیش از فهرست الگوها قرار گیرد، فهرست الگوهای ممنوعه جاری گسترش می‌یابد، در غیر این صورت جایگزین می‌شود. در زمان راه‌اندازی، فهرست الگوهای ممنوعه خالی است.

بلافاصله پس از چرخش (پیش از اجرای اسکریپت postrotate) فایل لاگ (با همان نام فایلی که تازه چرخانده شده) ایجاد می‌شود. آرگومان mode حالت دسترسی فایل لاگ را در مبنای هشت (مشابه chmod(2)) مشخص می‌کند، owner کاربری را که مالک فایل خواهد بود مشخص می‌نماید و group گروهی را که فایل لاگ به آن تعلق خواهد داشت تعیین می‌کند (برای جزئیات به بخش کاربر و گروه مراجعه کنید). هر یک از ویژگی‌های فایل لاگ را می‌توان حذف کرد، که در این صورت ویژگی‌های محذوف برای فایل جدید از مقادیر فایل لاگ اصلی استفاده خواهند کرد. این گزینه را می‌توان با گزینه nocreate غیرفعال کرد.
فایل‌های لاگ جدید ساخته نمی‌شوند (این گزینه، گزینه create را لغو می‌کند).
اگر دایرکتوری مشخص‌شده با دستورالعمل olddir وجود نداشته باشد، ایجاد می‌شود. آرگومان mode حالت دسترسی دایرکتوری olddir را در مبنای هشت (مشابه chmod(2))، owner کاربر مالک دایرکتوری olddir و group گروه دایرکتوری olddir را مشخص می‌کند (برای جزئیات به بخش کاربر و گروه مراجعه کنید). اگر mode مشخص نشود، 0755 فرض می‌شود. این گزینه را می‌توان با استفاده از گزینه nocreateolddir غیرفعال کرد.
دایرکتوری olddir در صورت عدم وجود توسط logrotate ایجاد نمی‌شود.
تهیه یک نسخه کپی از فایل لاگ، بدون اعمال هیچ تغییری در فایل اصلی. از این گزینه می‌توان برای مثال برای تهیه یک رونوشت لحظه‌ای (snapshot) از فایل لاگ جاری، یا زمانی که ابزار دیگری نیاز به خالی کردن یا پردازش فایل دارد استفاده کرد. هنگام استفاده از این گزینه، گزینه create هیچ اثری نخواهد داشت، زیرا فایل لاگ قدیمی در جای خود باقی می‌ماند. گزینه copy اجازه می‌دهد فایل‌های لاگ چرخانده‌شده با استفاده از دستورالعمل olddir روی دستگاه‌های دیگری ذخیره شوند.
فایل لاگ اصلی کپی نمی‌شود و در جای خود باقی می‌ماند (این گزینه، گزینه copy را لغو می‌کند).
خالی کردن اندازه فایل لاگ اصلی در جای خود به صفر پس از تهیه یک نسخه کپی، به جای جابجایی فایل لاگ قدیمی و احیاناً ایجاد یک فایل جدید. این گزینه زمانی قابل استفاده است که نتوان برنامه‌ای را وادار به بستن فایل لاگ خود کرد و در نتیجه ممکن است برنامه برای همیشه به نوشتن (الحاق) در فایل لاگ پیشین ادامه دهد. توجه داشته باشید که یک برش زمانی بسیار کوتاه بین کپی کردن فایل و خالی کردن آن وجود دارد، بنابراین ممکن است مقداری از داده‌های لاگ‌گیری از دست برود. هنگام استفاده از این گزینه، گزینه create هیچ تأثیری نخواهد داشت، زیرا فایل لاگ قدیمی در جای خود باقی می‌ماند. گزینه copytruncate امکان ذخیره‌سازی فایل‌های لاگ چرخانده‌شده را روی دستگاه‌های مختلف با استفاده از دستورالعمل olddir ممکن می‌سازد. گزینه copytruncate به طور ضمنی شامل norenamecopy است.
پس از تهیه کپی، فایل لاگ اصلی را در جای خود خالی نمی‌کند (این گزینه، گزینه copytruncate را لغو می‌کند).
فایل لاگ با افزودن پسوند ".tmp" به نامی موقت در همان دایرکتوری تغییر نام می‌یابد. پس از آن، اسکریپت postrotate اجرا شده و فایل لاگ از نام موقت به نام نهایی کپی می‌شود. در انتها، نام فایل موقت حذف می‌گردد. گزینه renamecopy اجازه ذخیره لاگ‌های چرخانده‌شده روی دستگاه‌های متفاوت را از طریق دستورالعمل olddir می‌دهد. گزینه renamecopy به طور ضمنی شامل nocopytruncate است.
فایل لاگ اصلی را تغییر نام نداده و کپی نمی‌کند (این گزینه، گزینه renamecopy را لغو می‌کند).
حذف فایل‌های لاگ با استفاده از shred -u به جای ()unlink. این کار تضمین می‌کند که لاگ‌ها پس از حذف زمان‌بندی‌شده دیگر قابل خواندن نباشند؛ این قابلیت به طور پیش‌فرض غیرفعال است. همچنین noshred را ببینید.
عدم استفاده از shred هنگام حذف فایل‌های لاگ قدیمی. همچنین shred را ببینید.
از GNU shred(1) می‌خواهد فایل‌های لاگ را پیش از حذف، به تعداد count بار رونویسی کند. بدون این گزینه، مقدار پیش‌فرض shred به کار گرفته می‌شود.
چرخش فایل‌هایی که چندین پیوند سخت (hard link) دارند؛ این گزینه به طور پیش‌فرض غیرفعال است. فایل مقصد ممکن است تخلیه شود، به عنوان مثال با shred یا copytruncate. با احتیاط استفاده شود، به ویژه زمانی که فایل‌های لاگ به عنوان ریشه (root) چرخانده می‌شوند.
فایل‌هایی با چندین پیوند سخت را نمی‌چرخاند. همچنین allowhardlink را ببینید.

نسخه‌های قدیمی فایل‌های لاگ به طور پیش‌فرض با gzip(1) فشرده می‌شوند. همچنین nocompress را ببینید.
نسخه‌های قدیمی فایل‌های لاگ فشرده نمی‌شوند. همچنین compress را ببینید.
مشخص می‌کند از چه دستوری برای فشرده‌سازی فایل‌های لاگ استفاده شود. پیش‌فرض gzip(1) است. همچنین compress را ببینید.
مشخص می‌کند از چه دستوری برای باز کردن فایل‌های لاگ فشرده استفاده شود. پیش‌فرض gunzip(1) است.
در صورت فعال بودن فشرده‌سازی، پسوند مورد استفاده برای فایل‌های لاگ فشرده‌شده را مشخص می‌کند. پیش‌فرض از دستور فشرده‌سازی تنظیم‌شده تبعیت می‌کند.
در صورت استفاده از برنامه فشرده‌سازی، می‌توان گزینه‌های خط فرمان را به آن ارسال کرد. پیش‌فرض برای gzip(1) مقدار "-6" است (تمایل به فشرده‌سازی بالا به بهای کاهش سرعت). اگر از دستور فشرده‌سازی دیگری استفاده می‌کنید، ممکن است نیاز باشد compressoptions را متناسب با آن تغییر دهید.
به تعویق انداختن فشرده‌سازی فایل لاگ قبلی تا چرخه بعدی چرخش. این گزینه تنها زمانی اثر دارد که همراه با compress به کار رود. این گزینه می‌تواند زمانی استفاده شود که نتوان به برنامه‌ای گفت فایل لاگ خود را ببندد و در نتیجه ممکن است تا مدتی به نوشتن در فایل لاگ پیشین ادامه دهد.
فشرده‌سازی فایل لاگ قبلی را به چرخه بعدی موکول نمی‌کند (این گزینه، گزینه delaycompress را لغو می‌کند).

فایل‌های لاگ با پسوند ext می‌توانند این پسوند را پس از چرخش حفظ کنند. اگر از فشرده‌سازی استفاده شود، پسوند فشرده‌سازی (معمولاً .gz) پس از ext ظاهر می‌شود. به عنوان مثال، شما یک فایل لاگ با نام mylog.foo دارید و می‌خواهید آن را به جای mylog.foo.1.gz به mylog.1.foo.gz بچرخانید.
پس از چرخش، به فایل‌های لاگ پسوند نهایی ext داده می‌شود. اگر فایل اصلی از قبل با ext تمام شده باشد، پسوند تکرار نمی‌شود بلکه صرفاً به انتها منتقل می‌گردد؛ یعنی هر دو نام filename و filenameext به filename.1ext چرخانده می‌شوند. اگر از فشرده‌سازی استفاده شود، پسوند فشرده‌سازی (معمولاً .gz) بعد از ext قرار می‌گیرد.
عددی است که به عنوان پایه برای چرخش استفاده می‌شود. برای مثال، اگر ۰ را مشخص کنید، لاگ‌ها با چرخش از فایل‌های لاگ اصلی با پسوند ‎.0 ایجاد می‌شوند. اگر ۹ را مشخص کنید، فایل‌های لاگ با ‎.9 ساخته می‌شوند و از ۰ تا ۸ رد می‌شوند. فایل‌ها همچنان به تعداد دفعات مشخص‌شده با دستورالعمل rotate چرخانده خواهند شد.
بایگانی نسخه‌های قدیمی فایل‌های لاگ با افزودن پسوند تاریخ مانند YYYYMMDD به جای اضافه کردن یک عدد. این پسوند می‌تواند با استفاده از گزینه‌های dateformat و dateyesterday پیکربندی شود.
عدم بایگانی نسخه‌های قدیمی فایل‌های لاگ با پسوند تاریخ (این گزینه، گزینه dateext را لغو می‌کند).
مشخص کردن پسوند برای dateext با استفاده از نشانه‌گذاری مشابه تابع strftime(3). تنها مشخص‌کننده‌های %Y %m %d %H %M %S %V %s و %z مجاز هستند. مقدار پیش‌فرض ‎-%Y%m%d است، به جز برای ساعتی (hourly) که از ‎-%Y%m%d%H به عنوان مقدار پیش‌فرض استفاده می‌کند. توجه داشته باشید نویسه‌ای که نام لاگ را از پسوند جدا می‌کند نیز بخشی از رشته dateformat است. ساعت سیستم باید پس از ۹ سپتامبر ۲۰۰۱ تنظیم شده باشد تا %s به درستی کار کند. توجه داشته باشید برچسب‌های زمانی تولیدشده با این قالب باید از نظر واژگانی قابل مرتب‌سازی باشند (یعنی ابتدا سال، سپس ماه و پس از آن روز؛ مثلاً ۲۰۰۱/۱۲/۰۱ درست است، اما ۰۱/۱۲/۲۰۰۱ درست نیست، زیرا ۰۱/۱۱/۲۰۰۲ با وجود اینکه بعداً رخ داده، در رتبه پایین‌تری قرار می‌گیرد). این بدان دلیل است که هنگام استفاده از گزینه rotate، برنامه logrotate تمام نام‌های فایل‌های چرخانده‌شده را مرتب می‌کند تا متوجه شود کدام لاگ‌ها قدیمی‌تر هستند و باید حذف شوند.
استفاده از تاریخ دیروز به جای تاریخ امروز برای ایجاد پسوند dateext، تا فایل لاگ چرخانده‌شده تاریخی در نام خود داشته باشد که با برچسب‌های زمانی درون آن یکسان است.
استفاده از یک ساعت قبل به جای تاریخ فعلی برای ساخت پسوند dateext، تا فایل لاگ چرخانده‌شده ساعتی در نام خود داشته باشد که مشابه برچسب‌های زمانی درون آن است. همراه با چرخش hourly مفید است.

هنگامی که یک لاگ بر اثر چرخش از دور خارج و حذف می‌شود، به address ایمیل می‌گردد. اگر نباید هیچ ایمیلی برای یک لاگ خاص تولید شود، می‌توان از دستورالعمل nomail استفاده کرد.
عدم ارسال ایمیل فایل‌های لاگ قدیمی به هر آدرسی.
هنگام استفاده از دستور mail، فایلی که به تازگی چرخانده شده است ایمیل شود، به جای فایلی که در شرف انقضا است.
هنگام استفاده از دستور mail، فایلی که در شرف انقضا است ایمیل شود، به جای فایلی که به تازگی چرخانده شده است (این حالت پیش‌فرض است).

فایل ارائه‌شده به عنوان آرگومان را به گونه‌ای می‌خواند که گویی در محل ظاهر شدن دستورالعمل include به صورت درون‌خطی گنجانده شده است. اگر یک دایرکتوری داده شود، اکثر فایل‌های موجود در آن دایرکتوری به ترتیب الفبایی پیش از ادامه پردازش فایل دربرگیرنده خوانده می‌شوند. تنها فایل‌هایی نادیده گرفته می‌شوند که فایل عادی نیستند (مانند دایرکتوری‌ها و لوله‌های نام‌گذاری‌شده) و فایل‌هایی که نام آنها با یکی از پسوندها یا الگوهای ممنوعه پایان می‌یابد، همان‌گونه که به ترتیب توسط دستورالعمل‌های tabooext یا taboopat مشخص شده است. مسیر ارائه‌شده می‌تواند با ~/ آغاز شود تا نسبت به دایرکتوری خانگی کاربر در حال اجرا سنجیده شود. به دلایل امنیتی، فایل‌های پیکربندی نباید توسط گروه یا همگان قابل نوشتن باشند.

به طور معمول، اسکریپت‌های prerotate و postrotate به ازای هر لاگی که چرخانده می‌شود اجرا می‌گردند و مسیر مطلق فایل لاگ به عنوان نخستین آرگومان به اسکریپت فرستاده می‌شود. این بدان معناست که یک اسکریپت ممکن است برای مدخل‌های فایل لاگی که با چندین فایل تطابق دارند (مانند مثال /var/log/news/*) چندین بار اجرا شود. اگر sharedscripts مشخص شود، اسکریپت‌ها صرف‌نظر از تعداد لاگ‌هایی که با الگوی دارای نویسه عام مطابقت دارند تنها یک بار اجرا می‌شوند و کل الگو به آنها ارسال می‌گردد. با این حال، اگر هیچ‌یک از لاگ‌های موجود در الگو نیازی به چرخش نداشته باشند، اسکریپت‌ها اصلاً اجرا نخواهند شد. اگر اسکریپت‌ها با خطا خارج شوند (یا چرخش هر لاگی با شکست مواجه شود)، اقدامات باقی‌مانده برای هیچ لاگی انجام نخواهد شد. این گزینه، گزینه nosharedscripts را لغو می‌کند.
اجرای اسکریپت‌های prerotate و postrotate برای هر فایل لاگی که چرخانده می‌شود (این حالت پیش‌فرض است و گزینه sharedscripts را لغو می‌کند). مسیر مطلق فایل لاگ به عنوان اولین آرگومان به اسکریپت داده می‌شود. مسیر مطلق فایل لاگ نهایی چرخانده‌شده به عنوان آرگومان دوم به اسکریپت postrotate داده می‌شود. اگر اسکریپت‌ها با خطا خارج شوند، اقدامات باقی‌مانده تنها برای همان لاگ مربوطه اجرا نخواهد شد.

    script

اسکریپت script یک بار پیش از چرخش تمام فایل‌های لاگی که با الگوی نویسه عام مطابقت دارند، قبل از اجرای اسکریپت prerotate و تنها در صورتی که حداقل یک لاگ واقعاً چرخانده شود، اجرا می‌شود. این دستورالعمل‌ها تنها می‌توانند درون تعریف یک فایل لاگ قرار گیرند. کل الگو به عنوان اولین آرگومان به اسکریپت داده می‌شود. اگر اسکریپت با خطا خارج شود، هیچ پردازش دیگری انجام نخواهد شد. همچنین lastaction و بخش اسکریپت‌ها را ببینید.

    script

اسکریپت script یک بار پس از چرخش تمام فایل‌های لاگی که با الگوی نویسه عام مطابقت دارند، بعد از اجرای اسکریپت postrotate و تنها در صورتی که حداقل یک لاگ چرخانده شود، اجرا می‌شود. این دستورالعمل‌ها فقط می‌توانند درون تعریف یک فایل لاگ قرار گیرند. کل الگو به عنوان اولین آرگومان به اسکریپت تحویل داده می‌شود. اگر اسکریپت با خطا خارج شود، فقط یک پیام خطا نشان داده می‌شود (زیرا این آخرین اقدام است). همچنین firstaction و بخش اسکریپت‌ها را ببینید.

    script

اسکریپت script قبل از اینکه فایل لاگ و لاگ‌های قدیمی آن چرخانده شوند، و فقط در صورتی که لاگ واقعاً قرار باشد چرخانده شود، اجرا می‌شود. این دستورالعمل‌ها تنها می‌توانند درون تعریف یک فایل لاگ باشند. به طور معمول، مسیر مطلق فایل لاگ به عنوان آرگومان اول به اسکریپت تحویل داده می‌شود. اگر sharedscripts تعیین شده باشد، کل الگو به اسکریپت داده می‌شود. همچنین postrotate و بخش اسکریپت‌ها را ببینید. برای مدیریت خطا، به sharedscripts و nosharedscripts مراجعه کنید.

    script

اسکریپت script پس از چرخش فایل لاگ و پیش از فشرده‌سازی آن اجرا می‌شود. این دستورالعمل‌ها تنها می‌توانند درون تعریف یک فایل لاگ قرار گیرند. به طور معمول، مسیر مطلق فایل لاگ به عنوان آرگومان اول و مسیر مطلق فایل لاگ نهایی چرخانده‌شده به عنوان آرگومان دوم به اسکریپت تحویل داده می‌شود. اگر sharedscripts تعیین شده باشد، کل الگو به عنوان آرگومان اول به اسکریپت ارسال می‌شود و آرگومان دوم حذف می‌گردد. همچنین prerotate و بخش اسکریپت‌ها را ببینید. برای مدیریت خطا، به sharedscripts و nosharedscripts مراجعه کنید.

    script

اسکریپت script فقط یک بار درست قبل از حذف یک فایل لاگ اجرا می‌شود. logrotate نام فایلی را که به زودی حذف می‌شود به عنوان اولین آرگومان به اسکریپت ارسال می‌کند. همچنین firstaction و بخش اسکریپت‌ها را ببینید.

سطرهای بین کلیدواژه آغازین (مانند prerotate) و endscript (که هر دو باید به تنهایی در سطرهایی مجزا قرار گیرند) با استفاده از /bin/sh اجرا می‌شوند. اسکریپت برخی از ویژگی‌ها را از فرآیند logrotate به ارث می‌برد، از جمله stderr، stdout، دایرکتوری جاری، متغیرهای محیطی (environment) و ماسک دسترسی (umask). اسکریپت‌ها با کاربر و گروه فراخواننده اجرا می‌شوند، صرف‌نظر از هر دستورالعمل su که ممکن است تعیین شده باشد. اگر سوییچ --log مشخص شده باشد، توصیف‌گر فایل شماره ۳ همان فایل لاگ خواهد بود. دایرکتوری کاری جاری نامشخص است.

شناسه‌های کاربر و گروه ابتدا با ارزیابی نمایش متنی آنها تعیین می‌شوند و در صورت ناموفق بودن، پس از آن از طریق مقدار عددی آنها ارزیابی می‌گردند.

/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

Erik Troan, Preston Brown, Jan Kaluza.
<https://github.com/logrotate/logrotate>
3.22.0 Linux