23.08.13
22.08.13
20.08.13
Настраиваем Vim под Python
Использование Emacs для работы с TeX и LaTeX
это бета-версия рассказа, работа над текстом продолжается
Об основных и вспомогательных режимах, которые могут использоваться для работы с TeX и LaTeX, вы можете прочитать в следующих разделах. А дополнительную информацию об использовании и настройке пакетов, вы можете найти на страницах Emacs Wiki.
Введение
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: Переход на новый жесткий диск
- Содержание
- 1. Введение
- 2. Установите оба диска в вашу систему
- 3. Отключите не-Linux разделы и сетевые диски
- 4. Разбейте новый диск на разделы
- 5. Отформатируйте новый диск
- 6. Подключите новый диск
- 7. Скопируйте файлы со старого диска на новый
- 8. Исправьте необходимым образом файл /new-disk/etc/fstab
- 9. Приготовьте LILO для загрузки с нового диска
- 10. Создайте загрузочную дискету (необязательно)
- 11. Уберите старый диск
- 12. Перезагрузите систему, исправьте файл конфигурации LILO
- 13. Благодарности:
- 14. Авторские права
Как перенести установленный linux с одного винта на другой? Как создать образ установленного linux?
Тут существует два пути.
Сожмем в архив все нужные нам файлы, сохраняя права (tar)
Вместо tar в вышеприведенном способе многие рекомендуют использовать cpio.
Я делал так. Допустим новый диск /dev/sda и неважно чистый он или нет.
Там
удалял все разделы и создавал один единственный под корень (можно и
свап если надо). Можно заюзать fdisk, многим именно он нравится.
Затем накатывал файловую систему, монтировал ее например в /mnt и распаковывал туда систему
Ну и напоследок проверить fstab и заинсталить граб:
После этого системы уже загружалась. Честно говоря не помню чтобы я пересобирал инитрамфс, может просто забыл.
У меня граб таких ошибок никогда не выкидывал, поэтому даже не знаю что подсказать, но попробуй без этих хитрых манипуляций которые ты описал выше.
С автоматизацией этого процесса, я думаю, также проблем быть не должно.
Сожмем в архив все нужные нам файлы, сохраняя права (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
- Создаем на новом винте нужные нам разделы, создаем на них нужную файловую систему и распаковываем архив.
- Восстанавливаем загрузчик
- Грузимся со спасательного диска.
- Далее создаем образ винта (если надо) или каждого раздела в отдельности.
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
Затем накатывал файловую систему, монтировал ее например в /mnt и распаковывал туда систему
# mkfs.ext4 /dev/sda # mount /dev/sda1 /mnt # cd /mnt # tar xzf /path/system.tgz
# 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
Він дозволяє мені дуже швидко перевірити: синтаксис мого модуля, чи бракує змінних, чи немає надлишкових імпортів.
* дотримання правил правильного форматування коду (згідно PEP8)
* чи імпортовані модулі і визначені змінні дійсно використовуються
* правильний синтаксис
* чи немає бракує визначених змінних і модулів
* і ще багато багато іншого
І основне, для цього не треба запускати ваше середовище розробки, все можна зробити однією командою на вашому пітон модулі.
Якщо ще не використовуєте його - рекомендую! Заощаджує купу часу, та ще й гарантує, що ваш код не лише працюючий, але й у добрій формі:
http://www.pylint.org/
В складніших проектах, де стиль коду власний від проекта, де багато імпортів, що важко відслідкувати, я користуюся простішою утиліткою pyflakes:
https://pypi.python.org/pypi/pyflakes
Він дозволяє мені дуже швидко перевірити: синтаксис мого модуля, чи бракує змінних, чи немає надлишкових імпортів.
19.08.13
Installing pythonstartup file
in your
~/.bashrc :
and put your python code in $HOME/.pythonstartup , like:
For more information about PYTHONSTARTUP variable, read the python man page:
|
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:
First we update everything, prelink for speed and install systemd-analyze.
My resulting /etc/fstab looks like this:
Have fun and happy rebooting!
And don't forget to reboot twice to let the readahead optimization kick in!
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-analyzeAfter the reboots, I get:
# systemd-analyze Startup finished in 1413ms (kernel) + 2911ms (initramfs) + 10593ms (userspace) = 14918msThe 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) = 14684msBecause 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;doneIt 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;doneSeems like we saved half of the time in userspace:
Startup finished in 1640ms (kernel) + 6556ms (userspace) = 8197msFrom 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; \ doneTo 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.imgNow we are really fast!
$ systemd-analyze Startup finished in 1329ms (kernel) + 1596ms (userspace) = 2926msI 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 0This only saved a little bit of time, but still:
$ systemd-analyze Startup finished in 1342ms (kernel) + 1426ms (userspace) = 2769msBecause 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.serviceThis will shave of a few milliseconds:
$ systemd-analyze Startup finished in 1323ms (kernel) + 1279ms (userspace) = 2603msTo 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;doneWhich will give us:
$ systemd-analyze Startup finished in 1336ms (kernel) + 1210ms (userspace) = 2547msThis 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 -fHere is the time with readahead and the initramfs turned back on:
$ systemd-analyze Startup finished in 803ms (kernel) + 2217ms (initramfs) + 1018ms (userspace) = 4039msOf course, this can be optimzed also, when we build the initramfs without plymouth and in host-only mode.
$ sudo dracut -f -H -o plymouthAfter a reboot we get the stunning result of:
$ systemd-analyze Startup finished in 612ms (kernel) + 499ms (initramfs) + 1330ms (userspace) = 2443msThe 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Само получение адреса от DHCP-сервера происходит быстро, вы можете в этом убедиться, если запустите dhcpcd в консоли и с подробным выводом. Основная задержка происходит, когда dhcpcd, не до конца доверяя серверу, начинает проверять на вшивость полученный от него адрес, посылая в сеть широковещательные ARP-запросы о нём и ожидая ответа некоторое время. Если ответы не получены, он считает адрес свободным.man dhcpcdnoarp Don't send any ARP requests. This also disables IPv4LL.-A, --noarp Don't request or claim the address by ARP. This also disables IPv4LL.
Лишнему в ядре не место
До сих пор все конкретные примеры конфигурирования
ядра относились к дистрибутиву Zenwalk. Штатный метод его загрузки —
использование инициирующего диска в памяти, initrd. Однако на
более-менее стандартном "железе" и при использовании одной из
общепринятых файловых систем в качестве корневой ядро с дистрибутивного
носителя, устанавливаемое по умолчанию, может загрузиться и без него —
правда, при этом потеряются стартовые красоты типа сплэш-картинки.
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.
Output:
My old prompt --> [vivek@105r2 ~]$
Output: My new prompt
Output:
Output:
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:
or
Append the code as follows
(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:
OR
Now start bashish for installing user configuration files:
Next you must restart your shell by typing the following command:
To configure the Bashish theme engine, run
basish in action (screenshots from official site):
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
(click to enlarge)
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
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] $" fiClose 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:(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):
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
(click to enlarge)
09.08.13
vnstat: простая программа для подсчёта трафика
Часто оплата интернета напрямую зависит от количества переданных данных,
проще говоря трафика. Особенно это характер для доступа в интернет
через мобильный телефон (GPRS, EDGE, UMTS...).
Скажем, я сейчас пользуюсь тарифным планом, предполагающим оплату 20€ за пакет 500 МБ, однако после превыщения указанного предела, услуга не прерывается, но стоимость доступа в Интернет незаметно меняется: просто каждый мегабайт стоит уже около 6€. В общем, жуть. Понятно, что я заинтересован чётко отслеживать израсходованный мной трафик. Подобных ситуаций можно привести ещё много.
Подсчёт трафика в Linux дело несложное. Каждый может настроить iptables как ему угодно, написать свои скрипты, сохранять статистику в базе данных... Можно использовать готовые решения, вроде ntop. Однако для моих целей мне всё это показалось слишком сложным.
И я нашёл очень простой инструмент для учёта трафика: vnstat. Он, кстати, есть в репозиториях Debian, так что установка не представляет сложностей. Она практически не требует настройки, просто считает трафик и позволяет смотреть статистику. Думаю, для «домашнего» использования этого более чем достаточно.
Трафик считается отдельно для каждого сетевого устройства (интерфейса). Чтобы начать подсчёт трафика на том или ином интерфейсе, например ppp0 (в моём случае это подключение через мобильный телефон), надо выполнить следующую команду, которая создаст базу данных для этого интерфейса:
В случае Debian включается и отключается подсчёт трафика автоматически при включении или выключении сетевого устройства (это можно делать также вручную).
И всё! Теперь весь трафик будет учтён!
Чтобы узнать суммарную статистику по трафику через интерфейс ppp0, достаточно выполнить следующую команду:
Как легко видеть, у меня в запасе до ограничения в 500 МБ ещё около 40 МБ. На этот пост точно хватит.
Дополнение: доступны и другие формы отчётов (см.
по неделям:
по дням:
по часам:
и, наконец, для желающих формировать собственные отчёты, может пригодится
Если же возникнет желание стереть (сбросить) всю собранную статистику и начать отсчёт с нуля, то, на мой взгляд, самый простой способ это сделать:
Скажем, я сейчас пользуюсь тарифным планом, предполагающим оплату 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
Если же возникнет желание стереть (сбросить) всю собранную статистику и начать отсчёт с нуля, то, на мой взгляд, самый простой способ это сделать:
- остановить подсчёт статистики для используемого интерфейса:
vnstat -i интерфейс -u -r --disable
- удалить базу данных с собранной статистики (файл
/var/lib/vnstat/интерфейс
) - создать новую базу данных с помощью
vnstat -u -i интерфейс
и радоваться начатой заново жизни
Підписатися на:
Дописи (Atom)