Время ответа сайта

Дата: 24.10.2015Метки:

В данной записи я расскажу как можно проверить время ответа сайта с помощью консольной утилиты curl. Используя curl мы отправим HTTP-запрос к нашему серверу, затем автоматически будет собрана статистика по каждому этапу подключения. Нам останется только вывести результат с помощью простой команды.

Время ответа сайта с помощью Сurl

Чтобы просмотреть время ответа сайта с помощью curl, запустите команду ниже:

curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\nTotal time:\t%{time_total}\n' -o /dev/null https://codebeer.ru

Для более точных данных, замеры выполнялись непосредственно на стороне VPS. Время ответа сайта:

Lookup time:    0.061
Connect time:   0.061
AppCon time:    0.080
Redirect time:  0.000
PreXfer time:   0.081
StartXfer time: 0.095

Total time:     0.096

Описание параметров curl, используемых для расчета времени ответа сайта в данном примере:

    • time_namelookup — время, затраченное на преобразование доменного имени в IP-адрес;
    • time_connect — время, затраченное на подключение к серверу по протоколу TCP;
    • time_appconnect — время, затраченное на подключение к серверу по протоколу SSL;
    • time_redirect — время, затраченное на все редиректы;
    • time_pretransfer — время, затраченное на  подготовку обмена данными;
    • time_starttransfer — суммарное время, необходимое для выполнения всех действий, вплоть до начала передачи первого байта данных.

Символические ссылки в Linux

Дата: 20.10.2015Метки:

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

С подобной задачей хорошо справляются ссылки. Которые часто используют в процессе администрирования Linux-систем. Ссылки по методу реализации можно разделить на два вида: жесткие и символические.

Жесткая ссылка – это запись, которая указывает на дескриптор inode. Жесткие ссылки можно создавать только для файлов и только в пределах одной файловой системы. Перемещение или изменении имени исходного файла, не оказывает влияния на работоспособность жесткой ссылки.

Символическая ссылка — запись, которая указывает на имя файла или директории. Символические ссылки можно создавать для каталогов и объектов, которые расположены в разных файловых системах. Если переименовать или переместить файл в другую директорию, символическая ссылка потеряет работоспособность.

Создание жесткой ссылки в Linux

Чтобы создать жесткую ссылку в Linux, используется команда ln:

# Синтаксис команды
ln -s <цель> <ссылка>
# Создать жесткую ссылку в Linux
ln /home/file /link

Если попытаться создать жесткую ссылку для каталога и файла за пределами одной файловой системы, то вы получите ошибку.

Создание символической ссылки в Linux

Чтобы создать символическую ссылку в Linux, вместе с командой ln, необходимо использовать параметр -s:

# Синтаксис команды
ln -s <цель> <ссылка>
# Создать символическую ссылку в Linux
ln -s /home/file /link
ln -s /home/dir /home/link

При создании символических ссылок, имена файлов могут быть как абсолютными, так и относительными.

История команд Linux

Дата: 19.10.2015Метки:

На сегодняшний день большинство дистрибутивов Linux имеют мощный GUI. Тем не менее, как и 20 лет назад, с помощью одного лишь терминала, вы получаете неограниченные возможности для управления системой в Linux.

Каков бы ни был ваш опыт, порой вспомнить ту или иную команду бывает достаточно сложно. Но благодаря функциям командного процессора Bash, история команд Linux превращает использование консоли в невероятно комфортный процесс.

В Bash история команд позволяет существенно сэкономить время и делает процесс работы в командной строке более эффективной. Вам не нужно постоянно вводить одни и те же команды. Нажимая клавиши управления курсором, Bash будет поочередно выводить набранные ранее команды.

История команд Linux

Для просмотра всей истории команд Linux удобнее использовать утилиту history. После выполнения, на экране будет выведена вся история команд Linux. Мы можем ограничить количество выводимых строк. Для примера, команда ниже отобразит список из последних 25 команд:

# показать всю историю команд
history
# вывести 25 последних команд
history 25
# выполнить команду по номеру из списка
!20

История команд Linux хранится в файле ~/.bash_history. Размер файла ограничен списком из 500 выполненных команд, которые затираются по мере заполнения файла.

Чтобы увеличить количество команд в истории, необходимо добавить в файл ~/.bashrc следующие настройки:

HISTSIZE=1000
HISTFILESIZE=1000

Как вы уже успели заметить, история команд Linux не учитывает дату и время выполнения команды. Чтобы добавить дату к списку команд, добавьте в конец ~/.bashrc следующую строку:

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S '

