20.08.13

Настраиваем Vim под Python

Сегодня я хочу рассказать вам, как я настраивал любимый всеми редактор Vim (который в одном режиме пищит, а в другом — все портит) для написания кода на Python. Статья расчитана на начинающих виммеров.
У меня получилась такая картинка:



Использование Emacs для работы с TeX и LaTeX

это бета-версия рассказа, работа над текстом продолжается

Введение

Emacs в ходе своего развития имел большую популярность в университетской среде. В то же время, в этой же среде стал популярен пакет для подготовки печатных изданий TeX, разработанный Дональдом Кнутом, и его расширение LaTeX, которые обеспечивали создание печатных изданий типографского качества. Одновременная популярнасть не могла не привести к возникновению поддержки TeX и LaTeX в среде Emacs. В настоящее время существует несколько пакетов, которые обеспечивают помощь пользователю при работе с файлами в формате TeX. Пакет TeX-mode идет в поставке GNU Emacs и обеспечивает базовую поддержку редактирования текста, использующего разметку TeX и Texinfo. А пакет AUCTeX обеспечивает расширеную поддержку работу с TeX, облегчая ввод имен окружений и команд TeX/LaTeX.
Кроме перечисленных выше основных режимов, существует достаточно большое количество пакетов, делающих работу с TeX и LaTeX более комфортной. Они обеспечивают работу с ссылками (пакет RefTeX), просмотр результатов прямо в буфере Emacs (пакеты Preview-LaTeX и другие), и прочие вещи.
Об основных и вспомогательных режимах, которые могут использоваться для работы с TeX и LaTeX, вы можете прочитать в следующих разделах. А дополнительную информацию об использовании и настройке пакетов, вы можете найти на страницах Emacs Wiki.

Основные режимы

Данные режимы обеспечивают основной функционал при работе с TeX/LaTeX, и его сопутствующими режимами — bibtex, и т.п. К основным режимам относятся следующие:
TeX-mode
базовый режим для редактирования текстов в форматах TeX/LaTeX и др.
AUCTeX
пакет для редактирования текстов в TeX/LaTeX и др. с большим количеством возможностей, отсутствующих в других пакетах
RefTeX
вспомогательный режим для работы с ссылками, оглавлениями, индексами и т.п.
bibtex-mode
режим для работы с файлами BibTeX

Пакеты для визуальной и интерактивной работы с TeX/LaTeX

При работе с TeX и LaTeX очень часто хочется сразу видеть результаты набора формул и разных символов. Для этой цели существуют отдельные программы, такие как LyX и TeXmacs, которые обеспечивают достаточно хорошее изображение вводимых данных. Но и для Emacs существуют пакеты, которые обеспечивают изображение вводимых формул и символов. Некоторые из этих пакетов работают с обеими версиями Emacs, а некоторые только с GNU Emacs или XEmacs.
Preview-LaTeX:: пакет, обеспечивающий показ формул и рисунков при редактировании исходного текста
WhizzyTeX
обеспечивает наращиваемый (incremental) просмотр результатов редактирования
iTe
обеспечивает интерактивное создание и редактирование документов TeX/LaTeX

Вспомогательные режимы

Кроме основных режимов, существует большое количество вспомогательных режимов для работы с TeX и LaTeX, которые реализуют дополнительные функции, очень удобные при работе с исходными текстами. К данным режимам относятся:

Мини-HOWTO: Переход на новый жесткий диск

Как перенести установленный linux с одного винта на другой? Как создать образ установленного linux?

Тут существует два пути.
Сожмем в архив все нужные нам файлы, сохраняя права (tar)
  • Грузимся со спасательного диска (ВАЖНО! Убедитесь что tar на спасательном диске является настоящим tar, если используемый tar на самом деле является минимальной версией из busybox , то он может некорректно сохранять права на файлы, в частности suid-bit).
  • Бэкапим весь корень (/) за исключением некоторых папок /proc, /sys и /tmp, например:
          root@localhost# tar cvpzf /mnt/backup/all.tar.gz / \
                          --exclude /proc --exclude /sys \ 
                          --exclude /tmp --exclude /var/tmp \
                          --exclude /usr/tmp --exclude /mnt
    
  • Создаем на новом винте нужные нам разделы, создаем на них нужную файловую систему и распаковываем архив.
  • Восстанавливаем загрузчик
