在 RHEL/CentOS 7 上安装 vnstat
vnstat 是一个监控网络流量使用的命令行工具,大多数发行版都可以使用包管理器轻松安装 vnstat,但是 RHEL/CentOS 7 有着极为稳定且老旧的运行库,最新版 vnstat 只能通过手动编译的方法安装
较新版本的 RHEL 系发行版
RHEL 8/9
(也包括 CentOS 8
、CentOS Stream 8/9
、仍在支持的 Fedora
、以及各大云厂商魔改的 RHEL) 应该不需要这个教程,因为 EPEL 会自动为这些发行版提供新版本的 vnstat
如果你使用较新版本的 RHEL 系发行版,直接使用这个命令安装: dnf install vnstat
在 RHEL/CentOS 7
或者老版本的 RHEL 系发行版安装 vnstat,就只能采取手动编译的方法了
(包管理器仍然可以下载安装,但是版本十分老旧,缺少很多新功能,数据库格式也和新版本有很大差别)
(不建议更改软件源。这个操作可能会炸掉你系统其他的包)
一键命令
不想看全文的,可以直接用这个命令解决:
- sh
1 | yum install sudo wget tar gcc make gd gd-devel -y |
安装教程
安装必要的依赖
- sh
1 | yum install sudo wget tar gcc make gd gd-devel |
gd gd-devel
是可选依赖,如果你不需要 vnstati
就可以去掉这两个包
下载并解压
浏览器打开 vnstat 项目页面
复制下来稳定版源码的下载链接(你也可以使用 git 来获取源码)
- sh
1 | wget https://humdi.net/vnstat/vnstat-2.10.tar.gz |
编译安装
- sh
1 | ./configure --prefix=/usr --sysconfdir=/etc |
两个参数一个是安装目录,一个是配置文件目录
- sh
1 | make -j$(nproc) |
多线程编译并安装到设置的目录
自启动
Systemd
- sh
1 | sudo cp examples/systemd/vnstat.service /usr/lib/systemd/system |
SysVinit(init.d)
- sh
1 | sudo cp examples/init.d/centos/vnstat /etc/init.d/myservice |
卸载
- sh
1 | ./configure --prefix=/usr --sysconfdir=/etc |
和安装类似,两个参数一个是卸载目录,一个是将要删除的配置文件目录(如果目录非空,不会直接把你整个 /etc 删掉的)
在编译目录(/tmp/vnstat-2.10
)执行上面的命令即可,如果编译目录删除了,需要重新下载解压
卸载不会自动删除数据库,你可以手动删除数据库(配置文件开头定义了数据库路径,默认是 /var/lib/vnstat
)
坑
装完注意检查一下 vnstat
、vnstatd
、vnstati
的版本,之前遇到过 vnstat
和 vnstatd
版本不一致的问题,程序不工作,但是也没有任何报错