Применить настройки без перезапуска:

bash

Очистить историю команд Linux

Случаются ситуации, когда необходимо очистить историю команд Linux. Например, некоторые команды могут содержать пароли в открытом для просмотра виде. Выполните одну из команд ниже для полного или частичного удаления истории Bash:

# очистить всю историю команд
history -cw
# удалить строку из истории команд
history -dw 25
# очистить историю команд для текущей сессии
history -r
# не сохранять команду в истории <пробел><команда>
root@debian:~$ wget --user user --password pass http://codebeer.ru/

По умолчанию, история команд Linux включена, и все команды, которые вы выполняете в командной строке, можно использовать повторно без особых затрат времени на их набор. При желании эту функцию можно отключить. В bash история команд отключается с помощью команды ниже:

set +o history

Если вы передумаете, история команд Linux включается также легко, просто выполните команду:

set -o history

Оптимизация SSD в Linux VPS

Дата: 18.10.2015Метки:

В данном материале пойдет речь о оптимизации SSD в системе Linux. Все настройки выполнялись на стороне VPS сервера, но за исключением некоторых нюансов, данную инструкцию можно использовать для настройки десктопных систем. Как правило, большинство серверов используют системы резервного питания, поэтому в отличии от рабочей станции, мы можем всегда быть уверены, что в результате отключения питания потери данных не произойдет.

Паравиртуальный драйвер Virtio для SSD

Драйвера Virtio реализованы для блочных, сетевых и других устройств. В общем случае использование паравиртуальных драйверов позволяет достичь большей производительности и отзывчивости в работе виртуальных окружений.

Если ваша панель управления KVM VPS позволяет изменять драйвер виртуализации диска, то для улучшения быстродействия дисковой системы, рекомендуется переключить режим работы диска с IDE на Virtio.

Редактирование fstab

Начнем с параметров монтирования разделов в Linux. Для этого необходимо отредактировать файл /etc/fstab, который состоит из набора файловых систем. Для монтирования каждого раздела или диска в файле используется отдельная строка.

Структура файла fstab выглядит следующим образом:

  • filesystem — физическое размещения файловой системы, можно указать имя файла устройства, его метку или UUID.
  • dir — точка монтирования файловой системы.
  • type — тип файловой системы.
  • options — параметры монтирования файловой системы.
  • dump — используется утилитой dump для управления процессом создания резервных копий. Возможные значения: 0 или 1. Если указано число 1, dump создаст резервную копию.
  • pass — используется программой fsck для проверки целостности файловой системы. Возможные значения: 0, 1 или 2. Значение 1 используют для корневой файловой системы. Значение 2 имеет меньший приоритет, его используют для других разделов. Значение 0 отключает проверку fsck.

По умолчанию файл fstab в Debian выглядит следующим образом:

# <file system>                              <dir>    <type>    <options>           <dump>    <pass>
UUID=ed47f65f-2336-41e7-ad06-a03d75c4c503    /        ext4      errors=remount-ro   0         1

Где UUID это идентификатор нашего SSD, который смонтирован в корень и отформатирован в файловой системе EXT4. В качестве параметра используется опция errors=remount-ro.

Будьте предельно внимательны, редактирование fstab может стать причиной невозможности загрузки системы. Создайте резервную копию файла перед внесением каких-либо изменений.

Отключить время доступа к файлам и каталогам

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

Отключить барьеры

Барьеры гарантируют целостность журнала файловой системы. К их недостаткам можно отнести снижение производительности. Отключив использование барьеров barrier=0, мы ускоряем операции записи на разделы EXT4.

В итоге файл fstab должен выглядеть следующим образом:

# <file system>                              <dir>    <type>    <options>                                         <dump>    <pass>
UUID=ed47f65f-2336-41e7-ad06-a03d75c4c503    /        ext4      noatime,nodiratime,barrier=0,errors=remount-ro    0         1

Чтобы принять изменения необходимо выполнить команду ниже:

mount -o remount rw,errors=remount-ro,noatime,nodiratime,barrier=0 /

Настройка параметров ядра Linux для SSD

Для улучшения производительности системы, рекомендуется снизить интенсивность обращения к SWAP. Чтобы снизить минимальный процент свободной памяти, при которой будет происходить запись страниц в SWAP, необходимо установить значение параметра vm.swappiness=10.

echo 'vm.swappiness=5' >> /etc/sysctl.conf
# Применить настройки
sysctl -p