Используем dd
  • Грузимся со спасательного диска.
  • Далее создаем образ винта (если надо) или каждого раздела в отдельности.
          root@localhost# dd if=/dev/hda of=/dev/hdb bs=10M
    
и мы перенесем образ на другой винт или
      root@localhost# dd if=/dev/hda of=/mnt/backup/myhda.img bs=10M
и тогда образ попадет в файл. Кстати, можно сэкономить место и сделать так:
      root@localhost# dd if=/dev/disk | gzip - | dd of=/mnt/backup/myhda.gz
Если есть винт такой же, как и тот, с которого копировали, делаем просто
root@localhost# dd if=/mnt/backup/myhda.img of=/dev/disk bs=10M
Если винт больше, то неоднократно советовалось создать на нем раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.
Вместо tar в вышеприведенном способе многие рекомендуют использовать cpio.

 Я делал так. Допустим новый диск /dev/sda и неважно чистый он или нет.
# cfdisk /dev/sda
Там удалял все разделы и создавал один единственный под корень (можно и свап если надо). Можно заюзать fdisk, многим именно он нравится.
Затем накатывал файловую систему, монтировал ее например в /mnt и распаковывал туда систему
# mkfs.ext4 /dev/sda
# mount /dev/sda1 /mnt
# cd /mnt
# tar xzf /path/system.tgz 
Ну и напоследок проверить fstab и заинсталить граб:
# arch-chroot /mnt
# grub-mkconfig -o /boot/grub/grub.cfg
# grub-install /dev/sda

После этого системы уже загружалась. Честно говоря не помню чтобы я пересобирал инитрамфс, может просто забыл.
У меня граб таких ошибок никогда не выкидывал, поэтому даже не знаю что подсказать, но попробуй без этих хитрых манипуляций которые ты описал выше.
С автоматизацией этого процесса, я думаю, также проблем быть не должно.

Пітон утиліта, яка перевірить ваш код

pylint - Пітон утиліта, яка перевірить ваш код на:

* дотримання правил правильного форматування коду (згідно PEP8)
* чи імпортовані модулі і визначені змінні дійсно використовуються
* правильний синтаксис
* чи немає бракує визначених змінних і модулів
* і ще багато багато іншого

І основне, для цього не треба запускати ваше середовище розробки, все можна зробити однією командою на вашому пітон модулі.

Якщо ще не використовуєте його - рекомендую! Заощаджує купу часу, та ще й гарантує, що ваш код не лише працюючий, але й у добрій формі:

http://www.pylint.org/

В складніших проектах, де стиль коду власний від проекта, де багато імпортів, що важко відслідкувати, я користуюся простішою утиліткою pyflakes:

https://pypi.python.org/pypi/pyflakes

Він дозволяє мені дуже швидко перевірити: синтаксис мого модуля, чи бракує змінних, чи немає надлишкових імпортів.

Bootstrap от Twitter'а

http://www.youtube.com/watch?v=Hy4W25qhrjQ&list=PLAT7QQEB8z12z9iAkH3mG4eCAKpeI9rAP

19.08.13

Installing pythonstartup file


in your ~/.bashrc:
export PYTHONSTARTUP=$HOME/.pythonstartup
and put your python code in $HOME/.pythonstartup, like:
import rlcompleter
import readline

readline.parse_and_bind("tab: complete")
For more information about PYTHONSTARTUP variable, read the python man page:
$ man python

Fedora 17 Boot Optimization (from 15 to 2.5 seconds)

