树莓派 vnstat 使用与流量使用情况不更新问题解决
使用 vnstat 可以查看统计树莓派每月的流量使用情况,也可以按天,按小时查看
安装
apt-get install vnstat
安装完成后,默认就已经启动了
监听网卡
先执行 ifconfig
查看网卡名称
pi@raspberrypi:~ $ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:2d:6b:f8 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1017611 bytes 2402900915 (2.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1017611 bytes 2402900915 (2.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.232.64 netmask 255.255.255.0 broadcast 192.168.232.255
inet6 fe80::8c0d:97f8:45a0:ba3c prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:78:3e:ad txqueuelen 1000 (Ethernet)
RX packets 1547168 bytes 1190326011 (1.1 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1838453 bytes 1454215554 (1.3 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果使用的网线插入,监听的应该是 eth0
执行
vnstat -u -i eth0
如果使用 wifi 连接网络,监听应该是 wlan0
执行
vnstat -u -i wlan0
执行命令需要在 root 用户下执行,因为执行的时候,会在 /var/lib/vnstat/
目录创建文件
如果在 pi 默认用户下执行,会提示权限问题
pi@raspberrypi:~ $ vnstat -u -i eth0
Error: Unable to read database "/var/lib/vnstat/eth0": 没有那个文件或目录
Error: Unable to open database "/var/lib/vnstat/eth0" for writing: 权限不够
pi@raspberrypi:~ $
使用
执行 vnstat --help
查看所有命令
下面是一些常用命令
vnstat -h #按小时查询
vnstat -d #按天数查询
vnstat -m #按月数查询
vnstat -w #按周数查询
vnstat -t #查询TOP10
也可以根据网卡查看小时数
例如查看有线网卡的一小时流量
vnstat -h -i eth0
查看 wifi 无线网络一小时流量
vnstat -h -i wlan0
vnstatd[10786]: Error: Unable to create database backup 错误解决
安装 vnstat
成功后,每次查看流量,一直保持一个固定值,通过命令 systemctl status vnstat
查看,发现有错误日志
10月 21 15:39:42 raspberrypi vnstatd[10786]: Info: Monitoring: eth0 (10 Mbit) wlan0 (1000 Mbit)
10月 21 15:44:42 raspberrypi vnstatd[10786]: Info: Database for interface "eth0" no longer exists.
10月 21 15:44:42 raspberrypi vnstatd[10786]: Info: Removing interface "eth0" from update list.
10月 21 15:44:42 raspberrypi vnstatd[10786]: Info: Monitoring: wlan0 (1000 Mbit)
10月 21 15:44:42 raspberrypi vnstatd[10786]: Error: Unable to create database backup "/var/lib/vnstat/.wlan0".
10月 21 15:44:42 raspberrypi vnstatd[10786]: Error: Unable to write database, continuing with cached data.
10月 21 15:49:42 raspberrypi vnstatd[10786]: Error: Unable to create database backup "/var/lib/vnstat/.wlan0".
10月 21 15:54:42 raspberrypi vnstatd[10786]: Error: Unable to create database backup "/var/lib/vnstat/.wlan0".
10月 21 15:59:42 raspberrypi vnstatd[10786]: Error: Unable to create database backup "/var/lib/vnstat/.wlan0".
10月 21 16:04:42 raspberrypi vnstatd[10786]: Error: Unable to create database backup "/var/lib/vnstat/.wlan0".
查看该文件所属用户
ls /var/lib/vnstat/.wlan0 -l
发现该文件归属于 root
用户
这是由于执行 vnstat -u -i wlan0
是在 root
用户下执行的,所以 .wlan0
文件的归属用户是 root
需要执行命令修改文件所属用户和用户组,将其设置成 vnstat
sudo chown -R vnstat:vnstat /var/lib/vnstat/.wlan0
现在所属用户就是 vnstat
了
pi@raspberrypi:~ $ ls /var/lib/vnstat/.wlan0 -l
-rw-r--r-- 1 vnstat vnstat 2784 10月 21 16:39 /var/lib/vnstat/.wlan0
如果你监听的是其它网卡,比如 eth0
,那么应该是 /var/lib/vnstat/.eth0
文件
具体文件需要执行 systemctl status vnstat
通过错误日志来查看