Параметр vfs_cache_pressure отвечает за уровень выделяемой памяти под использование дискового кэша. В зависимости от величины, параметр увеличивает или уменьшает активность выгрузки неиспользуемых страниц памяти из кэша. Для SSD рекомендуется установить значение параметра vfs_cache_pressure равным 50.

echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf
# Применить настройки
sysctl -p

Для того чтобы проверить, что система правильно определила ваш SSD, необходимо выполнить команду:

cat /sys/block/vda/queue/rotational
0

Где vda имя вашего диска в системе. Для просмотра списка устройств используйте команду df. Значение равное 0, служит подтверждением того, что система определила тип используемого диска как SSD. В противном случае, необходимо установить значение вручную:

echo 0 > /sys/block/sda/queue/rotational
echo "echo 0 > /sys/block/sda/queue/rotational" >> /etc/rc.local

В ядре Linux имеется несколько типов планировщиков, которые выполняют функции управления дисковым пространством, расстановки приоритетов и обработки запросов в реальном времени. Рекомендуемым планировщиком для работы с SSD является Noop. Он хорошо подходит для работы с флеш-памятью благодаря использованию минимальных задержек для запросов к дисковому пространству.

echo noop > /sys/block/vda/queue/scheduler
echo "echo noop > /sys/block/vda/queue/scheduler" >> /etc/rc.local

Связи с тем, что SSD накопители не используют вращающиеся пластины в отличие от традиционных жестких дисков. Нулевое значение отключает использование алгоритмов снижения времени поиска данных, так как SSD и виртуальные диски в этом не нуждаются.

echo 0 > /sys/block/vda/queue/rotational
echo "echo 0 > /sys/block/vda/queue/rotational" >> /etc/rc.local

Последняя параметр rq_affinity. Может принимать значение равное 1 принуждает обработку операций на том же процессоре, где они были сгенерированы. Это может повысить эффективность кэширования данных. Для гостевых систем KVM рекомендуется установить значение равное 0, чтобы разрешить обработку операций на любом процессоре.

echo 0 > /sys/block/sda/queue/rq_affinity
echo "echo 0 > /sys/block/sda/queue/rq_affinity" >> /etc/rc.local

DiskPart: Флешка

Дата: 16.10.2015Метки:

В этой записи я расскажу как использовать утилиту DiskPart для создания раздела на флешке. Внимание! В процессе работы, с помощью программы DiskPart флешка будет подвергнута полной очистке от имеющейся на ней таблицы разделов, в результате все данные будут безвозвратно потеряны. Во второй части, я опишу процесс создания загрузочной флешки с Windows.

Условно я разделил статью на две части:

Создание раздела в DiskPart

Для работы DiskPart, необходимо открыть командную строку от имени администратора. Перед тем как начать, проверьте что флешка подключена к компьютеру. Затем в командной строке последовательно выполним команды ниже.

Запускаем DiskPart:

C:Windowssystem32>diskpart

Microsoft DiskPart version 10.0.10240

Copyright (C) 1999-2013 Microsoft Corporation.
On computer: DESKTOP-7EIRI50

Отобразить список всех дисков в системе:

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          465 GB      0 B
  Disk 1    Online          931 GB  6144 KB
  Disk 2    Online         7202 MB      0 B

В списке устройств необходимо выбрать нашу флешку, из-за отсутствие какой-либо дополнительной информации, в процессе приходится ориентироваться на размер диска. В моем случае это Disk 2.

Укажем в программе DiskPart номер диска:

DISKPART> select disk 2

Disk 2 is now the selected disk.

Удалить раздел:

DISKPART> clean

DiskPart succeeded in cleaning the disk.

Создать раздел:

DISKPART> сreate partition primary

DiskPart succeeded in creating the specified partition.

Пометить раздел как активный:

DISKPART> active

DiskPart marked the current partition as active.

Отформатировать раздел:

DISKPART> format  fs=ntfs quick

  100 percent completed

DiskPart successfully formatted the volume.

Назначить букву разделу:

DISKPART> assign

DiskPart successfully assigned the drive letter or mount point.

Выйти с DiskPart:

DISKPART> exit

Leaving DiskPart...


Создание загрузочной флешки с Windows

После того как мы создали активный раздел, необходимо записать на него загрузчик. Для этого мы будем использовать стандартную утилиту bootsect.exe, с системного каталога Windows. В качестве альтернативы, можно использовать файл bootsect.exe, который находится в папке boot установочного диска Windows.