This article shows how to reduce boot time for Fedora 17.
The target is to get a fast booting system with NetworkManager running and gdm displaying the login screen as fast as possible.
The system I use here is a Lenovo T420s (2x2x Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz) with an INTEL SSDSA2BW160G3L harddrive.
First we choose a manual disk layout and use primary partitions and format them with ext4. In my case this results in:
sda1 ext4 /boot
sda2 swap
sda3 ext4 /
After the first boot, setup of the user, etc. and 2 reboots (always reboot 2 times, before taking the measurement, because readahead needs to adapt to the changed boot process).
First we update everything, prelink for speed and install systemd-analyze.
$ sudo yum update
$ sudo /etc/cron.daily/prelink
$ sudo yum install systemd-analyze
After the reboots, I get:
# systemd-analyze
Startup finished in 1413ms (kernel) + 2911ms (initramfs) + 10593ms (userspace) = 14918ms
The next step is to disable the initramfs, because the kernel can boot from an ext4 partition without it. Because I know how to rescue my system, I can set the root device directly to sda3 and tell the kernel which filesystem type to use. My /etc/grub2.cfg looks like this:
 linux /vmlinuz-3.3.7-1.fc17.x86_64 root=/dev/sda3 rootfstype=ext4 quiet libahci.ignore_sss=1 raid=noautodetect
#       initrd /initramfs-3.3.7-1.fc17.x86_64.img
"raid=noautodetect" and "libahci.ignore_sss=1" saves some time for the kernel initialization.
Startup finished in 1640ms (kernel) + 13043ms (userspace) = 14684ms
Because I don't use any LVM, RAID or encrypted devices, I can safely turn off all nearly all fedora-*storage* services. Additionally I turn off the plymouth boot splash, because I want speed and not eye candy. To turn off these services, we use the "systemctl mask" command. A bonus with that mechanism is, that no rpm %post script turns them on automatically.
$ cd /lib/systemd/system
$ for i in fedora*storage* plymouth-*.* lvm2-monitor.* mdmonitor*.*; do sudo systemctl mask $i;done
It seems there are still some SysV initscripts left, so we turn them off:
$ for i in livesys livesys-late spice-vdagentd ; do sudo chkconfig $i off;done
Seems like we saved half of the time in userspace:
Startup finished in 1640ms (kernel) + 6556ms (userspace) = 8197ms
From now on, you really have to know what you are doing and how to revert your actions. To compare Fedora 17 with e.g. Ubuntu, I will now turn off all services except NetworkManager. The result will be a Linux system without mail, firewall, printing, the abrt tools, avahi, some mountpoints, rsyslog, irqbalance, and selinux security.
$ cd /lib/systemd/system
$ for i in abrt*.service auditd.service avahi-daemon.* bluetooth.* dev-hugepages.mount dev-mqueue.mount \
      fedora-configure.service fedora-loadmodules.service fedora-readonly.service ip6tables.service \
      iptables.service irqbalance.service mcelog.service rsyslog.service sendmail.service sm-client.service \
      sys-kernel-config.mount sys-kernel-debug.mount; do \
    sudo systemctl mask $i; \
  done
To disable selinux, edit /etc/selinux/config and add "selinux=0" to the kernel command line. My /etc/grub2.cfg now looks like this:
 linux /vmlinuz-3.3.7-1.fc17.x86_64 root=/dev/sda3 rootfstype=ext4 libahci.ignore_sss=1 raid=noautodetect selinux=0
