赞
踩
logrotate
是Linux系统中的日志管理工具,它可以自动地轮换、压缩、删除和邮件系统日志文件。logrotate
可以处理任何你想要的日志文件,并且不需要修改日志生成的方式。
logrotate
命令在大多数Linux发行版中都是默认安装的,包括Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian等。如果你发现你的系统中没有安装logrotate
,你可以使用下面的命令进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install logrotate # 对于Debian、Ubuntu、Raspbian等使用apt的系统
[linux@bashcommandnotfound.cn ~]$ sudo yum install logrotate # 对于CentOS 7、Fedora等使用yum的系统
[linux@bashcommandnotfound.cn ~]$ sudo dnf install logrotate # 对于CentOS 8、Fedora等使用dnf的系统
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S logrotate # 对于Arch Linux、Manjaro等使用pacman的系统
[linux@bashcommandnotfound.cn ~]$ sudo apk add logrotate # 对于Alpine Linux使用apk的系统
logrotate
的基本语法格式如下:
logrotate [options] config_file
其中,options
是命令选项,config_file
是logrotate
的配置文件。
下面是logrotate
命令的一些常用选项:
选项 | 说明 |
---|---|
-d | 调试模式,显示出会进行的操作但并不真正执行 |
-f | 强制轮换 |
-m | 发送日志文件的邮件 |
-s | 状态文件名 |
-v | 显示错误信息 |
[linux@bashcommandnotfound.cn ~]$ logrotate --version
这个命令会显示出logrotate
的版本信息。
[linux@bashcommandnotfound.cn ~]$ logrotate -f /etc/logrotate.conf
这个命令会强制轮换/etc/logrotate.conf
配置文件中指定的日志文件。
[linux@bashcommandnotfound.cn ~]$ cat > /etc/logrotate.d/myapp << EOF
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
postrotate
/etc/init.d/myapp restart > /dev/null
endscript
}
EOF
这个实例创建了一个logrotate
配置文件,用于管理/var/log/myapp/*.log
的日志文件。这个配置文件的含义是:每天轮换一次日志文件,保留最近7天的日志文件,压缩旧的日志文件,如果日志文件不存在或者为空则忽略,每次轮换后重启myapp
服务。
[linux@bashcommandnotfound.cn ~]$ cat /var/lib/logrotate/status
这个命令会显示出logrotate
的状态信息,包括每个日志文件最后一次被轮换的时间。
[linux@bashcommandnotfound.cn ~]$ logrotate --force /etc/logrotate.d/myapp
这个命令会强制轮换/etc/logrotate.d/myapp
配置文件中指定的日志文件。
[linux@bashcommandnotfound.cn ~]$ logrotate -d /etc/logrotate.d/myapp
这个命令会在debug模式下运行logrotate
,显示出会进行的操作但并不真正执行。这对于测试新的配置文件非常有用。
[linux@bashcommandnotfound.cn ~]$ logrotate -s /var/lib/myapp/logrotate.status /etc/logrotate.d/myapp
这个命令会修改logrotate
的状态文件路径,然后轮换/etc/logrotate.d/myapp
配置文件中指定的日志文件。
[linux@bashcommandnotfound.cn ~]$ cat > /etc/logrotate.d/myapp << EOF
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
mail root
postrotate
/etc/init.d/myapp restart > /dev/null
endscript
}
EOF
[linux@bashcommandnotfound.cn ~]$ logrotate -m "/usr/bin/mail -s 'logrotate status' root" /etc/logrotate.conf
这个实例中,-m
选项后面跟的是一个命令,这个命令会在每次轮换后执行,用于发送日志文件。这里的命令是/usr/bin/mail -s 'logrotate status' root
,意思是发送一封主题为logrotate status
的邮件给root
用户。
[linux@bashcommandnotfound.cn ~]$ logrotate -v /etc/logrotate.conf
这个命令会在轮换日志文件时显示详细的信息,包括每个被轮换的日志文件的名称和轮换的结果。
logrotate
是一个非常强大的工具,但是也需要谨慎使用。在使用logrotate
之前,一定要确保你理解了它的配置文件的含义。logrotate
时遇到了bash: logrotate: command not found
的错误,那么可能是你的系统中没有安装logrotate
。你可以按照上面的方法进行安装。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。