سؤال / var / log / account / pacct أصبح كبيرًا جدًا ، أين ckpacct (إلى cicle / gzip it)؟


حصلت على ملفين كبيرين في /var/log/account، من 350MB لكل ... ، بلدي الجذر هو 10GB فقط ...

قرأت هناك يمكن أن يكون ckpacct لدورة و gzip ، ولكن لا أستطيع العثور عليه ، أيضا أي قيادة بديلة؟

تحرير: لقد وجدت ذلك sudo accton off تعطيل التسجيل ولكن تبقى الملفات هناك ، وأعتقد أن التمهيد التالي سيتم تنشيطه مرة أخرى ...

يبدو أنهم يجري تدوير ولكن من يفعل ذلك في الواقع؟

369114432 May 13 23:23 /var/log/account/pacct
333708160 May 13 12:27 /var/log/account/pacct.0
 13681065 May 12 16:21 /var/log/account/pacct.1.gz
  3371433 May 11 09:50 /var/log/account/pacct.2.gz
  7549333 May 10 07:35 /var/log/account/pacct.3.gz

تحرير: مخطوطاتي التمهيد تخمين يفعل الدورة ... على أي حال ، أنا خلقت هذا البرنامج النصي ، ولكني لا أعرف ما هي الآثار السلبية التي قد تنطوي عليها .. أي اعتبارات؟

cat >ckpacct.sh

#!/bin/bash

if [[ -n "$1" ]]; then
  echo "there is no parameters and no --help, read the script and understand what is does, before running it up."
  exit 1
fi

if [[ "$USER" != "root" ]]; then
    echo "you must be root to run it..."
    exit 1
fi

function FUNCerror() {
    if(($1!=0));then exit 1; fi
}

cd /var/log/account;FUNCerror $?

# fast ungrab pacct file
accton off;FUNCerror $?

mv -v pacct pacct.0.temp;FUNCerror $?

echo -n |tee pacct;FUNCerror $?
chown -v root:adm pacct;FUNCerror $?
chmod -v o-r pacct;FUNCerror $?

accton on;FUNCerror $?

# compress old 0
gzip -v --best pacct.0;FUNCerror $? #releases also pacct.0 filename

mv -v pacct.0.temp pacct.0;FUNCerror $? #restore new 0 from temp

# change file names upping indexes
#mv -v pacct pacct.0
for((i=4;i>=0;i--));do
    mv -v pacct.$i.gz pacct.$((i+1)).gz;FUNCerror $?
done
rm -v pacct.5.gz;FUNCerror $? # remove last in the limit

2
2018-05-14 02:15


الأصل




الأجوبة:


يوجد البرنامج النصي الذي يقوم بدورة السجلات /etc/cron.daily/acct. يتم التحكم في عدد ملفات السجل بواسطة /etc/default/acctوالذي يتحكم أيضًا في ضرورة تمكين محاسبة العمليات في وقت التمهيد.

إذا كنت تريد إزالة عملية المحاسبة بالكامل ، sudo apt-get purge acct يجب أن تفعل الخدعة أيضًا.


1
2018-03-30 19:05





أدرك أن هذا سؤال قديم ، ولكن بما أنه لم تتم الإجابة عليه ...

أفترض أن logrotate يقوم بتدوير السجل الخاص بك. تحقق من crontab الخاص بك ("crontab -l") لمهمة logrotate التي تحدد ملف conf. ابحث في ملف conf هذا عن التفاصيل المتعلقة بـ / var / log / account / pacct.

لم أقرأ النص الخاص بك عن كثب ، ولكن يبدو أنك تكرر ما يفعله logrotate - لا؟


0
2017-12-04 17:12



لي crontab -l للمستخدم العادي والمستخدم الجذر على حد سواء فارغة :(. على ما أذكر ، يبدو أن دوران السجل التلقائي يحدث في كل التمهيد وترتبط بتاريخ الملف وليس حجم الملف ، لذلك أنا بحاجة إلى حل هندستها نحو مساحة القرص :) - Aquarius Power
لقد قمت بإنشاء ملف تهيئة لبرنامج logrotate الذي كان ناجحًا ، لكنه يعمل مرة واحدة فقط ويقوم بحذف ملف السجل الأصلي مما يدفعني إلى إعادة إنشاءه. في الأساس ، سأحتاج إلى وضع هذا في حلقة: accton off;logrotate lracct.cfg;echo -n |tee /var/log/account/pacct;accton on، أو إضافة إلى crontab في بعض الطريق أعتقد (لم تستخدم قط crontab). - Aquarius Power
عذرا - مجرد رؤية الردود الخاصة بك ، ولكن نعم ، تحتاج إلى إضافته إلى crontab. يمكنك تكوين logrotate لتخزين أكثر من إصدار قديم من السجل ، ويجب أن يعالج logrotate "إيقاف مؤقت" accton أثناء تدوير ملف السجل. وهل "صدى الانطلاق" في المثال الخاص بك أساسا "لمسة" من الملف؟ قد يكون ذلك أكثر وضوحًا قليلاً (إذا قررت المضي في هذا الطريق). - skydvr


الحصول على cron cron إلى cron.hourly بدلا من يوميا ؛)

ثم ضع هذه القيم في الملف / etc / default / acct:

ACCT_ENABLE = "1"

عدد الأيام التي يتم فيها الاحتفاظ بالسجلات.

ACCT_LOGGING = "2" # لا يمكنك تعيين هذا أقل من 2 إذا كنت لا تريد أن يتلقى حساب ACT خطأً


0
2017-12-03 05:19