#       initrd /initramfs-3.3.7-1.fc17.x86_64.img
Now we are really fast!
$ systemd-analyze
Startup finished in 1329ms (kernel) + 1596ms (userspace) = 2926ms
I also like the idea of automounting (systemd's automount feature was an idea of mine :-). So I turn /boot in a "mount on demand" mountpoint. Also having /tmp as a tmpfs is one way to reduce disk activity (useful for e.g. a slow flash disk).
My resulting /etc/fstab looks like this:
/dev/sda3  /                       ext4    defaults        1 1
/dev/sda1  /boot                   ext4    noauto,comment=systemd.automount     1 2
/dev/sda2  swap                    swap    defaults        0 0
tmpfs      /tmp                    tmpfs   defaults        0 0
This only saved a little bit of time, but still:
$ systemd-analyze
Startup finished in 1342ms (kernel) + 1426ms (userspace) = 2769ms
Because NetworkManager is started also by the graphical login target, I can remove it from the multi-user target and it will be started in parallel to the gdm lo)gin screen.
$ sudo rm  /etc/systemd/system/multi-user.target.wants/NetworkManager.service
This will shave of a few milliseconds:
$ systemd-analyze 
Startup finished in 1323ms (kernel) + 1279ms (userspace) = 2603ms
To see the difference readahead makes for the system, I turn it off temporarily and reboot
$ cd /lib/systemd/system
$ for i in *readahead*; do sudo systemctl mask $i;done
Which will give us:
$ systemd-analyze 
Startup finished in 1336ms (kernel) + 1210ms (userspace) = 2547ms
This time is a little bit misleading. Although it seems faster, the real time until the login screen is displayed is taking longer. So a fair comparison would involve a stopwatch.
$ sudo dracut -f
Here is the time with readahead and the initramfs turned back on:
$ systemd-analyze 
Startup finished in 803ms (kernel) + 2217ms (initramfs) + 1018ms (userspace) = 4039ms
Of course, this can be optimzed also, when we build the initramfs without plymouth and in host-only mode.
$ sudo dracut -f -H -o plymouth
After a reboot we get the stunning result of:
$ systemd-analyze 
Startup finished in 612ms (kernel) + 499ms (initramfs) + 1330ms (userspace) = 2443ms
The nice thing about "systemctl mask" is, that you always unmask it via "systemctl unmask" and enable those default services, which you really need.
Have fun and happy rebooting!
And don't forget to reboot twice to let the readahead optimization kick in!

17.08.13

Ускорение dhcpd

Nebulosa
Natrio
dhcpcd действительно долго поднимается, если не отключить ему проверку занятости адреса через ARP. Он очень долго проверяет :)
А по-подробней?
Всё в мане:
man dhcpcd.conf
noarp   Don't send any ARP requests.  This also disables IPv4LL.
man dhcpcd
 -A, --noarp
        Don't request or claim the address by ARP.  This also disables IPv4LL.
Само получение адреса от DHCP-сервера происходит быстро, вы можете в этом убедиться, если запустите dhcpcd в консоли и с подробным выводом. Основная задержка происходит, когда dhcpcd, не до конца доверяя серверу, начинает проверять на вшивость полученный от него адрес, посылая в сеть широковещательные ARP-запросы о нём и ожидая ответа некоторое время. Если ответы не получены, он считает адрес свободным.

C++ (плейлист)

Лишнему в ядре не место

До сих пор все конкретные примеры конфигурирования ядра относились к дистрибутиву Zenwalk. Штатный метод его загрузки — использование инициирующего диска в памяти, initrd. Однако на более-менее стандартном "железе" и при использовании одной из общепринятых файловых систем в качестве корневой ядро с дистрибутивного носителя, устанавливаемое по умолчанию, может загрузиться и без него — правда, при этом потеряются стартовые красоты типа сплэш-картинки.


Ядерная физика для домохозяек v.3

Ядерная физика для домохозяек v.3

16.08.13

Setup bash custom prompt (PS1)

So how do you setup, change and pimp out Linux / UNIX shell prompt?
Most of us work with a shell prompt. By default most Linux distro displays hostname and current working directory. You can easily customize your prompt to display information important to you. You change look and feel by adding colors. In this small howto I will explain howto setup:
a] Howto customizing a bash shell to get a good looking prompt
b] Configure the appearance of the terminal.
c] Apply themes using bashish
d] Howto pimp out your shell prompt
Prompt is control via a special shell variable. You need to set PS1, PS2, PS3 and PS4 variable. If set, the value is executed as a command prior to issuing each primary prompt.
  • PS1 - The value of this parameter is expanded (see PROMPTING below) and used as the primary prompt string. The default value is \s-\v\$ .
  • PS2 - The value of this parameter is expanded as with PS1 and used as the secondary prompt string. The default is >
  • PS3 - The value of this parameter is used as the prompt for the select command
  • PS4 - The value of this parameter is expanded as with PS1 and the value is printed before each command bash displays during an execution trace. The first character of PS4 is replicated multiple times, as necessary, to indicate multiple levels of indirection. The default is +

