Информация о дисковом носителе
1. df
Команда выдает информацию о подмонтированных разделах и объемах, занимаемых ими:
df -h
Пример ответа:
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/sys-root 25G 11G 15G 41% /
devtmpfs 1,9G 0 1,9G 0% /dev
tmpfs 1,9G 4,0K 1,9G 1% /dev/shm
tmpfs 1,9G 193M 1,7G 11% /run
tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
/dev/sda1 1014M 186M 829M 19% /boot
2. fdisk
Подробная информация о диске и его разделах:
fdisk /dev/sda -l
Ответ:
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d5e55
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 62914559 30407680 8e Linux LVM
3. iotop
Команда позволяем увидеть загруженность дисковой системы. Утилиты может не быть в системе — сначала ее нужно установить.
а) на Ubuntu / Debian:
apt-get install iotop
б) на CentOS / Red Hat:
yum install iotop
После установки утилита запускается командой:
iotop
Вывод похож на top:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd —swi…
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 %
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
1542 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 %
…
4. smartmontools
Утилита позволяет получить SMART дисковых накопителей. По умолчанию, она не установлена — установка выполняется из репозитория.
а) на Ubuntu / Debian:
apt-get install smartmontools
б) на CentOS / Red Hat:
yum install smartmontools
После установки можно использовать:
smartctl -a /dev/sda
* в данном примере мы увидим полный тест для диска sda.
Если нам нужно посмотреть только общее состояние здоровья, то используем опцию H:
smartctl -H /dev/sda
Если мы хотим получить информацию по всем дискам, вводим команды по очереди для каждого или:
find /dev -name ‘sd’ -exec smartctl -a {} \;
Информация о процессоре
Команды для получения данных о процессоре.
1. lscpu (Linux)
Команда показывает информацию о характеристиках процессора в удобном виде:
lscpu
Пример ответа:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
Stepping: 4
CPU MHz: 2592.918
BogoMIPS: 5187.50
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0-7
* больше всего нас интересует:
- Architecture — архитектура процессора — 32 бит или 64.
- Core(s) per socket — количество ядер на процессор.
- Socket(s) — количество физических/виртуальных процессоров.
- CPU(s) — суммарное количество процессорных ядер.
- Model name — модель процессора.
2. sysctl -a (FreeBSD)
Команда отображает множество данных, поэтому добавляем фильтр:
sysctl -a | egrep -i ‘hw.machine|hw.model|hw.ncpu’
Пример ответа:
hw.model: Intel(R) Xeon(R) CPU X5690 @ 3.47GHz
hw.machine: amd64
hw.ncpu: 2
* на самом деле, команда sysctl работает и в Linux, но формат вывода менее удобен, по сравнению с вышерассмотренной lscpu.
3. Файл /proc/cpuinfo (Linux)
Позволяет увидеть подробную информацию по каждому ядру:
cat /proc/cpuinfo
Команда для подсчета количества ядер:
cat /proc/cpuinfo | grep processor | wc -l
Linux
Сначала необходимо установить утилиту.
На CentOS (RPM):
yum install lm_sensors
Ubuntu (Deb):
apt-get install lm-sensors
После установки утилиты выполняем:
sensors-detect
sensors
FreeBSD
Загружаем необходимый модуль:
kldload coretemp
* для автоматической его загрузки добавляем в файл /boot/loader.conf строку coretemp_load=»YES»
Вводим команду:
sysctl -a | grep temperature
Пример ответа:
dev.cpu.0.temperature: 40.0C
dev.cpu.1.temperature: 41.0C
Installation
Mercurial is included in the Universe repository — activate this repo first (if you haven’t already). Once you’ve finished simply execute. We will also install meld, which is a graphical merge tool useful for resolving conflicting changes.
$ sudo apt-get install mercurial meld
Installation from source
If you already have a version installed, remove it.
sudo apt-get remove mercurial
You may need to sudo apt-get purge mercurial instead of remove. Purge will delete configuration files, which remove keeps.
Get the latest tarball from http://mercurial.selenic.com/release/. We will call the file mercurial-ver.tar.gz, e.g. mercurial-1.4.1.tar.gz. Extract it to a directory:
tar xf mercurial-ver.tar.gz cd mercurial-ver/
Install to the local directory to make sure everything works:
make local ./hg debuginstall ./hg version
If that’s OK, use checkinstall (see CheckInstall) to make a .deb package. For the summary, put something descriptive like «Mercurial distributed revision control». Accepting all of the defaults is usually sufficient.
sudo checkinstall
N.B. the version must have numbers in it. If you’re using a snapshot, you will probably want to put the date in there (e.g. 20091208).
0 - Maintainer: 1 - Summary: 2 - Name: 3 - Version: 4 - Release: 5 - License: 6 - Group: 7 - Architecture: 8 - Source location: 9 - Alternate source location: 10 - Requires: 11 - Provides:
If all goes well, you should have a new mercurial installed.
cd ~ # there was an hg in mercurial-ver/, remember? hg version
Prerequisites
Some Linux distributions fail to include bits of Python’s distutils by default, in which case you’ll need to install a package usually called python-dev. Suse 9.3 needs python-devel which is not on the installation media: a download from Suse is required. FreeBSD users please see the note below.
Mercurial needs Python to run:
- If your system does not ship with Python, install it first. Version 2.4 or greater is required.
-
You need Python C header files. They may be in package called python-dev or pythonX.Y-dev (where X.Y is the specific version of Python in use, such as 2.4).
-
You’ll also need a C compiler (such as gcc) and a 3-way MergeProgram.
For the documentation, the prerequisites depend on which version of Mercurial you are trying to install:
-
For Mercurial 1.3.x and earlier, building the documentation requires AsciiDoc and xmlto, and the latter in turn requires libxslt.
-
Building the documentation for Mercurial 1.4 and later requires Docutils.
You may want to check your operating system distribution for these (and possibly other software required by the prerequisites themselves). If you don’t want to build and install the documentation, substitute make install-bin and make install-home-bin for make install and make install-home below.
You can save a lot of time by installing as many prerequisites from system packages as you can. Your distribution will provide information about the dependencies for Python and Mercurial, and although many of these are strictly optional (and, for those supposedly required by Python, unrelated to the normal functioning of Mercurial), some of these are vital. If you are going to build Python, be sure to get the «build dependencies» (the -dev versions of the dependencies) so that Python’s configure script can find the header files for various libraries.
Sites offering an interface to distribution package repositories, such as those for Ubuntu and Debian can be useful in identifying dependencies. The control file in Debian/Ubuntu packages is also a useful source of build dependency information.
See below for recipes covering a range of different environments.
Команда chgrp Linux
Стандарт прав файлов пришёл в Linux из Unix. У каждого файла есть владелец (user) и группа (group), помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: чтение (read), запись (write), выполнение (execute). Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown и chgrp. Для просмотра текущих прав можно использовать команду ls.
Синтаксис и опции chgrp
Общий вид команды chgrp:
$ chgrp новая_группа имя_файла
Список распространённых параметров команды chgrp:
- -h – работать непосредственно с самими символьными ссылками, а не с файлами, на которые они ссылаются;
- —dereference – работать с файлами, а не самими символьными ссылками. Используется по умолчанию;
- -R – рекурсивная обработка каталога со всем его содержимым;
- -H – перейти по символической ссылке и изменить атрибуты файла/каталога. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -L — перейти по символической ссылке и продолжить рекурсивную обработку. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -P – при встрече с символьной ссылкой обрабатывать только её. Используется вместе с параметром -R, является значением по умолчанию;
- —reference=имя_образца – использовать группу образца. Используется вместо новая_группа;
- -c – при обработке выводить только изменения;
- -v – выводить информацию о каждом обработанном файле.
Использование команды chgrp
Рассмотрим сразу несколько случаев использования, с реальным файлом и каталогом, а затем с символическими ссылками на них. Простейший пример использования команды chgrp без параметров. Следующая команда меняет группу на www-data для файла file в текущей папке:
А эта меняет группу на www-data для папки folder:
С реальными файлами и каталогами команда работает весьма предсказуемо, меняя их группу. Файлы в папке остаются неизменными. Если же обрабатывать символические ссылки, то их атрибуты останутся неизменными, а файлы получат новую группу. Такое поведение аналогично работе с параметром —dereference. Например, эти команды, применённые к символическим ссылкам, отработают как показано на снимке:
Теперь посмотрим на то, как будет работать параметр -h, меняющий атрибуты символической ссылки:
С параметром -h изменились только атрибуты ссылок, а не сами файлы. Теперь рассмотрим работу c параметром -R, предназначенным для рекурсивной обработки каталогов:
Новая группа была задана не только каталогу, но и всем файлам внутри
Обратите внимание на то, что поведение изменилось, теперь при обработке символической ссылки атрибуты выставляются для самой ссылки, а не файла
Чтобы увидеть разницу между параметрами -H и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с параметром -R:
С использованием параметра -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто команды выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих файлов, при переходе на каталог рекурсивная обработка прекращается.
С использованием параметра -L при переходе к папке по символической ссылке рекурсивная обработка не прекращается
Обращаем ваше внимание на то, что параметры -H и -L использовать небезопасно, они могут дойти до системных файлов
Хороший плагин GUI/IDE для Mercurial?
GUI
- TortoiseHg практически для любой ОС. Включает интеграцию с Windows Explorer. Он также работает в Linux и нескольких других ОС, включая Max OS X. У этого есть несколько неуклюжий интерфейс и немного неудобно использовать сначала, но он очень полный и мощный.
- Murky работает в Mac OS X 10.5 или новее. Murky хорош для изучения репозитория и основных команд, но вам также нужно знать, как использовать командную строку.
- MacHg — это хороший Mac OS X Gui, который имеет немного больше функциональности и полировки, чем Murky, но вам все равно понадобится командной строки с ним.
- SourceTree является клиентом Mac изначально, с версией Windows, доступной совсем недавно. Довольно приятный интерфейс (по крайней мере, на OS X), поддерживает большинство функций Hg, включая полку.
Установка mtr в Unix/Linux
MTR — бесплатное приложение, которое сочетает в себе функциональность трассировки и пинг в качестве инструмента для диагностики единой сети. При этом, вы сможете проверить потери пакетов и низкой скорости соединения, чтобы помочь в устранении неполадок программного обеспечения.
Хочу рассказать в своей статье «Установка mtr в Unix/Linux» как можно установить и пользоваться утилитой MTR в Unix/Linux.
Установка MTR в Debian/Ubuntu/Mint:
$ apt-get install mtr
Установка MTR в CentOS/RedHat/Fedora:
$ yum install mtr
Установка MTR в Arch:
$ pacman -S mtr
Установка MTR на Mac OS
1. Можно скачать и установить пакет:
https://rudix.googlecode.com/files/mtr-0.82-0.pkg
Я этот метод не проверял.
2. Скачать и установить из исходного кода.
$ cd Downloads && wget ftp://ftp.bitwizard.nl/mtr/mtr-0.86.tar.gz $ tar xvzf mtr-0.86.tar.gz $ cd mtr-0.81 # export LIBS='-lm -ltermcap -lresolv' # ./configure && make && sudo make install
После этого, я добавлю алиас команды, для более удобного использования. Для этого, я открою файл и добавлю строчку:
$ vim ~/.bash_profile alias mtr=/usr/local/sbin/mtr
Скопируйте данные (полезно, если вы хотите подать жалобу, например на вашего провайдера).
Вы можете сделать скриншот экрана с помощью:
- Command+Shift+3: Сделает скриншот экрана и сохранит его в виде файла на рабочем столе.
- Command+Shift+4, затем выберите площадь: Сделает скриншот области и сохранит его в виде файла на рабочем столе.
Loss % — все потерянные пакеты между компьютером и серверами.
SNT — количество отправленных пакетов.
LAST — Задержка последнего отправляемого пакета .
Avrg — Среднее время ожидания всех пакетов.
Best — Отображает лучший Round Trip Time для этого пакета на этом хосте (shortest RTT).
Disregard 100% — это сто процентная потеря если есть другие узлы, перечисленные после.
Wrst — Отображает худший Round Trip Time для этого пакета на этом хосте (longest RTT).
Опции программы MTR
Показать сводку параметры аргументов в командной строке :
-h —help
Распечатать установленную версию:-v —version
Помещает mtr в режим отчета. В этом режиме, mtr обработает количество циклов, определенных опцией -c, затем отобразит статистику и завершит работу. Этот режим полезен для генерации статистики о качестве сети:
-r —report
Установить количество циклов, после которых mtr завершит работу:
-c COUNT —report-cycles COUNT
Размер посылаемых пакетов:
-p BYTES —psize BYTES
Вынуждает mtr использовать curses based terminal interface если доступно:
-t —curses
Используйте эту опцию, чтобы заставить МТР для отображения числовых число IP, а не пытаться разрешать имена хостов. Не использовать DNS. Отображать IP-адреса и не пытаться получить их хостнеймы:
-n —no-dns
Используйте эту опцию, чтобы заставить МТР использовать GTK +, основанный на оконном интерфейсе X11 (если имеется). GTK +, должно быть доступным в системе, когда ССО был построен для этого, чтобы работать. См веб-страницу GTK + на http://www.gimp.org/gtk/ для получения дополнительной информации о GTK +.
-g —gtk
Выводить информацию построчно, без перерисовки экрана, с разделением полей пробелом. Этот формат удобен, если вы используете какую-то дополнительную программу-парсер или скрипт для анализа, которому передаются данные:
-s —split
Использовать «сырой» формат вывода. То есть выводить неформатированные данные:
-l —raw
Указать адрес интерфейса, с которого будут отправляться пакеты:
-a IP.ADD.RE.SS —address IP.ADD.RE.SS
Интервал между отправляемыми запросами:
-i SECONDS —interval SECONDS
Использовать протокол UDP для отправки пакетов:
-u
Использовать только IPv4:
-4
Использовать только IPv6:
-6
Примеры использования.
Выполнить MTR для домена
MTR работает в двух режимах, графический режим (X11) и текстовом режиме на основе (Ncurses). По умолчанию, команда mtr работает в режиме X11.
$ mtr linux-notes.org
mtr linux-notes.org
Запуск в текстовом режиме -curses
Используйте опцию «-curses» чтобы работать с mtr в терминальном режиме.
$ mtr --curses linux-notes.org
Исключить Обратный DNS с помощью «-no-DNS»
MTR находит имя хоста каждого маршрутизатора / узла с помощью обратного просмотра DNS. Если вы хотите, чтобы избежать выполнение обратного поиска DNS, используйте «-no-DNS» вариант.
$ mtr --curses --no-DNS linux-notes.org
Использовать mtr в режиме отчета с помощью «-report»
$ mtr --no-DNS --report linux-notes.org
Установка mtr в Unix/Linux завершена.
Принятие
Хотя Mercurial не был выбран для управления исходными кодами ядра Linux, он был принят несколькими организациями, включая , W3C и Mozilla . Facebook использует язык программирования Rust для написания Mononoke, сервера Mercurial, специально разработанного для поддержки больших многопроектных репозиториев.
В 2013 году Facebook принял Mercurial и начал работу над его масштабированием для обработки своего большого унифицированного репозитория кода.
Google также использует Mercurial в своем монорепозитории Piper.
Bitbucket объявил, что его веб-службы контроля версий прекратят поддержку Mercurial в июне 2020 года (затем продлили до июля 2020 года), объяснив, что «менее 1% новых проектов используют его, а опросы разработчиков показали, что 90% разработчиков используют Git. «. Между тем, сотни пользователей открыто сомневались в причинах массового удаления исторических данных, спрашивали, почему не было значительного предупреждения или официального плана миграции, и запаниковали по поводу поспешных сроков в официальной ветке поддержки своей компании.
История
Mackall впервые анонсировал Mercurial 19 апреля 2005 года. Толчком к этому послужило объявление ранее в том же месяце Bitmover об отмене бесплатной версии BitKeeper из-за разработки SourcePuller .
BitKeeper использовался для требований контроля версий проекта ядра Linux . Макколл решил написать распределенную систему контроля версий в качестве замены для использования с ядром Linux. Этот проект стартовал через несколько дней после того , как Линус Торвальдс инициировал теперь хорошо известный проект Git с аналогичными целями.
В проекте ядра Linux было решено использовать Git, а не Mercurial, но Mercurial теперь используется во многих других проектах (см. ). «Git vs. Mercurial» стал одной из священных войн хакерской культуры .
В ответе на список рассылки Mercurial Оливия Макколл объяснила, как было выбрано имя «Mercurial»:
В крупных проектах, таких как Java, то есть OpenJDK , используется Mercurial (но больше не используется в Java 16).
System-wide installation
To install system-wide, you’ll need root privileges.
$ make install
By default, Mercurial is installed under /usr/local, and on some systems an adjustment to the PATH environment variable may be required:
$ export PATH=${PATH}:/usr/local/bin # assumes no older hg exists in the standard path
If Python does not reside under /usr/local, an adjustment to the PYTHONPATH environment variable is necessary. For example, for Python 2.5:
$ export PYTHONPATH=/usr/local/lib/python2.5/site-packages:${PYTHONPATH} # bash/ksh syntax
If the default python is older than 2.4, use the PYTHON option:
$ make install PYTHON=/path/to/python2.4
Changing the prefix
With this method, the addition of the PREFIX option will keep the Mercurial libraries out of /usr/local and put them instead where the prefix specifies similar to the way that install-home above keeps Mercurial local to a user in the per-user-installation. For example:
$ make install PREFIX=/var/hg
The PYTHONPATH and PATH will also need to be appropriately adjusted if PREFIX option is used.
For instance, using Python 2.5, and with PREFIX=/var/hg, you will need to set PYTHONPATH as follows in your environment:
$ export PYTHONPATH=/var/hg/lib/python2.5/site-packages:${PYTHONPATH} # bash/ksh syntax
Alternatively, you can also create a wrapper script that sets the PYTHONPATH variable, regardless of the user’s environment:
#!/bin/sh mv /var/hg/bin/hg /var/hg/bin/hg.py cat > /var/hg/bin/hg <<\EOF PYTHONPATH=/var/hg/lib/python2.5/site-packages:${PYTHONPATH} export PYTHONPATH exec /var/hg/bin/hg.py "$@" EOF
If PYTHONPATH is not correctly set, then hg debuginstall will print an error message that says:
ImportError: No module named mercurial
or
abort: couldn't find mercurial libraries in (check your install and PYTHONPATH)
Работа с кодом
- Как вы получаете последний код?
- Как вы проверяете код?
- Как вы делаете изменения?
- Как вы видите, что незафиксировано, или статус вашей текущей кодовой базы?
- Как вы удаляете файлы из хранилища?
- Как вы уничтожаете нежелательные коммиты?
- Как вы сравниваете две ревизии файла или ваш текущий файл и предыдущую ревизию?
- Как вы видите историю изменений файла или хранилища?
- Как вы обрабатываете двоичные файлы (например, Visio Docs или среды компилятора)?
- Как вы объединяете файлы, измененные в одно и то же время?
- Как вы возвращаете Changeset?
- Как вы вернетесь к предыдущей версии кода?
- Как извлечь патч из определенного набора изменений?
- Как записать, что вы переименовали или удалили файл без использования команды Mercurial?