34. smem – Создание отчётов по использованию памяти
smem сообщает об использовании физической памяти, принимая во внимание общие страницы памяти. Неподелённая память показывается как USS
Общая память делится поровну между процессами, разделяющими её. Неподелённая память (USS), плюс доля процесса в совместной памяти показывается как PSS. USS и PSS включают только физическое использование памяти. Они не включают память, выгруженную на диск в файл подкачки.
Память может показываться по процессам, по пользователям, mapping или по всей системе. Доступен как текстовый режим вывода, так и графический.
smem PID User Command Swap USS PSS RSS 709 mial /usr/bin/VBoxClient --displ 0 96 332 1308 708 mial /usr/bin/VBoxClient --draga 0 100 335 1336 711 mial /usr/bin/VBoxClient --seaml 0 100 337 1340 712 mial /usr/bin/VBoxClient --clipb 0 168 371 1372 717 mial /usr/bin/VBoxClient --displ 0 152 508 3416 604 mial /usr/bin/dbus-daemon --conf 0 472 599 3956 714 mial /usr/bin/VBoxClient --seaml 0 232 616 3644 710 mial /usr/bin/VBoxClient --draga 0 308 694 3676 648 mial /bin/bash /usr/bin/cinnamon 0 420 735 3172 634 mial /usr/lib/dconf/dconf-servic 0 672 763 4772 573 mial /usr/bin/dbus-daemon --sess 0 816 942 4300 560 mial /usr/lib/gdm/gdm-x-session 0 824 951 6020 716 mial /usr/bin/VBoxClient --clipb 0 684 1071 4412 606 mial /usr/lib/at-spi2-core/at-sp 0 952 1164 6892 597 mial /usr/lib/gvfs/gvfsd-fuse /r 0 1160 1274 5668 592 mial /usr/lib/gvfs/gvfsd 0 968 1313 6680 689 mial /usr/lib/gvfs/gvfsd-trash - 0 1284 1691 7736 554 mial /usr/lib/systemd/systemd -- 0 1064 1747 6524 1189 mial bash 0 1408 1897 4920 898 mial bash 0 1616 2107 5192 637 mial /usr/lib/gvfs/gvfs-udisks2- 0 1816 2280 9756 848 mial /usr/lib/gvfs/gvfsd-metadat 0 2244 2397 7328 652 mial /usr/lib/cinnamon-settings- 0 2188 3106 13372 624 mial /usr/bin/pulseaudio --daemo 0 3268 4896 11860 599 mial /usr/lib/at-spi2-core/at-sp 0 4952 5118 10196 672 mial /usr/lib/polkit-gnome/polki 0 4596 5668 21668 668 mial nm-applet 0 7380 9450 29708 1223 mial python2 /usr/bin/smem 0 9948 9991 11984 618 mial /usr/lib/cinnamon-settings- 0 9436 12656 37960 575 mial cinnamon-session --session 0 9696 14185 45444 667 mial nemo -n 0 12256 14775 37496 892 mial /usr/lib/gnome-terminal/gno 0 15196 18087 40904 669 mial /usr/bin/python3 /usr/bin/c 0 15284 18493 37776 845 mial cinnamon-screensaver 0 24564 29875 57856 562 mial /usr/lib/xorg-server/Xorg v 0 65008 69721 92372 650 mial cinnamon 0 352060 368556 421884
Creating a simple Progress Bar for a shell script
Sometimes all we need is a little patience. Or, at least, something to watch while we’re waiting. The infamous Progress Bar is an example of such a thing. If your script needs to wait a while, particularly if it needs to wait for a fixed amount of time, this little progress bar may be of help.
For example, you may need to wait for some external process, such as some remote web service, to complete, but you want to give the user something to watch to show that the script has not died.
In this ficticious example, we are waiting for the URL «http://localhost/status» to return «Ready». Other things might be to wait for an entry to appear in DNS, for a virtual machine to complete booting, for a database entry to be created, and so on. This example is nice and simple to test for, though (and quite easy to set up for yourself — just set up a web server with a file «status» in the ).
#!/bin/bash progress_bar() { local PROG_BAR_MAX=${1:-30} local PROG_BAR_DELAY=${2:-1} local PROG_BAR_TODO=${3:-"."} local PROG_BAR_DONE=${4:-"|"} local i echo -en "" (to end the "" bar) # 2) Control-M (aka Carriage Return) (aka Octal \0015) # 3) "^M\0015[" for i in `seq 1 $PROG_BAR_MAX` do echo -en "$PROG_BAR_DONE" sleep ${PROG_BAR_DELAY} done echo } while : do curl http://localhost/status 2>/dev/null | grep "Ready" && break echo "`date`: System is not ready. Checking again in 10 seconds..." progress_bar 10 done echo "`date`: System is ready."
Download the progressbar.sh script
The progress bar shows a row of dots («.») and gradually replaces them with vertical pipes («|»):
When the 10 seconds are up, all 10 vertical pipes are shown, like so:
You may have noticed that the function takes up to four arguments — we have just called it with «10» as the width of the progress bar. You can also specify how long to between dots, and also what character to use for unused and used time slots. So you can also have this, which will pass the script’s arguments to the function:
progress_bar $@
Here, I have called it a few times with different arguments to show the results…
The secret of the progress bar is the overwriting of the line: We use (Carriage Return with no Newline) to send the cursor back to the beginning of the line after it’s drawn the initial row of dots. This is shown in the hashed out . To input the special character in , type this sequence of keystrokes, without the padding spaces:
e c h o - e n " ] CONTROL-V CONTROL-M [ "
The CONTROL-V tells that the next character will be a literal, not to be interpreted.
Or — you can do what the downloaded script does, which is to use Octal characters. It’s a bit less convenient, but if you just run man ascii, you can get the Octal forms quite easily. Carriage Return is \0015. So you can use: — which is easy to copy/paste without losing the essential BACKSPACE character.
Команда PV в Linux
Согласно официальной документации, команда PV контролирует поток данных через pipe. Команда выводит следующую информацию о текущей операции: время , прошедшее, процент завершения (с прогресс бар), текущую скорость, пропускная способность общего объема передаваемых данных, и ETA.
“Для того, чтобы использовать его, вставьте его в pipeline между двумя процессами, с соответствующими опциями,” объясняет man page. “Его стандартный ввод будет передан на свой стандартный вывод и прогресс будет показан на стандартной ошибке.”
Теперь, покажем использование команды PV на примере. Но до этого, убедитесь, что утилита присутствует в вашей системе. Если нет, то вы можете легко загрузить и установить ее на системахDebian(например,Ubuntu) с помощью следующей команды:
sudo apt-get install pv
Как вы можете видеть, команда PV отображается индикатор выполнения, а также другую полезную информацию. Это поведение по умолчанию команды. Тем не менее, если вы хотите ограничить вывод, вы можете сделать это, используя переключения дисплеев. Например, следующая команда будет отображаться только индикатор прогресса, и ничего больше.
pv -p /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz
Это потому, что мы использовали-pпереключатель дисплея, который говорит pv только включить индикатор выполнения. Для получения полного списка переключателей дисплея, смотрите команды man page.
Тогда есть некоторые выходные модификаторы. Например, при использовании вариант с командой-Wили–wait скажет ему, чтобы ждать, пока первый байт не был передан, прежде чем показывать какую – либо информацию о ходе работы или каких – либо вычисления ЕТА. Это особенно полезно в тех случаях, когда допустим требует дополнительной информации, прежде чем начнет.
И, наконец, команда PV также предлагает некоторые модификаторы передачи данных. Например, если вы хотите, вы можете ограничить передачу определенного количества байтов в секунду. Если взглянуть на скриншот ранее, скорость передачи данных составляет более 18MBps. Теперь предположим, что вы хотите ограничить до 5Mbps, для этого вам необходимо выполнить следующую команду:
pv -L 5m /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz
Вариант -L с последующим значением ‘5m’ делает трюк здесь. См, приведенную выше команду в действии на следующем скриншоте:
“Суффикс ‘k’, ‘m’, ‘g’, или ‘t’ могут быть добавлены для обозначения килобайт (* 1024), мегабайтах, и так далее,” объясняет man page. Более подробную информацию о передачи данных, а также модификаторов передачи данных также доступна при помощи команды man page.
Description
pv
To use it, insert it in a pipeline between two processes, with the appropriate options. Its standard input will be passed through to its standard output and
progress will be shown on standard error.
pv will copy each supplied FILE in turn to standard output (— means standard input), or if no FILEs are specified just standard
input is copied. This is the same behaviour as cat(1).
A simple example to watch how quickly a file is transferred using nc(1):
A similar example, transferring a file from another process and passing the expected size to pv:
A more complicated example using numeric output to feed into the dialog(1) program for a full-screen progress display:
Frequent use of this third form is not recommended as it may cause the programmer to overheat.
Data Transfer Modifiers
- -L RATE, —rate-limit RATE
- Limit the transfer to a maximum of RATE bytes per second. A suffix of «k», «m», «g», or «t» can be added to denote kilobytes (*1024), megabytes, and
so on. - -B BYTES, —buffer-size BYTES
- Use a transfer buffer size of BYTES bytes. A suffix of «k», «m», «g», or «t» can be added to denote kilobytes (*1024), megabytes, and so on. The
default buffer size is the block size of the input file’s filesystem multiplied by 32 (512kb max), or 400kb if the block size cannot be determined. - -R PID, —remote PID
- If PID is an instance of pv that is already running, -R PID will cause that instance to act as though it had been given this
instance’s command line instead. For example, if pv -L 123k is running with process ID 9876, then running pv -R 9876 -L 321k will cause it to
start using a rate limit of 321k instead of 123k. Note that some options cannot be changed while running, such as -c, -l, and -f.
4) Advanced Copy
Advanced Copy, or advcpmv, is a mod for the cp and mv utilities which adds a progress bar and provides some information on ongoing transferred.
Installing Advanced Copy
You can install progress on any distro with these steps.
You might get this error, while running “./configure” command.
Run the following command to fix that error and rerun the ./configure command again:
Replace the original cp and mv commands with these two new commands
Advanced Copy Usage with Examples
The cp and mv commands stay same, the only change is adding the or option to the cp command. The option is used to copy directories recursively. Here is an example of the command:
Or
We’ve seen a couple of tools and how they can be used to monitor progress on commands. The pv command is easy to set up and can monitor any command line activity. The progress utility is limited to only coreutils commands. Rsync has the inbuilt ability to monitor file transfers and advanced copy is a patch applied to only the cp and mv commands to show progress. Based on your trial, you can decide which of these is best for you.
Authors
[email protected]://www.ivarch.com/
Kevin Coyner <[email protected]>
(Debian package maintainer)
Jakub Hrozek <[email protected]>
(Fedora package maintainer)
Cedric Delfosse <[email protected]>
(previous Debian package maintainer)
Eduardo Aguiar <[email protected]>
(provided Portuguese translation)
Stephane Lacasse <[email protected]>
(provided French translation)
http://www.tecknojunky.com/
Marcos Kreinacke <[email protected]>
(provided German translation)
Bartosz Fenski <[email protected]>
(provided Polish translation, along with Krystian Zubel)http://skawina.eu.org/
Joshua Jensen
(reported RPM installation bug)
Boris Folgmann
(reported cursor handling bug)http://www.folgmann.com/en/
Mathias Gumz
(reported NLS bug)
Daniel Roethlisberger
(submitted patch to use lockfiles for -c if terminal locking fails)
Adam Buchbinder
(lots of help with a Cygwin port of -c)
Mark Tomich
(suggested -B option)
Gert Menke
(reported bug when piping to dd with a large input buffer size)
Ville Herva <[email protected]>
(informative bug report about rate limiting performance)
Elias Pipping
(patch to compile properly on Darwin 9)
Patrick Collison
(similar patch for OS X)
Boris Lohner
(reported problem that -L does not complain if given non-numeric value)
Laszlo Ersek
(reported shared memory leak on SIGINT with -c)http://phptest11.atw.hu/
Использование утилиты pv в Unix/Linux
Например, можно использовать утилиту pv вместо cat, следующим образом:
# pv linux-notes.org.zone.txt | gzip > linux-notes.org.tar.gz 963 MB 0:00:50 [2.04MiB/s] 10% ETA 0:04:50
Собственно, все наглядно выглядит. Не правда ли?
Давайте упакуем некоторую папку в архив:
# tar -czf - backUPs | pv > backUPs.tgz 455MiB 0:00:13 [35.7MiB/s]
Наглядно, но не знаешь когда операция завершиться, по этому, давайте добавим ключ «-s» чтобы вывести ETA, например:
# tar -czf - backUPs | pv -s $(du -sb backUPs| grep -o '*') > backUPs.tgz 100MB 0:00:50 [3.88MB/s] 20% ETA 0:04:50
Так же, можно составлять команды из несколько копий pv:
# tar -cf - backUPs | pv -cN tar -s $(du -sb ./backUPs | grep -o '*') | gzip | pv -cN gzip > backUPs.tgz tar: 97.1MB 0:00:08 [12.3MB/s] 0% ETA 1:50:26 gzip: 13.1MB 0:00:08 [1.6MB/s]
Можно выводить прогресс-бар в виде цифр (в столбик), например:
$ tar -czf - backUPs | pv -n > backUPs.tgz 2 4 6 8 10 12 ...... 100
Такс, например, вам нужно ограничить скорость изменять скорость передачи данных через pv утилиту. Например, я использовал -L для ограничения скорости передачи данных до 4МБ/с:
$ tar -czf - backUPs | pv -L 4m > backUPs.tgz 30MiB 0:00:08 [4.17MiB/s]
Как я уже описывал разные опции, но опишу опции еще раз:
- -c — Данная опция не выводит информацию друг поверх друга.
- -N — Называем шкалу определенным именем.
Можно поигратся и выполнить:
# pv /dev/urandom > /dev/null 66MB 0:00:44 [ 6.8MB/s]
Чтобы узнать как быстро компьютер читает с /dev/zero, выполните:
$ pv /dev/zero > /dev/null
Обнуление диска, можно выполнить следющим образом:
# pv < /dev/zero > /dev/sda
Симуляция ввода:
$ echo "You could simulate some text here" | pv -qL 10
Чтобы проверить тест пропускной способности сети ssh, выполните:
$ yes | pv | ssh $your_host_here "cat > /dev/null"
Или:
$ pv /dev/zero|ssh $your_host_here 'cat > /dev/null'
И так, команда что выше, подключается к хосту через ssh и отображает скорость передачи в реальном времени, направляя все переданные данные в /dev/null.
Пример использования pv и dd утилиты:
# dd if=/dev/sdc bs=4096 | pv -s 2G | sudo dd bs=4096 of=~/USB_BLACK_BACKUP.IMG
Чтобы поиграться, выполните:
$ curl -s http://artscene.textfiles.com/vt100/movglobe.vt | pv -q -L 9600
Используя инструмент pv и dialog, вы можете создать панель выполнения следующим образом:
# tar -czf - ./home/captain/backups/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
Работа pv + mysql в Unix/Linux
Создать mysqldump можно так:
$ pv my_DB.sql.gz | gunzip | mysql -uroot -p my_DB
Или:
$ mysqldump -uroot -p my_DB | pv | gzip -9 >m y_DB.sql.gz
Влить созданный mysqldump можно так:
$ zcat my_DB.sql.gz | pv -cN zcat | mysql -uroot -p my_DB
Более нагляднее, будет:
$ zcat my_DB.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uroot -p my_DB
Чтобы сделать его еще приятнее, вы можете добавить progres NAME, например:
# zcat my_DB.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uroot -p my_DB
Вот и все, статья «Утилита pv — прогресс bar для консольных утилит в Unix/Linux» завершена.
Display Switches
pv-p-t-e-r-b
- -p, —progress
- Turn the progress bar on. If standard input is not a file and no size was given (with the -s modifier), the progress bar cannot indicate how close
to completion the transfer is, so it will just move left and right to indicate that data is moving. - -t, —timer
- Turn the timer on. This will display the total elapsed time that pv has been running for.
- -e, —eta
- Turn the ETA timer on. This will attempt to guess, based on previous transfer rates and the total data size, how long it will be before completion. This
option will have no effect if the total data size cannot be determined. - -r, —rate
- Turn the rate counter on. This will display the current rate of data transfer.
- -b, —bytes
- Turn the total byte counter on. This will display the total amount of data transferred so far.
- -n, —numeric
- Numeric output. Instead of giving a visual indication of progress, pv will give an integer percentage, one per line, on standard error, suitable for
piping (via convoluted redirection) into (1). Note that -f is not required if -n is being used. - -q, —quiet
- No output. Useful if the -L option is being used on its own to just limit the transfer rate of a pipe.
Команда Progress в Linux
Progress (ранее известный как CV) это утилита командной строки, которая обеспечивает прогресс для текущих операций, связанных с основными командамиCoreutils, такие как cp, mv, dd, tar, gzip/gunzip, cat, и многое другое.” Он также может показатьрасчетное времяипропускную способность, а также обеспечивает режим ‘top-like’, как (мониторинг),” говорится в официальной документации.
Перед установкой Прогресс, вы должны сначала убедиться, что библиотека ‘Ncurses’ есть в вашей системе, так как команда зависит от этой библиотеки. Если ее нет, то пользователиDebian/ Ubuntu можно загрузить и установить пакет Ncurses с помощью следующей команды:
sudo apt-get install libncurses5-dev
Затем загрузите командный пакет Progress из репозитория GitHubс помощью следующей команды:
git clone https://github.com/Xfennec/progress.git
Войдите в каталог «Progress» и выполните следующие команды:
make sudo make install
Вот и все. Команда Progress теперь будет установлена на вашем компьютере Linux. Следующий скриншот (взят из проекта на страницеGitHub ) показывает команду в действии:
Как вы можете видеть, команда Progress дает вам информацию обо всех текущих операциях, которые включают командыCoreutils. Как и любой другой инструмент командной строки Linux, Progress также предлагает несколько вариантов командной строки. Ниже приведен список опций, которые могут быть полезными для вас:
- -m (–monitor): цикл, пока наблюдаемые процессы по-прежнему работает
- -М (–monitor-continuously): мониторинг, никогда не останавливается (аналог прогресса )
- -с (–command cmd): мониторинг только этой команды название (например,Firefox). Эта опция может быть использована несколько раз в командной строке.
- -p (–pid id): мониторинг только этот числового идентификатора процесса (например: `pidof Firefox`). Эта опция может быть использована несколько раз в командной строке.
- -i (–ignore-file file): не сообщает процесс “file”. Если файл не существует, вы должны дать полный и чистый абсолютный путь. Эта опция может быть использована несколько раз в командной строке.
Прогресс команды Linux с помощью progress
Установка progress
Эта утилита не поставляется с системой по умолчанию. Но установить ее очень просто, программа есть в официальных репозиториях большинства дистрибутивов. Например, в Ubuntu:
В других дистрибутивах она может быть более старой версии и назваться cv. Также вы можете собрать программу из исходников. Единственная зависимость — библиотека ncurces. В Ubuntu 16.04 ее можно установить такой командой:
В прежних версиях Ubuntu:
В Fedora и CentOS:
Когда удовлетворите зависимости утилиты, выполните следующую команду для загрузки исходников с GitHub:
Затем распакуйте полученный архив:
Измените текущий каталог с помощью cd:
Запустите сборку и установку:
Программа готова к работе.
Смотрим прогресс команды с помощью progress
После завершения установки запустите progress следующей командой:
В результате получится что-то вроде:
Теперь давайте запустим копирование видео из папки на рабочий стол и посмотрим что произойдет:
Команда progress покажет прогресс копирования cp:
Выполним progress еще раз:
Как видите, утилита показывает информацию о прогрессе копирования файла, процент скопированных данных, количество скопированных данных и общий размер файла. Это очень полезно при копировании больших файлов, например, при копировании фильмов или образов дисков. То же самое будет если запустить dd, mv, tar, zip или другую подобную утилиту.
В утилиты есть много полезных опций. Опция -w заставляет программу показывать время, оставшееся до окончания операции:
и еще раз:
Если вы хотите видеть упрощенный вывод без дополнительных сообщений используйте опцию -q. И наоборот для показа всех предупреждений и ошибок воспользуйтесь -d.
Например, лучше использовать cv со следующими опциями:
Вы можете отслеживать состояние процесса пока он запущен:
Если вы хотите постоянно наблюдать за прогрессом всех команд используйте опцию -М:
Или ее эквивалент:
Очень популярный вот такой вариант:
или:
Также можно посмотреть прогресс linux только нужной программы, например, прогресс загрузки файла в firefox:
Или проверить активность web-сервера:
22. Netdata
Netdata – это чрезвычайно оптимизированная утилита Linux, которая в реальном времени (посекундно) обеспечивает мониторинг производительности систем Linux, приложений, SNMP устройств и т.д. и показывает полностью интерактивные графики, которые через веб-браузер показывают абсолютно все собранные значения для их анализа.
Программа была создана чтобы быть установленной на систему Linux без прерывания на ней текущих запущенных приложений. Вы можете использовать этот инструмент для контроля и обзора в реальном времени того, что происходит или только что произошло в ваших системах Linux и приложениях.
Что мониторит Netdata:
- Общее использование и использование каждого ядра ЦПУ, прерывания (interrupts), отложенные прерывания (softirqs) и частоту.
- Общую память, оперативную память, использование раздела подкачки (Swap) и Kernel
- Операции ввода/вывода на диск (по каждому диску: скорость, операции, backlog, utilization и пр.)
- Мониторинг сетевых интерфейсов, включая: скорость пропускания, пакеты, ошибки, отброшенное и пр.)
- Мониторы подключений, события, ошибки и пр. файервола Linux Netfilter / iptables
- Процессы (запущенные, заблокированные, форки, активные и пр.)
- Системные приложения с деревом процессов (ЦПУ, память, swap, чтение/запись на диск, потоки и т.д.)
- Мониторинг статуса Apache и Nginx с mod_status.
- Мониторинг баз данных MySQL: запросы, обновления, блокировки, проблемы, потоки и т.д.
- Очередь сообщений почтового сервера
- Мониторинг пропускной способности и запросов Squid прокси
- Сенсоры железа (температура, вольтаж, вентиляторы, напряжение, влажность и т.д.)
- SNMP устройства
Об установке и описание работы с Netdata смотрите «Как настроить мониторинг производительности реального времени с Netdata на Ubuntu 16.10».
5. Netstat – Статистика сети
Netstat – это инструмент командной строки для мониторинга статистики входящих исходящих сетевых пакетов, а также статистики интерфейсов. Это весьма полезный инструмент для каждого системного администратора для контроля производительности сети и решения проблем, связанных с сетью.
netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.local:privoxy 0.0.0.0:* LISTEN tcp 0 0 localhost.localdom:9475 0.0.0.0:* LISTEN tcp6 0 0 :ssh :* LISTEN tcp6 0 0 :https :* LISTEN tcp6 0 0 :mysql :* LISTEN tcp6 0 0 :www-http :* LISTEN udp 0 0 HackWare:bootpc 0.0.0.0:* raw6 0 0 :ipv6-icmp :* 7 Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 STREAM LISTENING 13574 /tmp/.X11-unix/X0 unix 2 STREAM LISTENING 13573 @/tmp/.X11-unix/X0 unix 2 DGRAM 11811 /run/user/120/systemd/notify unix 2 STREAM LISTENING 14509 @/tmp/dbus-l6VTvQ0c unix 2 STREAM LISTENING 11815 /run/user/120/systemd/private unix 2 STREAM LISTENING 11820 /run/user/120/bus unix 2 STREAM LISTENING 11822 /run/user/120/pulse/native
25. Sysstat – Система контроля производительности всё-в-одном
Ещё один инструмент мониторинга для вашей системы Linux. На самом деле Sysstat – это не команда, это название проекта. В действительности Sysstat – это пакет, который включает много инструментов слежения за производительностью, к ним относятся iostat, sadf, pidstat и много других инструментов, которые показывают вам множество статистической информации о вашей ОС Linux.
Особенности Sysstat
- Доступна во многих стандартных репозиториях дистрибутивов Linux.
- Может собирать статистику об использовании RAM, CPU, SWAP. Помимо этого, способность мониторить активность ядра Linux, NFS сервера, сокетов, TTY и файловых систем.
- Способность мониторить статистику ввода и вывода для устройств, задач и т.п.
- Способность выводить отчёты о сетевых интерфейсах и устройствах, в том числе с поддержкой IPv6.
- Sysstat может показать вам также статистику энергопотребления (использование, устройства, скорость вентиляторов и т.д.).
- Многие другие функции.
1) PV Command
Pv is a command-line based tool that allows you to monitor the progress of data being transferred using pipe. The pv command gives you a visual view of the following information.
- Time elapsed
- Percentage completed using a progress bar.
- Current throughput rate.
- Total data transferred.
- ETA (Estimated Time).
Installing Pv
You can install pv on your distro using the following commands
Fedora, CentOS and RHEL
Debian, Ubuntu and Linux Mint
Gentoo Linux
FreeBSD Linux
Pv Usage with Examples
The general syntax for pv is pv
The option turns the progress bar on, option activates the total elapsed time pv has been running for, the option provides the ETA to completion based on the transfer rate and data size, the option shows the current rate of the transfer and finally the option shows the total amount of data transferred so far.
Monitor the progress of creating an archive using gzip
In this example, we use pv with gzip in the following example:
In this example, we provide the options and the file in question and then pipe it to gzip with a redirection to the file we want to archive.
Output Modifiers
- -W, —wait
- Wait until the first byte has been transferred before showing any progress information or calculating any ETAs. Useful if the program you are piping to or
from requires extra information before it starts, eg piping data into gpg(1) or mcrypt(1) which require a passphrase before data
can be processed. - -s SIZE, —size SIZE
- Assume the total amount of data to be transferred is SIZE bytes when calculating percentages and ETAs. The same suffixes of «k», «m» etc can be used
as with -L. - -l, —line-mode
- Instead of counting bytes, count lines (newline characters). The progress bar will only move when a new line is found, and the value passed to the
-s option will be interpreted as a line count. - -i SEC, —interval SEC
- Wait SEC seconds between updates. The default is to update every second. Note that this can be a decimal such as 0.1.
- -w WIDTH, —width WIDTH
- Assume the terminal is WIDTH characters wide, instead of trying to work it out (or assuming 80 if it cannot be guessed).
- -H HEIGHT, —height HEIGHT
- Assume the terminal is HEIGHT rows high, instead of trying to work it out (or assuming 25 if it cannot be guessed).
- -N NAME, —name NAME
- Prefix the output information with NAME. Useful in conjunction with -c if you have a complicated pipeline and you want to be able to tell
different parts of it apart. - -f, —force
- Force output. Normally, pv will not output any visual display if standard error is not a terminal. This option forces it to do so.
- -c, —cursor
- Use cursor positioning escape sequences instead of just using carriage returns. This is useful in conjunction with -N (name) if you are using
multiple pv invocations in a single, long, pipeline.
Выводы
Чтобы использовать всю мощь Linux пользователям часто приходится работать в командной строке. Чаще всего мы смотрим содержимое, копируем файлы, распаковываем архивы. В этой инструкции мы рассмотрели утилиту process, которую можно использовать для просмотра прогресса dd и других системных команд.
Мне всегда было интересно посмотреть прогресс копирования cp для больших файлов. Честно говоря, я часто имею дело с большими файлами при просмотре фильмов на своем ноутбуке. Теперь я использую утилиту cv. Почему бы и вам не попробовать, вам понравиться!
Источник перевода: http://www.unixmen.com/check-progress-commands-cv-utility/