How do I display current prompt setting?

Simply use echo command, enter:
$ echo $PS1
Output:
\\u@\h \\W]\\$

How do I modify or change the prompt?

Modifying the prompt is easy task. Just assign a new value to PS1 and hit enter key:
My old prompt --> [vivek@105r2 ~]$
PS1="touch me : "
Output: My new prompt
touch me : 
So when executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
  • \a : an ASCII bell character (07)
  • \d : the date in "Weekday Month Date" format (e.g., "Tue May 26")
  • \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
  • \e : an ASCII escape character (033)
  • \h : the hostname up to the first '.'
  • \H : the hostname
  • \j : the number of jobs currently managed by the shell
  • \l : the basename of the shell’s terminal device name
  • \n : newline
  • \r : carriage return
  • \s : the name of the shell, the basename of $0 (the portion following the final slash)
  • \t : the current time in 24-hour HH:MM:SS format
  • \T : the current time in 12-hour HH:MM:SS format
  • \@ : the current time in 12-hour am/pm format
  • \A : the current time in 24-hour HH:MM format
  • \u : the username of the current user
  • \v : the version of bash (e.g., 2.00)
  • \V : the release of bash, version + patch level (e.g., 2.00.0)
  • \w : the current working directory, with $HOME abbreviated with a tilde
  • \W : the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! : the history number of this command
  • \# : the command number of this command
  • \$ : if the effective UID is 0, a #, otherwise a $
  • \nnn : the character corresponding to the octal number nnn
  • \\ : a backslash
  • \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
  • \] : end a sequence of non-printing characters
Let us try to set the prompt so that it can display today’d date and hostname:
PS1="\d \h $ "
Output:
Sat Jun 02 server $ 
Now setup prompt to display date/time, hostname and current directory:
$ PS1="[\d \t \u@\h:\w ] $ "
Output:
[Sat Jun 02 14:24:12 vivek@server:~ ] $

How do I add colors to my prompt?

You can change the color of your shell prompt to impress your friend or to make your own life quite easy while working at command prompt.

Putting it all together

Let us say when you login as root/superuser, you want to get visual confirmation using red color prompt. To distinguish between superuser and normal user you use last character in the prompt, if it changes from $ to #, you have superuser privileges. So let us set your prompt color to RED when you login as root, otherwise display normal prompt.
Open /etc/bashrc (Redhat and friends) / or /etc/bash.bashrc (Debian/Ubuntu) or /etc/bash.bashrc.local (Suse and others) file and append following code:
# vi /etc/bashrc
or
$ sudo gedit /etc/bashrc
Append the code as follows
# If id command returns zero, you’ve root access.
if [ $(id -u) -eq 0 ];
then # you are root, set red colour prompt
  PS1="\\[$(tput setaf 1)\\]\\u@\\h:\\w #\\[$(tput sgr0)\\]"
else # normal
  PS1="[\\u@\\h:\\w] $"
fi
Close and save the file.

List of colors for prompt and Bash

Add this to your Bash file(s) to define colors for prompt and commands:
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

My firepower prompt

