Linux logrotate命令介绍
logrotate
是Linux系统中的日志管理工具,它可以自动地轮换、压缩、删除和邮件系统日志文件。logrotate
可以处理任何你想要的日志文件,并且不需要修改日志生成的方式。
Linux logrotate命令适用的Linux版本
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的系统
Linux logrotate命令的基本语法
logrotate
的基本语法格式如下:
logrotate [options] config_file
其中,options
是命令选项,config_file
是logrotate
的配置文件。
Linux logrotate命令的常用选项或参数说明
下面是logrotate
命令的一些常用选项:
选项 | 说明 |
---|---|
-d | 调试模式,显示出会进行的操作但并不真正执行 |
-f | 强制轮换 |
-m | 发送日志文件的邮件 |
-s | 状态文件名 |
-v | 显示错误信息 |
Linux logrotate命令实例详解
实例1:查看logrotate版本
[linux@bashcommandnotfound.cn ~]$ logrotate --version
这个命令会显示出logrotate
的版本信息。
实例2:强制轮换日志文件
[linux@bashcommandnotfound.cn ~]$ logrotate -f /etc/logrotate.conf
这个命令会强制轮换/etc/logrotate.conf
配置文件中指定的日志文件。
实例3:创建一个简单的logrotate配置文件
[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
服务。
实例4:查看logrotate的状态
[linux@bashcommandnotfound.cn ~]$ cat /var/lib/logrotate/status
这个命令会显示出logrotate
的状态信息,包括每个日志文件最后一次被轮换的时间。
实例5:手动轮换指定的日志文件
[linux@bashcommandnotfound.cn ~]$ logrotate --force /etc/logrotate.d/myapp
这个命令会强制轮换/etc/logrotate.d/myapp
配置文件中指定的日志文件。
实例6:使用debug模式测试配置文件
[linux@bashcommandnotfound.cn ~]$ logrotate -d /etc/logrotate.d/myapp
这个命令会在debug模式下运行logrotate
,显示出会进行的操作但并不真正执行。这对于测试新的配置文件非常有用。
实例7:修改logrotate的状态文件路径
[linux@bashcommandnotfound.cn ~]$ logrotate -s /var/lib/myapp/logrotate.status /etc/logrotate.d/myapp
这个命令会修改logrotate
的状态文件路径,然后轮换/etc/logrotate.d/myapp
配置文件中指定的日志文件。
实例8:使用-m选项发送日志文件
[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
用户。
实例9:使用-v选项显示详细信息
[linux@bashcommandnotfound.cn ~]$ logrotate -v /etc/logrotate.conf
这个命令会在轮换日志文件时显示详细的信息,包括每个被轮换的日志文件的名称和轮换的结果。
Linux logrotate命令的注意事项
logrotate
是一个非常强大的工具,但是也需要谨慎使用。在使用logrotate
之前,一定要确保你理解了它的配置文件的含义。- 如果你在使用
logrotate
时遇到了bash: logrotate: command not found
的错误,那么可能是你的系统中没有安装logrotate
。你可以按照上面的方法进行安装。