本文介绍在Linux操作系统中安装vnStat的方法,适用于Arch、Debian、Uubntu、Linux Mint、Redhat、CentOS、Fedora、openSUSE发行版上。

简介

VnStat是一款免费、开源、轻量级、基于控制台的网络流量监控器,使用此工具,我们可以轻松找到消耗的网络带宽,并按小时、每天、每月或特定时间段显示结果,它收集单个或多个网络接口的使用详细信息,并在命令行中显示摘要,我们可以使用此工具计算每月或每天或特定时间段的大量互联网带宽使用量。

在Linux上安装vnStat

VnStat可在现代Linux和Unix操作系统的默认存储库中使用,你可以使用你的发行版的软件包管理器来安装它。

基于Arch的系统:

确保你已启用[Community]存储库并使用pacman安装它,如下所示:

$ sudo pacman -S vnstat

在Debian、Uubntu、Linux Mint上:

$ sudo apt-get install vnstat

在Ubuntu上,你可能需要启用[Universe]存储库来安装vnstat,参考Ubuntu存储库的定义及启用和禁用Ubuntu存储库的方法。

在Redhat、CentOS上,首先添加并启用EPEL存储库:

$ sudo yum install epel-release

然后安装vnStat,如上所示:

$ sudo yum install vnstat

在Fedora上:

$ sudo dnf install vnstat

在openSUSE上:

$ sudo zypper install vnstat

附:在FreeBSD上安装vnStat

使用命令以root用户身份安装vnStat:

# pkg update
# pkg install vnstat

安装后,启用并启动vnStat服务,如下所示:

# echo 'vnstat_enable="YES"' >> /etc/rc.conf
# service vnstat start

样本输出:

Starting vnstat.
No interfaces found in database, adding available interfaces...
Interface "em0" added with 1000 Mbit bandwidth limit.
-> 1 new interface found.
Limits can be modified using the configuration file. See "man vnstat.conf".
Unwanted interfaces can be removed from monitoring with "vnstat --remove".".

安装后的操作:启动vnStat服务

安装vnStat后,使用命令启动它:

$ sudo systemctl enable --now vnstat

你无需在基于DEB的系统上启动vnstat,因为它将在安装期间自动启动。

运行以下命令测试下:

$ vnstat

设置容器默认网络 设置默认上网_配置文件

运行vnstat -i enp0s3命令:

设置容器默认网络 设置默认上网_设置容器默认网络_02

运行vnstat -i em0命令:

设置容器默认网络 设置默认上网_配置文件_03

运行vnstat -h命令:

设置容器默认网络 设置默认上网_网络接口_04

使用帮助

使用vnStat监控网络带宽,请运行以下命令以显示vnStat的帮助信息:

$ vnstat --help

返回信息如下:

vnStat 1.18 by Teemu Toivola 
-q,  --query:query database
-h,  --hours:show hours
-d,  --days:show days
-m,  --months:show months
-w,  --weeks:show weeks
-t,  --top10:show top 10 days
-s,  --short:use short output
-u,  --update:update database
-i,  --iface:select interface (default: eth0)
-?,  --help:short help
-v,  --version:show version
-tr, --traffic:calculate traffic
-ru, --rateunit:swap configured rate unit
-l,  --live:show transfer rate in real time
See also "--longhelp" for complete options list and "man vnstat

附:在Linux上配置默认网络接口

vnStat在其配置文件(/etc/vnstat.conf)中使用eth0作为默认网络接口。

但是,在某些Linux系统(例如Ubuntu)中,网络接口名称可能不同,如enp0s3、enp0s8,你可以使用“ip addr”命令验证网络接口的名称。

我们来看看vnstat配置文件的内容。

$ head /etc/vnstat.conf

样本输出:

# vnStat 1.18 config file
##
# default interface
Interface "eth0"
# location of the database directory
DatabaseDir "/var/lib/vnstat"
# locale (LC_ALL) ("-" = use system locale)

如你所见,此文件中的默认界面是etho。

让我们检查vnstat标识的可用网络接口:

$ ls /var/lib/vnstat
enp0s3 enp0s8

如你所见,可用的网络接口与vnstat.conf文件中定义的网络接口不同。

如果未设置正确的默认接口,则每小时或每月查看网络带宽流量时可能会出现以下错误:

Error: Unable to read database "/var/lib/vnstat/eth0": No such file or directory

发生这种情况是因为/etc/vnstat.conf文件中的默认接口是错误的。

要配置默认网络接口,请编辑/etc/vnstat.conf文件并更新正确的接口名称,你可以直接编辑/etc/vnstat.conf文件并全局更新接口名称,但是,建议在用户的HOME目录中创建自己的vnstat配置文件:

$ cp /etc/vnstat.conf ~/.vnstatrc
$ nano ~/.vnstatrc

我将使用enp0s3作为我的默认界面:

设置容器默认网络 设置默认上网_配置文件_05

注:用你自己的替换enp0s3,保存并关闭文件。