�����ڵ�λ�ã� ������ >> ������ >> Linux >> ����

linux����־��ʱ��ѯ������

���ߣ����� ��Դ���������� ����ʱ�䣺2017-7-24
�����

 logrotate����

 

����Linuxϵͳ��ȫ��˵����־�ļ��Ǽ�����Ҫ�Ĺ��ߡ���־�ļ������˹���ϵͳ�з������¼���������Ϣ�������Ϲ����л���ϵͳ���ܷ���ʱ�������õ�������־�ļ�����������ʱ�򣬾���Ҫ��ʱ�и����д��־���ٶȺ�����Ҳ���½��������������ǹ鵵����ѯ��

���Ա�����ʹ��logrotate��ʱ�� ��logrotate�Ǹ�ʮ�����õĹ��ߣ��������Զ�����־���нضϣ�����ѭ����ѹ���Լ�ɾ���ɵ���־�ļ������磬���������logrotate����/var/log/foo��־�ļ�ÿ30����ѭ����ɾ������6���µ���־���������logrotate��������ȫ�Զ��������ؽ����κν�һ������Ϊ��Ԥ��

logrotate�����ļ�λ��

LinuxϵͳĬ�ϰ�װlogrotate���ߣ���Ĭ�ϵ������ļ��ڣ�

/etc/logrotate.conf

/etc/logrotate.d/

logrotate.conf ����Ҫ�������ļ���logrotate.d ��һ��Ŀ¼����Ŀ¼��������ļ����ᱻ�����Ķ���/etc/logrotate.conf��ִ�С�

���⣬��� /etc/logrotate.d/ ������ļ���û���趨һЩϸ�ڣ������/etc/logrotate.conf����ļ����趨����ΪĬ��ֵ��

ʵ������ʱ��Logrotate����������ļ�/etc/logrotate.conf��

������/etc/logrotate.dĿ¼������Զ���õ������ļ�����������Logrotate��ȱʡֵ��

��ʱ��ѭ����

Logrotate�ǻ���CRON�����еģ���ű���/etc/cron.daily/logrotate����־��ת��ϵͳ�Զ���ɵġ�

logrotate�������Ĭ�Ϸ���cron��ÿ�ն�ʱ����cron.daily���� /etc/cron.daily/logrotate

/etc/Ŀ¼���滹��cron.weekly/, cron.hourly/, cron.monthly/ ��Ŀ¼���ǿ��ԷŶ�ʱ�����

[/etc]$ cat /etc/cron.daily/logrotate
#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
 [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

����ʵ�ʲ�����ѯ���������һ��

/usr/sbin/logrotate /etc/logrotate.conf

�������ÿ��ִ������Ľű�cron.daily/logrotate ���ٲ鿴crontab�����ݣ��������ú��˶�Ӧ��cron.xxly

ִ��ʱ��

[/etc]$ vim /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

���Կ�������ֻҪ����

  • /etc/cron.daily/ �����������ÿ��6��25 ִ��
  • /etc/cron.weekly/ �����������ÿ���� 6��47 ִ��
  • /etc/cron.monthly/ �����������ÿ��1�� 6��52 ִ��

����Ȳ���cron�Զ�ִ����־��ת�����ֶ�ǿ���и���־����Ҫ��-f������

������ʽִ��ǰ���ͨ��Debugѡ������֤һ�£�-d����������Ե���Ҳ����Ҫ

# /usr/sbin/logrotate -f /etc/logrotate.d/nginx // δ��ʱ�����δ���и�������ǿ���и�
# /usr/sbin/logrotate -d -f /etc/logrotate.d/nginx // ����и�debug��Ϣ

��ô���ˣ����Ǿ�֪��logrotate�����ʵ���Զ��и���־��

logrotate����

nginx ������־�и�����

/data/log/nginx/*.log /data/log/nginx/*/*.log { # ��ƥ���ϵ���־�ļ������и�
 weekly # ÿ���и�
 missingok  # ����־��ѭ�ڼ䣬�κδ��󽫱����ԣ�����“�ļ��޷��ҵ�”֮��Ĵ���
 rotate 6  # ���� 6 ������
 compress  # ѹ��
 delaycompress # delaycompress �� compress һ��ʹ��ʱ��ת������־�ļ�����һ��ת��ʱ��ѹ��
 notifempty  # ����ǿ��ļ��Ļ�����ת��
 create 0644 www-data ymserver  # mode owner group ת���ļ���ʹ��ָ�����ļ�ģʽ�����µ���־�ļ�
 sharedscripts # ������ϸ˵
 prerotate # ��logrotateת��֮ǰ��Ҫִ�е�ָ������޸��ļ������Եȶ����������������
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
   run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
 endscript
 postrotate # ��logrotateת��֮����Ҫִ�е�ָ������������ (kill -HUP) ij�����񣡱����������
  [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
 endscript
 su root ymserver # ��ѵ��־ʱ�л����õ��û�/�û�����ִ�У�Ĭ����root����������õ�user/group û��Ȩ��ȥ���ļ����� create ѡ��ָ����ӵ���� ���ᴥ������
}

���Ҫ����һ��ÿ��0��ִ���и�������ô���������ǵ�logrotateĬ��ÿ��ִ��ʱ���Ѿ�д����/etc/cron.daily/Ŀ¼���棬�����Ŀ¼���������ִ��ʱ������Ҳ˵�ˣ���/etc/crontab���涨����ʱ6��25��

��֮ǰ���и����������󣬿������������

/data/log/owan_web/chn_download_stat/chn_app_rec.log {
 copytruncate
 # weekly ע���� ���ǻ�̳�/etc/logrorate.conf��ȫ�ֱ�����Ҳ��weekly
 missingok
 rotate 10
 compress
 delaycompress
 size = 000M # ��С����size��ʼת�� ���������size,������ daily, weekly,monthly ָ�����size�����ȼ��Ƚϸ�
 notifempty
 create 664 www-data ymserver
 su root
 dateext  //�����������Ҫ�������и�����־�ļ��Ե�ǰ����Ϊ��ʽ��β����xxx.log-20131216����,���ע�͵�,�и�����ǰ����ֵ���,��ǰ��˵�� xxx.log-1���ָ�ʽ
 compress  //�Ƿ�ͨ��gzipѹ��ת���Ժ����־�ļ�����xxx.log-20131216.gz ���������Ҫѹ����ע�͵����
}

Ȼ��ȥroot��crontab����һ��0��ִ�е�����

wwwadm@host:/etc/logrotate.d$ sudo crontab -l -u root
0 0 * * * /usr/sbin/logrotate /etc/logrotate.d/web_roteate -fv >/tmp/logro.log 2>&1

��Ϊlogrotate���и�������weekly��ÿ���и�Ǹ�����һ���и��ʱ�������У����������һ����һ��ʱ�䣬�ͻ��и��������������crontab��ÿ���и�Ȳ������/etc/cron.daily/��ÿ���иҲ����ÿ���и�����������������Լ���Ҫ���и���־ʱ��

logrotate����˵��

compress ͨ��gzip ѹ��ת���Ժ����־

nocompress ����gzipѹ������

create mode owner group ��תʱָ���������ļ������ԣ���create 0777 nobody nobody

nocreate �������µ���־�ļ�

delaycompress ��compress һ��ʹ��ʱ��ת������־�ļ�����һ��ת��ʱ��ѹ��

nodelaycompress ���� delaycompress ѡ�ת��ͬʱѹ����

missingok �����־��ʧ�����������������һ����־

ifempty ��ʹ��־�ļ�Ϊ���ļ�Ҳ����ת�������logrotate��ȱʡѡ�

notifempty ����־�ļ�Ϊ��ʱ����������ת

mail address ��ת������־�ļ����͵�ָ����E-mail ��ַ

olddir directory ת�������־�ļ�����ָ����Ŀ¼������͵�ǰ��־�ļ���ͬһ���ļ�ϵͳ

noolddir ת�������־�ļ��͵�ǰ��־�ļ�����ͬһ��Ŀ¼��

sharedscripts ����postrotate�ű�����������������־����ת��ͳһִ��һ�νű������û�������������ôÿ����־��ת�󶼻�ִ��һ�νű�

prerotate ��logrotateת��֮ǰ��Ҫִ�е�ָ������޸��ļ������Եȶ����������������

postrotate ��logrotateת��֮����Ҫִ�е�ָ������������ (kill -HUP) ij�����񣡱����������

daily ָ��ת������Ϊÿ��

weekly ָ��ת������Ϊÿ��

monthly ָ��ת������Ϊÿ��

rotate count ָ����־�ļ�ɾ��֮ǰת���Ĵ�����0 ָû�б��ݣ�5 ָ����5 ������

dateext ʹ�õ���������Ϊ������ʽ

dateformat .%s ���dateextʹ�ã��������һ�г��֣������ļ��и����ļ������������dateextʹ�ã�ֻ֧�� %Y %m %d %s ���ĸ�����

size(��minsize) log-size ����־�ļ�����ָ���Ĵ�Сʱ��ת����log-size��ָ��bytes(ȱʡ)��KB (sizek)��MB(sizem).
����־�ļ� >= log-size ��ʱ���ת���� ����Ϊ�Ϸ���ʽ����������ʽ�ĵ�λ��Сдû���Թ���

size = 5 �� size 5 ��>= 5 ���ֽھ�ת����

size = 100k �� size 100k

size = 100M �� size 100M

���������size,������ daily, weekly,monthly ָ�����size�����ȼ��Ƚϸ�

ֵ��ע���һ�������ǣ�copytruncate

copytruncate ���û�����ѡ��Ļ���������ʽ���ǽ�ԭlog��־�ļ����ƶ�������log.1�ľ��ļ��� Ȼ�󴴽�һ���µ��ļ���

��������ˣ�������ʽ������ԭ��־�ļ������ҽ����ɴ�СΪ0���ļ���

�������������,����nginx ʹ����һ���ļ�д��־��û��copytruncate�Ļ����и���־ʱ�� �Ѿ���־log->log.1 ��Ȼ�󴴽�����־log����ʱ��nginx �򿪵��ļ���������Ȼʱlog.1����û���ź�֪ͨnginx Ҫ����־���������������������log.1д��־�������Ͳ��������ǵ�Ҫ���ˡ� ��Ϊ�������и���־��nginx �Զ������µ�log �ļ�д��־�������Ǿɵ�log.1�ļ�

���������������

1���������nginx �и���־���ã���postrotate����д���ű�

postrotate # ��logrotateת��֮����Ҫִ�е�ָ������������ (kill -HUP) ij�����񣡱����������
 [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
endscript

�������Ƿ��źŸ�nginx ,��nginx �رվ���־�ļ������������´��µ���־�ļ���������д����־

2��ʹ��copytruncate������������˵�ģ����������Ժ󣬲�����ʽ�ǰ�log ����һ�� ��Ϊlog.1��Ȼ�����log�����ݣ�ʹ��СΪ0���Ǵ�ʱlog��Ȼʱԭ���ľ�log���Խ��̣�nginx����˵����Ȼ�򿪵���ԭ�����ļ������������Լ���������д��־�������÷����źŸ�nginx

copytruncate���ַ�ʽ������ʱ�� ���������֮����һ��ʱ�����ܻᶪʧ������־���ݡ�

nocopytruncate ������־�ļ��������ض�

ת����ע��:������(лл����)

  • ��һƪ���£�
  • ��һƪ���£� û����
  • �������ۣ