Запустим командную строку от имени администратора, после чего запишем загрузчик на флешку:

C:Windowssystem32>bootsect /nt60 H:
Target volumes will be updated with BOOTMGR compatible bootcode.

H: (\?Volume{0d58756d-392d-11e5-9bc3-6cf04971b8e5})

    Successfully updated NTFS filesystem bootcode.

Bootcode was successfully updated on all targeted volumes.

Параметр /nt60 указывает на версию загрузчика ОС, H – буква, назначенная нашей флешке.

Монтируем в виртуальный привод ISO-образ установочного дистрибутива Windows и копируем с него файлы на флешку:

xcopy G:*.* H: /e /f /h

В примере выше диск G — виртуальный привод, в который смонтирован ISO-образ Windows, а диск H — загрузочная флешка.

Установка пакетов в Debian

Дата: 09.10.2015Метки:

В Debian установка пакетов выполняется двумя способами. Первый вариант — из подключенных репозиториев. Второй — установка deb-пакета с локального раздела диска. В зависимости от типа установки, используется программы APT или DPKG.

Установка пакетов в Debian с помощью APT

Команда apt-get использует базу пакетов, автоматически определяет и устанавливает все необходимые зависимости. Для установленных через apt-get пакетов, существует механизм автоматического отслеживания и установки обновлений. Поэтому, в большинстве случаев рекомендуется установка пакетов в Debian с помощью команды apt-get.

В Debian установка пакетов из репозитория начинается с обновления локального кэша APT:

apt-get update

В результате работы, команда обновит информацию о всех пакетах, которые содержатся в репозиториях. Далее, по своему усмотрению мы можем использовать одну из команд ниже.

APT: установка пакетов
В Debian установка пакетов выполняется с помощью команды:

apt-get install mysql-server

APT: поиск пакетов
C помощью простых текстовых запросов можно использовать APT для поиска пакетов в репозитории:

apt-cache search mysq-server

APT: список зависимостей
Вывести перечень необходимых для установки пакета программ или библиотек:

apt-cache depends mysq-server

Установка deb-пакета с помощью DPKG

Если по какой-либо причине, необходимого нам пакета нет в репозиториях, в таком случае, можно установить deb-пакет используя команду dpkg.

Самостоятельно DPKG не умеет загружать необходимые для работы пакета зависимости. Также, отсутствует механизм для обновления пакетов. Как правило, команду dpkg используют в тех редких случаях, когда необходима установка deb-пакета с локального диска.

DPKG: установка deb-пакета

dpkg -i /tmp/mysql-server-5.5.deb
apt-get -f install

Последняя команда используется для автоматической загрузки и установки всех необходимых для работы пакета зависимостей.

Список установленных пакетов в Debian

Дата: 08.10.2015Метки:

В процессе настройки системы, может возникнуть необходимость просмотреть список всех установленных пакетов в Debian. Дополнительно, будет нелишним сохранить данную информацию во время резервного копирования системы.

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

В большинстве случаев, когда необходимо просмотреть информацию о установленных пакетах в Debian, будет удобно использовать команду:

dpkg -l

На экран будет выведен список, включающий информацию о версии пакета и его описание. Для удобства, в сочетании с командой dpkg можно использовать фильтрацию по названию пакета:

# Для точного название пакета
dpkg -l mc
# Да отображения пакетов по маске
dpkg -l php*

Если необходимо узнать место расположения файлов для уже установленного пакета, необходимо использовать команду ниже:

dpkg -L mc

Используем dpkg для бэкапа и установки пакетов

Рассмотрим ситуацию, когда вам необходимо сохранить список установленных пакетов в файл, для его дальнейшего использования. В этом случае необходимо просто направить результат выполнения команды:

dpkg --get-selections > ~/package.list

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

dpkg --set-selections < ~/package.list
apt-get update && apt-get -u dselect-upgrade

Скачать пакет из репозитория Debian

Дата: 05.10.2015Метки:

Как правило, программы и обновления в Linux устанавливаются преимущественно из репозиториев. До тех пор, пока не закончиться срок поддержки дистрибутива, версии пакеты в репозитории постоянно находятся в движении.

Мейнтейнеры регулярно следят за выпуском обновлений и поддерживают репозиторий в актуальном состоянии. После добавления новой версии пакета, старые сразу удаляются. Связи с чем, может возникнуть необходимость сохранить необходимую версию пакета, для того что бы использовать ее в будущем.