Check this out:
Firepower shell prompt using bashish
(click to enlarge)
You can also create complex themes for your bash shell using bashish. Bashish is a theme enviroment for text terminals. It can change colors, font, transparency and background image on a per-application basis. Additionally Bashish supports prompt changing on common shells such as bash, zsh and tcsh. Install bashish using rpm or apt-get command:
# rpm -ivh bashish*
OR
# dpkg -i bashish*
Now start bashish for installing user configuration files:
$ bashish
Next you must restart your shell by typing the following command:
$ exec bash
To configure the Bashish theme engine, run
$ bashishtheme
basish in action (screenshots from official site):
flower.png
urbandawn - based on an artwork by grevenlx
Finally, you can always use aterm or other terminal program such as rxvt. It supports nice visual effect , like transparency, tinting and much more by visiting profile menu. Select your terminal > click on Edit menu bar > Profiles > Select Profile > Click on Edit button > Select Effects tab > Select transparent background > Close
Linux desktop nice visual effect , like transparency, tinting etc
(click to enlarge)

09.08.13

vnstat: простая программа для подсчёта трафика

Часто оплата интернета напрямую зависит от количества переданных данных, проще говоря трафика. Особенно это характер для доступа в интернет через мобильный телефон (GPRS, EDGE, UMTS...).

Скажем, я сейчас пользуюсь тарифным планом, предполагающим оплату 20€ за пакет 500 МБ, однако после превыщения указанного предела, услуга не прерывается, но стоимость доступа в Интернет незаметно меняется: просто каждый мегабайт стоит уже около 6€. В общем, жуть. Понятно, что я заинтересован чётко отслеживать израсходованный мной трафик. Подобных ситуаций можно привести ещё много.

Подсчёт трафика в Linux дело несложное. Каждый может настроить iptables как ему угодно, написать свои скрипты, сохранять статистику в базе данных... Можно использовать готовые решения, вроде ntop. Однако для моих целей мне всё это показалось слишком сложным.

И я нашёл очень простой инструмент для учёта трафика: vnstat. Он, кстати, есть в репозиториях Debian, так что установка не представляет сложностей. Она практически не требует настройки, просто считает трафик и позволяет смотреть статистику. Думаю, для «домашнего» использования этого более чем достаточно.

Трафик считается отдельно для каждого сетевого устройства (интерфейса). Чтобы начать подсчёт трафика на том или ином интерфейсе, например ppp0 (в моём случае это подключение через мобильный телефон), надо выполнить следующую команду, которая создаст базу данных для этого интерфейса:

vnstat -u -i ppp0


В случае Debian включается и отключается подсчёт трафика автоматически при включении или выключении сетевого устройства (это можно делать также вручную).

И всё! Теперь весь трафик будет учтён!

Чтобы узнать суммарную статистику по трафику через интерфейс ppp0, достаточно выполнить следующую команду:

$ vnstat -i ppp0
Database updated: Thu Aug 23 22:00:01 2007

        ppp0

           received:         354.63 MB (76.6%)
        transmitted:         108.14 MB (23.4%)
              total:         462.77 MB

                        rx     |     tx     |  total
        -----------------------+------------+-----------
        yesterday     18.58 MB |    3.31 MB |   21.89 MB
            today     39.39 MB |    6.28 MB |   45.68 MB
        -----------------------+------------+-----------
        estimated        42 MB |       6 MB |      48 MB


Как легко видеть, у меня в запасе до ограничения в 500 МБ ещё около 40 МБ. На этот пост точно хватит.

Дополнение: доступны и другие формы отчётов (см. man vnstat). Например, для просмотра использования трафика по месяцам:
$ vnstat -i интерфейс -m

по неделям:
$ vnstat -i интерфейс -w

по дням:
$ vnstat -i интерфейс -d

по часам:
$ vnstat -i интерфейс -h

и, наконец, для желающих формировать собственные отчёты, может пригодится
$ vnstat -i интерфейс  --dumpdb


Если же возникнет желание стереть (сбросить) всю собранную статистику и начать отсчёт с нуля, то, на мой взгляд, самый простой способ это сделать:
  1. остановить подсчёт статистики для используемого интерфейса:
    vnstat -i интерфейс -u -r --disable

  2. удалить базу данных с собранной статистики (файл /var/lib/vnstat/интерфейс)

  3. создать новую базу данных с помощью
    vnstat -u -i интерфейс
    и радоваться начатой заново жизни