Как вариант, можно просто скачать deb-пакет из репозитория Debian без его последующей установки. Для этого у пакетного менеджера apt-get в Debian есть специальная опция download, которая позволяет скачать пакет в текущую директорию. Для того чтобы скачать пакет из репозитория Debian необходимо выполнить команду ниже:

cd /tmp
apt-get download package-name

Если пакет уже был ранее установлен в системе, можно скопировать deb-файл из каталога:

cd /var/cache/apt/archives/

Создать tar.gz

Дата: 03.10.2015Метки:

Наиболее часто в процессе работы в Linux пользователи сталкиваются с форматом архива tar.gz, который является своего рода стандартом для Linux систем. Расширение имени файла состоит из двух частей не случайно.

Это связано с тем, что самостоятельно утилита tar не умеет сжимать файлы, а лишь выполняет функцию объединения нескольких файлов внутри одного архива. В соответствии с традициями UNIX, такие архиваторы как gzip или bzip2 умеют работать одновременно только с одним файлом. Связи с чем, работая в связке эти программы дополняют друг друга.

В содержимое tar архива записываются файлы и такая информация как: структура директорий, права доступа и временные метки файлов. После чего данные сжимается архиватором. В итоге мы получаем архив с tar.gz расширением имени файла.

Синтаксис команды tar и описание значения ключей:

tar [-ключи] [название архива] [путь к файлам]

: создать файл архива;
-x: извлечь файлы;
-z: тип архива .gzip;
-j: тип архива .bz2;
-v: отображать информацию о процессе выполнения;
-f: записать архив в файл.

Создать tar.gz

Чтобы создать tar.gz архив необходимо выполнить команду tar с указанными ниже ключами:

tar -czvf files.tar.gz /files
# Для нескольких файлов
tar -czvf files.tar.gz file1 file2 dir1 dir2

Чтобы распаковать tar.gz файл используем команду:

tar -xzvf files.tar.gz

Создать .tar.bz2

В отличие от предыдущего метода, данный алгоритм сжатия более эффективен, но уступает производительность GZIP. Чтобы создать tar.bz2 архив необходимо выполнить команду:

tar -cjvf file.tar.bz2 /files
# Для нескольких файлов
tar -cjvf  file1 file2 dir1 dir2

Чтобы распаковать tar.bz2 файл используем команду:

tar -xjvf files.tar.gz

Распаковка архивов в Linux

Дата: 28.09.2015Метки:

В процессе работы в Linux часто сталкивавшийся с необходимости распаковки различного рода архивов. До того момента, пока не запомнишь на память формат команды, приходится каждый раз искать в поисковике параметры распаковки того, или иного архива. Для того чтобы немного облегчит себе жизнь, можно использовать специальный скрипт для распаковки архивов в Linux.

Скрипт содержит команды для распаковки большинства популярных форматов архивов, для его работы важно чтобы требуемый архиватор был установлен в системе. Для работы скрипта в Debian/Ubuntu, необходимо добавить функцию unpack в содержимое системного файла /etc/bash.bashrc конфигурации bash.

nano /etc/bash.bashrc

Скрипт для распаковки архивов в Linux:

function unpack {
if [ -z "$1" ]; then
    echo "Usage: extract "
 else
    if [ -f "$1" ] ; then
        NAME=${1%.*}
        case "$1" in
          *.tar.bz2)   tar xvjf ./"$1"    ;;
          *.tar.gz)    tar xvzf ./"$1"    ;;
          *.tar.xz)    tar xvJf ./"$1"    ;;
          *.lzma)      unlzma ./"$1"      ;;
          *.bz2)       bunzip2 ./"$1"     ;;
          *.rar)       unrar x -ad ./"$1" ;;
          *.gz)        gunzip ./"$1"      ;;
          *.tar)       tar xvf ./"$1"     ;;
          *.tbz2)      tar xvjf ./"$1"    ;;
          *.tgz)       tar xvzf ./"$1"    ;;
          *.zip)       unzip ./"$1"       ;;
          *.Z)         uncompress ./"$1"  ;;
          *.7z)        7z x ./"$1"        ;;
          *.xz)        unxz ./"$1"        ;;
          *.exe)       cabextract ./"$1"  ;;
          *)           
        esac
    else
        echo "'$1' - file does not exist"
    fi
fi
}

Применяем изменения командой:

source /etc/bash.bashrc ~/bashrc

Вне зависимости от формата запакованного файла, теперь для распаковки архивов в Linux достаточно использовать всего одну команду unpack:

$ extract file.gz
$ extract file.tar.gz
$ extract file.tar.bz2