Page_c76a3fcf https://linux-notes.org Unix/ Linux блог, на котором можно найти полезную информацию по настройке ОС и ПО. Mon, 12 Mar 2018 20:56:29 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 Page_c76a3fcf https://linux-notes.org/ustanovka-cgroups-v-unix-linux/ https://linux-notes.org/ustanovka-cgroups-v-unix-linux/#comments Mon, 12 Mar 2018 20:55:57 +0000 http://linux-notes.org/?p=10141 Установка cgroups в Unix/Linux cgroups (англ. control group) — механизм ядра Linux, который ограничивает и изолирует вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода) для групп процессов. Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами и обеспечивает программное управление ими. Вы можете использовать CGroups для ограничения количества ресурсов, которые может потреблять процесс или […]

The post Установка cgroups в Unix/Linux first appeared on linux-notes.org.]]>

Установка cgroups в Unix/Linux

cgroups (англ. control group) — механизм ядра Linux, который ограничивает и изолирует вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода) для групп процессов. Механизм позволяет образовывать иерархические группы процессов с заданными ресурсными свойствами и обеспечивает программное управление ими.

Вы можете использовать CGroups для ограничения количества ресурсов, которые может потреблять процесс или группа.

Архитектура cgroups

Механизм cgroups состоит из двух составных частей: ядра (cgroup core) и так называемых подсистем.

  • net_cls — помечает сетевые пакеты специальным тэгом, что позволяет идентифицировать пакеты, порождаемые определённой задачей в рамках контрольной группы;
  • devices — разрешает или блокирует доступ к устройствам;
  • blkio — устанавливает лимиты на чтение и запись с блочных устройств;
  • pids — используется для ограничения количества процессов в рамках контрольной группы.
  • cpu — обеспечивает доступ процессов в рамках контрольной группы к CPU;
  • hugetlb — активирует поддержку больших страниц памяти для контрольных групп;
  • cpuacct — генерирует отчёты об использовании ресурсов процессора;
  • freezer — приостанавливает и возобновляет выполнение задач в рамках контрольной группы
  • cpuset — распределяет задачи в рамках контрольной группы между процессорными ядрами;
  • memory — управляет выделением памяти для групп процессов;
  • netprio — используется для динамической установки приоритетов по трафику;

Установка cgroups в Unix/Linux

Данная тема охватит несколько ОС с наглядными примерами.

Установка cgroups в CentOS/RedHat

Данные управляющие группы и подсистемы ( к которым они относятся), могут управляться с помощью shell команд и утилит. Однако самый простой способ работы с такими группами — установить пакет libcgroup. Чтобы установить его, выполните следующую команду:

# yum install libcgroup -y

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

# service cgconfig start

Для проверки статуса, можно выполнить:

# service cgconfig status
Running

Чтобы добавить службу в автозагрузку ОС, выполните:

# chkconfig cgconfig on

Установка cgroups в Gentoo

Команда для установки:

$ su -c 'emerge libCGroup'

Установка cgroups в Fedora

Команда для установки:

$ su -c 'yum -y install libCGroup-tools'

Установка cgroups в Debian/Ubuntu

Не было необходимости еще!

Настройка cgroups в Unix/Linux

Документация ядра предоставляет общее описание с примерами. Но я в своей статье «Установка cgroups в Unix/Linux» опишу все возможные примеры максимально подробно.

Пакет cgroups-bin (который зависит от libcgroup1), уже предоставленный дистрибутивом. Настройка выполняется путем редактирования следующих двух файлов:

  • /etc/cgconfig.conf — В зависимости от содержимого файла конфигурации cgconfig может создавать иерархии, монтировать необходимые файловые системы, создавать группы и устанавливать параметры подсистемы (ограничения ресурсов) для каждой группы. Иерархия представляет собой набор групп, расположенных в дереве, так что каждая задача в системе находится в одной из групп в иерархии.
  • /etc/cgrules.conf — Служит для добавления ограничений для пользователей, групп, процессов.

Менеджер рабочей нагрузки (cgconfig) отвечает за распределение ресурсов.

Добавление нового процесса в менеджер можно следующим образом:

# cgexec [-g <controllers>:<path>] command [args]

Добавление уже запущенного процесса в менеджер:

# cgclassify [-g <controllers>:<path>] <pidlist>

Или, можно использовать автоматический режим при работе с файлом cgrules.conf и CGroup Rules Daemon (cgred), который заставляет каждый вновь созданный процесс использовать ограничение по группе (но об этом позже).

И так, начнем редактирование:

# vim /etc/cgconfig.conf

Вот пример моего:

group group1 {
        perm {
                task {
                        uid = captain;
                        gid = captain;
                }
                admin {
                        uid = root;
                        gid = root;
                }
        }

        cpu {
                cpu.shares = 500;
        }
}

group limitcpu{
        cpu {
                cpu.shares = 400;
        }
}

group limitmem{
        memory {
                memory.limit_in_bytes = 512m;
        }
}
group limitio{
        blkio {
                blkio.throttle.read_bps_device = "11:0 2097152";
        }
}
group browsers{
        cpu {
                cpu.shares = 200;
        }
        memory {
                memory.limit_in_bytes = 128m;
        }
}

Можно этот файл использовать а можно создать новый файл в /etc/cgconfig.d директории, например:

# vim /etc/cgconfig.d/test.conf

Пояснения:

  • В группе limitcpu ограничиваем общие ресурсы cpu доступными для процессов в этой группе до 400. cpu.shares указывает относительную долю времени процессора, доступного для задач в cgroup.
  • В группе limitmem ограничиваем доступную памяти cgroup процессам до 512 МБ.
  • В limitio группе ограничиваем пропускную способность диска до 2 Мбайт/с. Здесь ограничиваем чтение ввода-вывода на основной диск, /dev/vda, с основным: младший номер 11:0 и 2MiB/s преобразуется в байты в секунду (2x1024x1024 = 2097152).
  • В browsers группе ограничиваем общие ресурсы процессора до 200 и доступную память до 128 МБ.

Затем убедитесь, что настроенные группы отображаются правильно:

# lscgroup
cpuset:/
cpu:/
cpu:/browsers
cpu:/limitcpu
cpu:/group1
cpuacct:/
memory:/
memory:/browsers
memory:/limitmem
devices:/
freezer:/
net_cls:/
blkio:/
blkio:/limitio

Наша следующая цель — добавить процессы (задачи), для которых мы хотим ограничить ресурсы для ранее созданных групп. Cgred (механизм управления группами) — это служба, которая перемещает задачи в группы в соответствии с параметрами, заданными в файле /etc/cgrules.conf. Записи в файле /etc/cgrules.conf могут принимать одну из двух форм:

user subsystems control_group

ИЛИ:

user:command subsystems control_group

user ссылается на имя пользователя или имя группы с префиксом «@». Подсистемы (subsystems) относятся к списку подсистем, которые разделенному запятыми. control_group представляет собой путь к cgroup, а команда обозначает имя процесса или полный путь к процессу процесса. Записи в файле /etc/cgrules.conf могут содержать следующие дополнительные обозначения:

  • @ — Указывает группу вместо отдельного пользователя. Например, @admin указывает всех пользователей в admin группе.
  • * — Использовать «все\всех». Например, если установить * в user поле, то это будет говорить, что будут использоватся все пользователи в ОС.
  • % — Представляет элемент тот же, что и элемент в строке выше.

Теперь добавим ограничение к программам/процессам, которые хотим ограничить, открываем:

# vim /etc/cgrules.conf

И прописываем:

captain cpu group1/
*:firefox cpu,memory browsers/
*:hdparm blkio limitio/
sammy blkio limitio/
@admin:memhog memory limitmem/
*:cpuhog cpu limitcpu/

В приведенных выше строках устанавливаем следующие правила:

  • Для пользователя (captain) ограничиваем CPU.  Для этого, ему назначаем group1 группу.
  • Процессы firefox запускаемые от любого пользователя, будут автоматически добавлены в browsers группу и ограничеваем в подсистеме CPU и RAM.
  • Процессы hdparm запускаемые от любого пользователя, будут добавленs в blkio группу с ограничением подсистемы blkio в соответствии с значениями параметров, указанными в этой группе.
  • Все процессы, выполняемые пользователем sammy, будут добавлены в лимитированную группу и ограничены в подсистеме blkio.
  • Процессы memhog, запускаемые кем-либо из группы admin, будут добавлены в limitmem cgroup и ограничены по памяти.
  • Процессы cpuhog, выполняемые от любого пользователя, будут добавлены в limitcpu группу и ограничены по CPU.

Нам нужно запустить/перезапустить cgred-службу, чтобы изменения конфигурации cgrules вступили в силу, сделайте это, используя команду:

# service cgred restart

Нам также необходимо убедиться, что служба cgred включена для запуска при атозагрузке системы, чтобы наши правила сохранялись при перезагрузке:

# chkconfig cgred on

ЗАМЕЧАНИЕ: Для служб, которые поддерживают sysconfig, вы можете добавить CGROUP_DAEMON=»subsystem:control_group» переменную  в /etc/sysconfig/servicename вместо редактирования файла cgrules.conf. Например, для httpd службы, вы можете добавить CGROUP_DAEMON=»blkio:/limitio» в файл /etc/sysconfig/httpd.conf, чтобы добавить httpd-процессы в группу limitio.

Затем перезапустите:

# service cgconfig restart

Настройка завершена.

Использование, тестирование cgroups в Unix/Linux

Запуск службы cgconfig создает виртуальную файловую систему, установленную в /cgroup со всеми подсистемами. Проверим это:

# ls /cgroup

Получаем следующие подсистемы:

blkio cpu cpuacct cpuset devices freezer memory net_cls

Можно запустить команду `lscgroup ‘для проверки:

$ sudo lscgroup

Вы увидите подсистемы в несколько иной компоновке:

cpuset:/
cpu:/
cpuacct:/
memory:/
devices:/
freezer:/
net_cls:/
blkio:/

Протестируем ограничение на диск, для этого — нужно установить утилиту hdparm. Например, для rpm’s ОС, выполните:

# yum install hdparm

Теперь давайте запустим команду для измерения скорости чтения вашего жесткого диска, например:

# hdparm --direct -t /dev/vda

Вывод будет такой:

/dev/vda:
Timing O_DIRECT disk reads: 6 MB in 3.00 seconds = 2.00 MB/sec

На выходе показана пропускная способность диска 2 МБ/с. Если вы остановите службы cgconfig и cgred и снова запустите команду hdparm, вы можете увидеть исходную/стандартную скорость чтения с того момента, когда правила группы не были реализованы.

Создание cgroups в Unix/Linux

Чтобы создать CGroup c ограничением по CPU/RAM, выполним:

# cgcreate -g cpu,memory:your_cgroup_name

Где:

  • cpu,memory — Какие ресурсы будут ограничены. Можно еще ограничить — cpuset,cpuacct.
  • your_cgroup_name — Название вашей cgroup группы.

Можно установить ограничение прям в консоле, например, — установим ограничение по использованию RAM:

# cgset -r memory.limit_in_bytes=1G your_cgroup_name

Можно установить ограничение прям в консоле, например, — установим ограничение по использованию CPU приоритет до ~10% (1024 — это 100% приоритет):

# cgset -r cpu.shares=102 your_cgroup_name

Если используете systemD, то можно использовать SystemD Slices, нпример:

# systemctl set-property user.slice MemoryLimit=512M
# systemctl set-property system.slice MemoryLimit=1024M

Или, можно закинуть в fstab:

# cat /etc/fstab | grep -E "cgroup"

cgroup /sys/fs/cgroup cgroup defaults 0 0

Мне этого хватило что-бы пофиксить кое-что связанное с докером. Если появятся мысли что дополнить — обязательно дополню. Вот и все, статья «Установка cgroups в Unix/Linux» завершена.

The post Установка cgroups в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-cgroups-v-unix-linux/feed/ 1
Page_c76a3fcf https://linux-notes.org/sgenerirovat-otkry-ty-j-zakry-ty-j-ssh-klyuch-v-unix-linux/ https://linux-notes.org/sgenerirovat-otkry-ty-j-zakry-ty-j-ssh-klyuch-v-unix-linux/#respond Tue, 21 Nov 2017 18:24:52 +0000 http://linux-notes.org/?p=9672 Сгенерировать открытый/закрытый SSH ключ в Unix/Linux Подключение к серверу может быть различным, но одно из самых безопастных — это использования закрытого/открытого SSH-ключа, т.к при этом по сети не передается никакой пароль и система устойчива к атакам методом «грубой силы». Ничего нового я в этой теме не опишу, но для новичков — будет полезно. Та  вообще, […]

The post Сгенерировать открытый/закрытый SSH ключ в Unix/Linux first appeared on linux-notes.org.]]>

Сгенерировать открытый/закрытый SSH ключ в Unix/Linux

Подключение к серверу может быть различным, но одно из самых безопастных — это использования закрытого/открытого SSH-ключа, т.к при этом по сети не передается никакой пароль и система устойчива к атакам методом «грубой силы». Ничего нового я в этой теме не опишу, но для новичков — будет полезно. Та  вообще, в качестве заметке — может пригодится кому-то.

Сгенерировать открытый/закрытый SSH ключ в Unix/Linux

Имеется 2 основных технологии по шифрованию ключей:

  • RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
  • DSA (англ. Digital Signature Algorithm — алгоритм цифровой подписи) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.
  • ecdsa -новый алгоритм цифровой подписи (DSA), разработанный правительством США с использованием эллиптических кривых. Вероятно, это хороший алгоритм для текущих приложений. Поддерживаются только три размера ключа: бит 256, 384 и 521. Мы рекомендуем всегда использовать его с 521 битом.
  • ed25519 — это новый алгоритм, добавленный в OpenSSH. Поддержка этого в клиентах еще не является универсальной. Таким образом, его использование в приложениях общего назначения, возможно, еще не рекомендуется.

Есть много споров насчет того, что более секурнее, DSA или RSA. Но выбор по использованию за вами.

Генерация открытого/закрытого SSH ключ с RSA шифрованием в Unix/Linux

Откройте терминал. Введите:

$ ssh-keygen -t rsa

Он сгенерирует ключ и положит в стандартную папку (~/.ssh). Можно указать какую битность использовать:

$ ssh-keygen -t rsa -b 4096

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

$ ssh-keygen -t rsa -b 4096 -C "shared_L1_team_acc" -f ~/.ssh/l1_key

Как-то так.

Генерация открытого/закрытого SSH ключ с DSA шифрованием в Unix/Linux

Альтернативой является использование для создания ключа технологии DSA (Digital Signing Algorithm):

$ ssh-keygen -t dsa

Он сгенерирует ключ и положит в стандартную папку (~/.ssh). Можно указать какую битность использовать:

$ ssh-keygen -t dsa -b 4096

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

$ ssh-keygen -t dsa -b 4096 -C "shared_L1_team_acc" -f ~/.ssh/l1_key

Как-то так.

Генерация открытого/закрытого SSH ключ с ecdsa шифрованием в Unix/Linux

И так, чтобе заюзать данный тип шифрования, можно выполнить:

# ssh-keygen -t ecdsa -b 521

И опять таки, можно заюзать:

 # ssh-keygen -t ecdsa -b 521 -f test_ecdsa_key

Идем дальше…

Генерация открытого/закрытого SSH ключ с ed25519 шифрованием в Unix/Linux

И так, чтобе заюзать данный тип шифрования, можно выполнить:

# ssh-keygen -t ed25519 -b 521

И опять таки, можно заюзать:

 # ssh-keygen -t ed25519 -b 521 -f test_ed25519_key

Идем дальше…

Использование открытого/закрытого SSH ключа в Unix/Linux

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

$ cat ~/.ssh/l1_key.pub

И получите что-то типа:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC9raaaCmx9CvnAr8ffiODwocbkmmgvIG64AAwGkCDE0iaz0Xl3BJg98+WM8W0IAbNXMPdxjsRbhpUBWb966vsZ0u/ZYdreUOyOgFKLb5nnGh7qC1Sbv8Yp0MvC1M7g/BQimnG1UHv5C0iZDdxlP7Sj9H5Mwf1rpfQCd95j9nWcpJBgrZxvaRhNS+EA5nrg0BtebkznHdWe4f84sUzAWsZZNcd//V5aIF5f5pSHyzCrcMXPppLWOoUJ+xlAj9AUJ74AxGVmlh4au2LHDCpYKAnXpzV5+hy9E8yMGl44Sa3fDHwWX5p3a9r8LdKlYIYVAo3HQsS2Fqw7/m3qmo2+hDvurJWWJUCeQQFL/5MuIN4QS/xUdXutegQImT5ikrEIakSS8NIzaj6ZjpHR+fbl/WdO7/UhoIJYPHjQ7fSVOuMaz5+ZjRZK7QFdG2QXubUUkh1NdI+31T2vZlvAhyMtxMSzj5m014gvPPwPRNiBqwSvHKEe2trA8/bIVgme34YkLhUA58Pqzgc7GHRzwty11ejywZdxonwivX3UCAPcD/95xuIeHcF5OO8y4bWABHvTvdkmB/3RV5S5vkxATqdqqM5+QrUyEzePERgZzKcj+gRqDIozMrVh1jSiX2lwtutJ1iU0YrRhVVph9BJLmcewqb+yDv5eJT+luNNvQy6AvXzuiw== shared_L1_team_acc

На mac OS X имеется функция которая позволяет копировать в буфер, например:

$ cat ~/.ssh/l1_key.pub| pbcopy

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

$ ssh-copy-id -i ~/.ssh/YOUR_KEY YOUR_USER@YOUR_HOST

Где:

  • YOUR_KEY — Ваш сгенерированный ключ.
  • YOUR_USER — Ваш пользователь на удаленной машине.
  • YOUR_HOST — Ваш хост на удаленной машине.

Должен появиться файл:

$ ls -alh ~/.ssh/l1_key.pub

И, добавим содержание ключа в:

$ cat ~/.ssh/l1_key.pub >> ~/.ssh/authorized_keys

Или если используется ~/.ssh/authorized_keys2, то применяем аналогичные действия:

$ cat ~/.ssh/l1_key.pub >> ~/.ssh/authorized_keys2

PS: Можно еще одной командой выполнить ряд аналогичных действий:

# cat ~/.ssh/YOUR_KEY.pub | ssh YOUR_USER@YOUR_HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Осталось уже долго, идем дальше….

Изменение ssh_config

В зависимости от Unix/Linux ОС, ssh_config может лежать в разным местах.

Пример файла в Debian/Ubuntu:

# vim /etc/ssh/ssh_config

Пример файла в Redhat/Fedora/Centos:

# vim /etc/ssh/sshd_config

Примерный вывод:

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
SyslogFacility AUTHPRIV
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
GSSAPICleanupCredentials yes
X11Forwarding yes
UseLogin no
AllowUsers captain root
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem	sftp	/usr/libexec/openssh/sftp-server

В данном конфиге (я имею ввиду по этой теме), нас интересует следующие строки:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

После того как привели к такому виду, перезапускаем ssh:

# service sshd restart

Подключаемся к удаленному серверу:

$ ssh -i l1_key your_username@your_host_ip

Вот еще полезное чтиво:

Сгенерировать public SSH ключ из private SSH ключа в Unix/Linux

Открыть порт ssh по стуку с IPtables в Unix/Linux

Запустить команды через SSH в Unix/Linux

Переход в другую директорию при SSH соединении в Unix/Linux

Поменять SSH Port 22 в Unix/Linux

Безопасный SSH с Google Authenticator в Unix/Linux

Поменять пароль приватного RSA ключа для SSH в Unix/Linux

Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux

Запретить/Разрешить доступ для пользователей и групп в OpenSSH

Другие темы можно найти на сайте 🙂

Тема «Сгенерировать открытый/закрытый SSH ключ в Unix/Linux» завершена.

The post Сгенерировать открытый/закрытый SSH ключ в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/sgenerirovat-otkry-ty-j-zakry-ty-j-ssh-klyuch-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ispol-zovanie-aws-s-mnogofaktornoj-autentifikatsiej-mfa-v-unix-linux/ https://linux-notes.org/ispol-zovanie-aws-s-mnogofaktornoj-autentifikatsiej-mfa-v-unix-linux/#respond Tue, 17 Oct 2017 09:21:43 +0000 http://linux-notes.org/?p=13904 Использование AWS с многофакторной аутентификацией (MFA) в Unix/Linux Многие ставят MFA на свои учетные записи в AWS для более секурного использования. Типа, — супер секурно и все дела… Это правда, но MFA с AWScli в стандартной конфигурации, — не будет работать из-за того, что используется временные токены. Я расскажу как можно обойти это дело и начать […]

The post Использование AWS с многофакторной аутентификацией (MFA) в Unix/Linux first appeared on linux-notes.org.]]>

Использование AWS с многофакторной аутентификацией (MFA) в Unix/Linux

Многие ставят MFA на свои учетные записи в AWS для более секурного использования. Типа, — супер секурно и все дела… Это правда, но MFA с AWScli в стандартной конфигурации, — не будет работать из-за того, что используется временные токены.

Я расскажу как можно обойти это дело и начать использовать AWS cli с MFA. Для начала, ставим питон (у меня используется python3). Ставим библиотеки:

# pip3 install boto3 aws-mfa

PS: Если используете питон2, то можно выполнить:

# pip install boto3 aws-mfa

и так, либы уже установлены, — осталось немного видоизменить конфиг-файл самого AWS. Открываем:

$ vim ~/.aws/credentials

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

[default]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY
region = us-east-1

[LinuxNotes]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY

Приводим к виду:

[default]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY
region = us-east-1

[default-long-term]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY
region = us-east-1

[LinuxNotes]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY

[LinuxNotes-long-term]
aws_access_key_id = XXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYY

И так далее….. Суть уловили…

После чего, запускаем:

$ aws-mfa --duration 1800 --device arn:aws:iam::41316628489:mfa/captain --profile=LinuxNotes

Где:

  • —duration 1800 — Время (Количество секунд), через которое будет сбрасыватся временные креденшелы.
  • —device arn:aws:iam::41316628489:mfa/captain — Это MFA роль. Ее можно глянуть через веб-консоль.
  • —profile=LinuxNotes — профиль, который прописали в ~/.aws/credentials

Для удобства использования, можно использовать переменные:

$ export MFA_DEVICE=arn:aws:iam::41316628489:mfa/captain
$ export MFA_STS_DURATION=1800

И потом, просто вызвать:

$ aws-mfa --profile=LinuxNotes

PS: Так же, можно заекспортировать и профиль:

$ export AWS_PROFILE=LinuxNotes

После запуска данной команды, вас попросят ввести MFA. Мне надоело каждый раз доставать свой телефон и вводить значение, по этому — я написал скрипт на питоне:

# vim get_creds.py

Вот как он выглядит:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import configparser
import argparse
import pyotp


def get_creds_from_acc_name(acc_name):
    db_file = '~/.aws/credentials'
    config = configparser.ConfigParser()
    config.sections()
    config.read(db_file)
    aws_access_key_id = config[acc_name]['aws_access_key_id']
    aws_secret_access_key = config[acc_name]['aws_secret_access_key']
    region = config[acc_name]['region']
    mfa_autorisation = config[acc_name]['mfa_autorisation']

    return aws_access_key_id, aws_secret_access_key, region, mfa_autorisation


def generate_token(acc_name):
    account_creds = get_creds_from_acc_name(acc_name)
    totp = pyotp.TOTP(account_creds[3])
    print("Current OTP for %s:" % acc_name, totp.now())
    # print (totp.verify(totp.now()))

    return generate_token


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--acc', dest='account', help='Account name', default=None)
    results = parser.parse_args()
    ac_name = results.account
    generate_token(ac_name)


if __name__ == '__main__':
    main()

Где нужно изменить:

  • db_file — Это путь где лежит ваш .aws/credentials файл.
  • Добавить значение для MFA в поле mfa_autorisation (нужно самому вставить) — в файле .aws/credentials.

После чего, можно использовать:

$ python3 get_creds.py --acc LinuxNotes

Current OTP for LinuxNotes: 328868

После чего, можно использовать AWS CLI, например:

# aws ec2 describe-instances --region=us-east-1 --profile=LinuxNotes --query "Reservations[].Instances[].PrivateIpAddress[]" --instance-ids

Это немного облегчает жизнь. У меня на этом все и статья «Использование AWS с многофакторной аутентификацией (MFA) в Unix/Linux» подошла к завершению.

The post Использование AWS с многофакторной аутентификацией (MFA) в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ispol-zovanie-aws-s-mnogofaktornoj-autentifikatsiej-mfa-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-speedtest-cli-dlya-proverki-skorosti-interneta-v-unix-linux/ https://linux-notes.org/ustanovka-speedtest-cli-dlya-proverki-skorosti-interneta-v-unix-linux/#respond Sun, 19 Mar 2017 14:34:36 +0000 http://linux-notes.org/?p=10949 Установка speedtest-cli для проверки скорости интернета в Unix/Linux Утилита speedtest-cli — это скрипт, который написан на Python. Он измеряет скорость интернет-трафика в двух направлениях (аплоад и даунлоад) используя инфраструктуру speedtest.net для измерения скорости. Для данной программы необходимо установить Python 2.4-3.4 или выше. Установка speedtest-cli для проверки скорости интернета в Unix/Linux Есть несколько способов установить speedtest-cli: Первый способ — […]

The post Установка speedtest-cli для проверки скорости интернета в Unix/Linux first appeared on linux-notes.org.]]>

Установка speedtest-cli для проверки скорости интернета в Unix/Linux

Утилита speedtest-cli — это скрипт, который написан на Python. Он измеряет скорость интернет-трафика в двух направлениях (аплоад и даунлоад) используя инфраструктуру speedtest.net для измерения скорости. Для данной программы необходимо установить Python 2.4-3.4 или выше.

Установка speedtest-cli для проверки скорости интернета в Unix/Linux

Есть несколько способов установить speedtest-cli:

  • Первый способ —  предполагает использование пакета python-pip.
  • Второй способ — загрузить сценарий Python, сделать его исполняемым и запустить.
  • Третий способ — использовать пакетный менеджер.
  • Четвертый способ — скачать speedtest-cli используя Github.

Все команды я буду выполнять от суперпользователя, по этому — я залогинюсь под ним:

$ sudo su

Вводим пароль от пользователя root и получаем его права.

-=1=- Установка speedtest-cli используя pythin-pip

И так, для начала выполняем установку python-pip, если не знаете как это сделать — вот статья:

Установка pip/setuptools/wheel в Unix/Linux

И, выполняем установку speedtest-cli пакета:

# pip install speedtest-cli

Для обновления speedtest-cli, используйте:

# pip install speedtest-cli --upgrade

-=2=- Установка speedtest-cli используя Python скрипт

Сначала загрузите скрипт python из github с помощью команды wget, распакуйте загруженный файл (master.zip):

$ cd /usr/local/src && wget https://github.com/sivel/speedtest-cli/archive/master.zip && unzip master.zip

После извлечения архива, перейдите в speedtest-cli-master папку и сделайте исполняемый файл:

$ cd speedtest-cli-master/
$ chmod 755 speedtest_cli.py

Затем переместите исполняемый файл в /usr/bin директорию:

$ sudo mv speedtest_cli.py /usr/bin/

Вот еще один вариант:

# cd /usr/local/src && wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
# chmod +x speedtest-cli

Или:

# cd /usr/local/src && curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
# chmod +x speedtest-cli

-=3=- Установка speedtest-cli используя пакетный менеджер.

Если вы используйте Debian/Ubuntu ОС, выполните:

# apt install speedtest-cli

Если вы используйте CentOS/Fedora/RHEL ОС, выполните:

# yum install speedtest-cli

Если вы используйте Mac OS X, выполните:

Для начала, устанавливаем HomeBrew:

Установка HomeBrew на Mac OS X

И выполняем установку:

$ brew install speedtest_cli

-=4=- Установка speedtest-cli используя Github

Используем:

$ pip install git+https://github.com/sivel/speedtest-cli.git

Или

$ git clone https://github.com/sivel/speedtest-cli.git

И выполняем установку:

# python speedtest-cli/setup.py install

Или можно запустить следующую команду:

$ curl -s  https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

Использование speedtest-cli для проверки скорости интернета в Unix/Linux

В зависимости каким методом установки вы воспользовались, будет зависеть запуск speedtest-cli утилиты:

  • speedtest-cli
  • speedtest_cli.py

1. Чтобы проверить скорость загрузки и выгрузки своего интернет-соединения, запустите команду speedtest-cli без каких-либо аргументов, как показано ниже:

$ speedtest_cli.py

2. Для вывода информации в байтах (вместо битов), используйте:

$ speedtest_cli.py --bytes

3. Поделитесь своей пропускной способностью с друзьями или семьей. Вам предоставляется ссылка по завершению проверки:

# speedtest-cli --share

Конечно, вы можете комбинировать оба варианта:

$ speedtest-cli --share --bytes

4. Вам не нужна дополнительная информация (кроме Ping, Download и upload), то для этого используйте:

$ speedtest_cli.py --simple

5. Посмотреть сервера которые использует speedtest.net на основе физического расстояния ( км ):

$ speedtest_cli.py --list

6. На последнем этапе сформирован огромный список серверов, отсортированных по расстоянию. Как получить желаемый результат? Скажем, я хочу видеть только сервер speedtest.net, расположенный в Мумбаи (Индия):

$ speedtest-cli --list | grep -i Kiev

7. Проверьте скорость подключения к определенному серверу. Используйте идентификатор сервера, сгенерированный в примере 5 и в примере 6:

$ speedtest_cli.py --server [server_ID]

Как указать идентификатор сервера для тестирования?

Во-первых, возьмите список серверов, введите:

$ cd /usr/local/src && wget http://www.speedtest.net/speedtest-servers.php

Чтобы просмотреть идентификатор сервера, введите:

$ more speedtest-servers.php

Чтобы выполнить поиск идентификатора сервера, введите:

$ grep 'name' speedtest-servers.php
$ grep 'country' speedtest-servers.php

Рассмотрим пример:

$ grep 'Kiev' speedtest-servers.php

Вывод:

<server url="http://speedtest01.life.com.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="lifecell" id="3230"  url2="http://speedtest02.life.com.ua/speedtest/upload.php" host="speedtest01.life.com.ua:8080" />
<server url="http://speedtest.volia.net/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Volia" id="2518"  url2="http://speedtest2.volia.com/speedtest/upload.php" host="speedtest.volia.net:8080" />
<server url="http://speedtest.cosmonova.net/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Cosmonova" id="5447"  url2="http://speedtest.cosmonova.net.ua/speedtest/upload.php" host="speedtest.cosmonova.net:8080" />
<server url="http://st1.utelecom.com.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="PROSTO" id="6088"  url2="http://st12.utelecom.com.ua/speedtest/upload.php" host="st1.utelecom.com.ua:8080" />
<server url="http://speedtest.lanet.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Lanet Network" id="5477"  url2="http://speedtest.la.net.ua/speedtest/upload.php" host="speedtest.lanet.ua:8080" />
<server url="http://kiev.speedtest.triolan.com.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Triolan" id="6010"  url2="http://kiev2.speedtest.triolan.com.ua/speedtest/upload.php" host="kiev.speedtest.triolan.com.ua:8080" />
<server url="http://sp1.ip.net.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Ipnet" id="6312"  url2="http://sp2.ip.net.ua/speedtest/upload.php" host="sp1.ip.net.ua:8080" />
<server url="http://www.speedtest1.kyivstar.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Kyivstar" id="6446"  url2="http://www.speedtest2.kyivstar.ua/speedtest/upload.php" host="www.speedtest.kyivstar.ua:8080" />
<server url="http://speedtest1.under.net.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="UnderNet" id="6195"  url2="http://speedtest2.under.net.ua/speedtest/upload.php" host="speedtest1.under.net.ua:8080" />
<server url="http://xmon.x.ua/speedtest_plugin/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="x.ua - CDN" id="5072"  url2="http://xmon1.x.ua/speedtest_plugin/speedtest/upload.php" host="xmon.x.ua:8080" />
<server url="http://sp1.dataline.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Dataline" id="8478"  url2="http://sp2.dataline.ua/speedtest/upload.php" host="speedtest.dataline.ua:8080" />
<server url="http://st.uniteddc.net.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="United Network Of Ukraine" id="7743"  url2="http://st.uniteddc.net/speedtest/upload.php" host="st.uniteddc.net.ua:8080" />
<server url="http://sp1.infocom.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Infocom" id="9264"  url2="http://sp2.infocom.ua/speedtest/upload.php" host="sp1.infocom.ua:8080" />
<server url="http://kyiv.speedtest.vegatele.com/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="Vega (Farlep-Invest)" id="6578"  url2="http://host-kv.speedtest.vegatele.com/speedtest/upload.php" host="kyiv.speedtest.vegatele.com:8080" />
<server url="http://speedtest.ukrtelecom.ua/speedtest/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="JSC Ukrtelecom" id="831"  url2="http://speedtest1.ukrtelecom.ua/speedtest/upload.php" host="speedtest.ukrtelecom.ua:8080" bigsamples="0" />
<server url="http://sp1.o3.ua/upload.php" lat="50.4500" lon="30.5233" name="Kiev" country="Ukraine" cc="UA" sponsor="o3" id="9332"  url2="http://sp2.o3.ua/upload.php" host="sp1.o3.ua:8080" />

Так же, можно показать только ID сервера(ов):

$ grep 'Kiev' speedtest-servers.php | egrep -o 'id="[0-9]{4}"'

Примеры результатов:

id="3230"
id="2518"
id="5447"
id="6088"
id="5477"
id="6010"
id="6312"
id="6446"
id="6195"
id="5072"
id="8478"
id="7743"
id="9264"
id="6578"
id="9332"

Далее используйте идентификатор сервера 6088:

$ speedtest-cli --server 6088

И получаем:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from TerraTransit (31.187.70.238)...
Hosted by PROSTO (Kiev) [2171.68 km]: 80.402 ms
Testing download speed........................................
Download: 181.86 Mbit/s
Testing upload speed..................................................
Upload: 43.13 Mbit/s

8. Создание лога с помощью speedtest-cli

Speedtest-cli можно запустить как cronjob, чтобы получить лог-файл с тестом скорости интернет-соединения. Откройте crontab с помощью следующей команды:

$ crontab -e

И добавьте эту строку (я предполагаю, что speedtest_cli.py установлен в /usr/local/bin) в crontab:

30 00 * * * /usr/local/bin/speedtest-cli >> /tmp/speedlog.txt

Сохраните изменения и выйдите из редактора crontab. Это проведет тест скорости в 0:30 каждый день и добавит результат в файл /tmp/speedlog.txt.

9. Чтобы проверить версию утилиты, используйте:

$ speedtest_cli.py --version

10. Для дополнительной информации ( помощи), используйте:

$ speedtest_cli.py --help

На этом у меня все, статья «Установка speedtest-cli для проверки скорости интернета в Unix/Linux» завершена.

The post Установка speedtest-cli для проверки скорости интернета в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-speedtest-cli-dlya-proverki-skorosti-interneta-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/utilita-pidstat-v-unix-linux/ https://linux-notes.org/utilita-pidstat-v-unix-linux/#respond Sat, 25 Feb 2017 22:57:43 +0000 http://linux-notes.org/?p=11888 Утилита pidstat в Unix/Linux Утилита pidstat– это сокращение от PID Statistics (статистика по PID) и входит в sysstat пакет и используется для мониторинга процессов в режиме реального время. Это инструментальное средство выдает различные статистические данные по процессу, в том числе об использовании процессора, об использовании процессом дискового пространства, о потоках, связанных с выбранными задачами и дочерними процессами. […]

The post Утилита pidstat в Unix/Linux first appeared on linux-notes.org.]]>

Утилита pidstat в Unix/Linux

Утилита pidstat– это сокращение от PID Statistics (статистика по PID) и входит в sysstat пакет и используется для мониторинга процессов в режиме реального время. Это инструментальное средство выдает различные статистические данные по процессу, в том числе об использовании процессора, об использовании процессом дискового пространства, о потоках, связанных с выбранными задачами и дочерними процессами.

Установка pidstat в Unix/Linux

По  умолчанию, данная утилита не поставляется с Unix/Linux и ее нужно будет установить. pidstat является частью Sysstat пакета, который содержит различные инструменты производительности системы для Linux, она доступна в репозитории большинства дистрибутивов Linux.

Установка pidstat в CentOS/Fedora/RedHat

Выполните команду:

# yum install sysstat -y

Установка pidstat в Debian/Ubuntu/Mint

Выполните команду:

# apt-get install sysstat -y

Установка pidstat в других Unix/Linux ОС

Сейчас будем собирать с исходного кода:

# cd /usr/local/src/ &&  git clone git://github.com/sysstat/sysstat && cd sysstat

И собираем:

# ./configure && make && make install

Использование pidstat в CentOS/Fedora/RedHat

Запуск pidstat без какого-либо аргумента равносильно «-p ALL» аргументу:

# pidstat -p ALL

# pidstat

Вывод можно получить следующий:

Linux 2.6.32-042stab112.15 (linux-notes.org) 	02/21/2017 	_x86_64_	(24 CPU)


04:44:24 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
04:44:24 PM     0         1    0.00    0.00    0.00    0.01     3  systemd
04:44:24 PM  1001     21820    0.00    0.00    0.00    0.00     0  php-fpm
04:44:24 PM  1001     21835    0.00    0.00    0.00    0.00     3  php-fpm
04:44:24 PM     0    138991    0.00    0.00    0.00    0.00     0  bash
04:44:24 PM   992    139041    0.00    0.00    0.00    0.00     3  check_ping
04:44:24 PM   992    139042    0.00    0.00    0.00    0.00     3  ping
04:44:24 PM     0    139044    0.00    0.00    0.00    0.00     3  pidstat
04:44:24 PM   998    162672    0.00    0.00    0.00    0.00     2  fcgiwrap

Где:

  • PID — Идентификационный номер задачи (процесса).
  • %usr -Процент CPU, который использовался при выполнении задачи на уровне пользователя (приложения) с или без «»nice приоритета. Обратите внимание, что это поле не включает время, затраченное на работу виртуального процессора.
  • %system — Процент CPU, используемый при выполнении задачи на системном уровне.
  • %guest — Процент CPU, используемый при выполнении задачи на виртуальной машине (работает виртуальный процессор).
  • %CPU — Сумарный процент CPU времени на потраченную задачу. В среде SMP, использование процессора на задачу будет разделена на общее число процессоров.
  • CPU — номер процессора, к которому прикреплена задача.
  • Command — Имя команды.

Так же, можно посмотреть общее количество процессов:

# pidstat -p ALL | wc -l

Можно узнать информации по определенному PID:

# pidstat -p 10990
Linux 2.6.32-642.4.2.el6.x86_64 (localhost.localdomain) 02/26/2017 _x86_64_ (1 CPU)

12:33:07 AM PID %usr %system %guest %CPU CPU Command
12:33:07 AM 10990 0.01 0.01 0.00 0.02 0 yumBackend.py
[root@localhost src]#

Просмотр I/O статистики

Мы можем использовать pidstat утилиту чтобы получить статистику ввода/вывода для некоторого процесса, используя флаг «-d». Для примера:

# pidstat -d -p ALL

Вывод:

04:52:21 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
04:52:21 PM     0         1     35.34    289.20      9.68  systemd
04:52:21 PM     0         2      0.00      0.00      0.00  kthreadd/7070
04:52:21 PM     0         3      0.00      0.00      0.00  khelper/7070
04:52:21 PM     0        78      0.06      0.00      0.00  systemd-journal
04:52:21 PM     0       122      0.12      0.00      0.00  systemd-logind
04:52:21 PM    81       147      0.09      0.00      0.00  dbus-daemon
04:52:21 PM     0       210      0.00      0.00      0.00  agetty
04:52:21 PM     0       218      0.00      0.00      0.00  agetty
04:52:21 PM  1001      3419      0.00      0.00      0.00  php-fpm
04:52:21 PM  1001     21745      0.00      0.00      0.00  php-fpm
04:52:21 PM  1001     21818      0.00      0.00      0.00  php-fpm
04:52:21 PM  1001     21819      0.00      0.00      0.00  php-fpm
04:52:21 PM  1001     21820      0.00      0.00      0.00  php-fpm
04:52:21 PM  1001     21835      0.00      0.00      0.00  php-fpm

Где:

  • kB_rd/s — Это количество килобайтов когда процесс считал данные с диска за секунду.
  • kB_wr/s -Это количество килобайтов когда процесс считал или считает данные с диска за секунду.
  • kB_ccwr/s -Это количество килобайтов когда записи на диск былы отменены задачей.

Получить ошибки страниц и использование RAM

статистику использования оперативной памяти

Используйте «-r» опцию чтобы получить статистику об использования оперативной памяти и ошибок страниц:

# pidstat -r -p ALL

Вывод:

04:59:29 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
04:59:29 PM     0         1      0.39      0.00  194796   2632   0.04  systemd
04:59:29 PM     0         2      0.00      0.00       0      0   0.00  kthreadd/7070
04:59:29 PM     0         3      0.00      0.00       0      0   0.00  khelper/7070
04:59:29 PM     0     36783      0.00      0.00  113208   1572   0.02  mysqld_safe
04:59:29 PM   999     37097      1.66      0.00 1335544 484836   7.71  mysqld
04:59:29 PM     0     37204      0.00      0.00   82420   1384   0.02  sshd
04:59:29 PM  1001     93409      0.05      0.00 1035196 116520   1.85  php-fpm
04:59:29 PM  1001     93410      0.05      0.00 1106712 136956   2.18  php-fpm
04:59:29 PM  1001     93411      0.05      0.00 1035700 120460   1.91  php-fpm
04:59:29 PM  1001     93412      0.06      0.00 1033676 118668   1.89  php-fpm

Где:

  • minflt/s — Общее число незначительных сбоев, когда задача выполнялась каждую секунду и не требуют загрузки страничной памяти с диска.
  • majflt/s — Общее число незначительных сбоев, когда задача выполнялась каждую секунду и требуют загрузки страничной памяти с диска.
  • VSZ — Virtual Size: Виртуальное использование памяти для всех задач в килобайтах.
  • RSS — Resident Set Size: Использование физической памыти, но не свапа ( non-swapped) в килобайтах.

Еще примеры.

Отображение статистики по эффективности на основе имени процесса:

# pidstat -C "mysql"

Или:

# pidstat -C mysql

Можно повторять выдачи результата через определенный интервал времени (например 3 секунды):

# pidstat -C mysql -3

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

# pidstat -T CHILD -C mysql

Однако при использовании опции «-l», можно будет просмотреть полный путь к команде и все его аргументы, как показано ниже:

[root@localhost src]# pidstat -C mysql -l
Linux 2.6.32-642.4.2.el6.x86_64 (localhost.localdomain) 	02/26/2017 	_x86_64_	(1 CPU)

12:43:53 AM       PID    %usr %system  %guest    %CPU   CPU  Command
12:43:53 AM      4162    0.02    0.01    0.00    0.03     0  /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/
[root@localhost src]# 

Используя опцию «-t», можно вывести на экран вывод в виде tree (дерева), как показано ниже:

# pidstat -t -C "mysql"

Можно использовать pidstat чтобы найти утечку памяти, используя следующую команду:

# pidstat -r 2 5

Будет показано 5 отчетов в промежуточным временем 2 секунды на отчет о текущей статистики страницы неисправностей.

Чтобы посмотреть подкачку для определенного процесса, используем:

# pidstat -p 3243 -r 1

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

# pidstat -rud

Однако, если вы хотите, видеть всю статистику в горизонтальном  виде и на одной строке для отдельного процесса, используйте опцию «-h», как показано ниже:

# pidstat -urd -h

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

$ man pidstat

Вот и все, статья «Утилита pidstat в Unix/Linux» завершена.

The post Утилита pidstat в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/utilita-pidstat-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/kakie-protsessy-zanyali-swap-v-unix-linux/ https://linux-notes.org/kakie-protsessy-zanyali-swap-v-unix-linux/#respond Wed, 22 Feb 2017 22:54:06 +0000 http://linux-notes.org/?p=11912 Какие процессы заняли SWAP в Unix/Linux Утилиты top/htop и free отображают общее количество свободной, занятой физической памяти, а так же SWAP на сервере. Как определить, какой процесс использует пространство подкачки в Unix/Linux? Вы можете использовать любой из следующих методов (но имейте в виду, что из-за общих страниц, нет никакого надежного способа получить данную информацию): Используйте «/proc/meminfo» – Утилита, которая […]

The post Какие процессы заняли SWAP в Unix/Linux first appeared on linux-notes.org.]]>

Какие процессы заняли SWAP в Unix/Linux

Утилиты top/htop и free отображают общее количество свободной, занятой физической памяти, а так же SWAP на сервере. Как определить, какой процесс использует пространство подкачки в Unix/Linux?

Вы можете использовать любой из следующих методов (но имейте в виду, что из-за общих страниц, нет никакого надежного способа получить данную информацию):

  • Используйте «/proc/meminfo» – Утилита, которая покажет общие сведения об RAM/SWAP. Данная статистика используется с утилитой «free», чтобы сообщить количество свободной и используемой памяти (как физической, так и swap) в системе, а также общей памяти и буферов используемых ядром. Вы также можете использовать free, vmstat и другие инструменты чтобы узнать ту же информацию.
  • «/proc/${PID}/smaps», «/proc/${PID}/status» и «/proc/${PID}/stat» — Используя эти утилиты, чтобы найти информацию о памяти, страницах и swap-е используемых каждым процессом( зная PID процесса).
  • Используя smem.

Какие процессы заняли SWAP в Unix/Linux

Можно добиться желаемого результата несколькими способами.

Находим идентификатор процесса (PID):

# pidof memcached

Альтернатива, использовать «pgrep» команду для поиска PID-а:

# pgrep memcached

И так, одна из команд выведет подобный результат:

79225

Чтобы увидеть сколько использует swap служба memcached можно следующим образом:

# cat /proc/79225/status | grep -E "VmSwap"

И так, я показал сколько используется swap-а по указанному процессу ( memcached), но это не совсем удобно т.к имеется и ряд других процессов которые могут или использует swap, по этому — я сейчас покажу как можно красиво использовать данные утилиты для проверки.

Введите следующую команду в терменале, чтобы увидеть использование свопа по каждому процессу:

# for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done

Небольшая оптимизация — используем сортировку и вывод частями:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

Еще варианты….

{ date;for f in /proc/[0-9]*/status; do awk '{k[$1]=$2} END { if (k["VmSwap:"]) print k["Pid:"],k["Name:"],k["VmSwap:"];}' $f 2>/dev/null; done | sort -n ; }

Нашел небольшой bash скрипт:

# vim /usr/local/src/swap_processes_checker.sh

И прописываем в него:

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
        PID=`echo $DIR | cut -d / -f 3`
        PROGNAME=`ps -p $PID -o comm --no-headers`
        for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
        do
                let SUM=$SUM+$SWAP
        done
        echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
        let OVERALL=$OVERALL+$SUM
        SUM=0

done
echo "Overall swap used: $OVERALL"

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

$ sudo bash /usr/local/src/swap_processes_checker.sh | sort -n -k 5

Данные скрипт покажет все процессы которые используют или не используют SWAP, но можно убрать ненужно ( отображать только те процессы, которые имеют обращение к свапу):

$ sudo bash /usr/local/src/swap_processes_checker.sh| egrep -v "Swap used: 0" |sort -n -k 5

Выход будет в килобайтах.

Вот уже готовый, упрощенный скрипт:

#!/bin/bash 

SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`
do
    PID=`echo $DIR | cut -d / -f 3`
    PROGNAME=`ps -p $PID -o comm --no-headers`
    for SWAP in `grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'`
    do
        let SUM=$SUM+$SWAP
    done
    if (( $SUM > 0 )); then
        echo "PID=$PID swapped $SUM KB ($PROGNAME)"
    fi
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "Overall swap used: $OVERALL KB"

Хочу показать отличную вариацию данного скрипта ( на мой взгляд — одно из самых лучших):

#!/bin/bash

SCRIPT_NAME=`basename $0`;
SORT="kb";                 # {pid|kB|name} as first parameter, [default: kb]
[ "$1" != "" ] && { SORT="$1"; }

[ ! -x `which mktemp` ] && { echo "ERROR: mktemp is not available!"; exit; }
MKTEMP=`which mktemp`;
TMP=`${MKTEMP} -d`;
[ ! -d "${TMP}" ] && { echo "ERROR: unable to create temp dir!"; exit; }

>${TMP}/${SCRIPT_NAME}.pid;
>${TMP}/${SCRIPT_NAME}.kb;
>${TMP}/${SCRIPT_NAME}.name;

SUM=0;
OVERALL=0;
    echo "${OVERALL}" > ${TMP}/${SCRIPT_NAME}.overal;

for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`;
do
    PID=`echo $DIR | cut -d / -f 3`
    PROGNAME=`ps -p $PID -o comm --no-headers`

    for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
    do
        let SUM=$SUM+$SWAP
    done

    if (( $SUM > 0 ));
    then
        echo -n ".";
        echo -e "${PID}\t${SUM}\t${PROGNAME}" >> ${TMP}/${SCRIPT_NAME}.pid;
        echo -e "${SUM}\t${PID}\t${PROGNAME}" >> ${TMP}/${SCRIPT_NAME}.kb;
        echo -e "${PROGNAME}\t${SUM}\t${PID}" >> ${TMP}/${SCRIPT_NAME}.name;
    fi
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "${OVERALL}" > ${TMP}/${SCRIPT_NAME}.overal;
echo;
echo "Overall swap used: ${OVERALL} kB";
echo "========================================";
case "${SORT}" in
    name )
        echo -e "name\tkB\tpid";
        echo "========================================";
        cat ${TMP}/${SCRIPT_NAME}.name|sort -r;
        ;;

    kb )
        echo -e "kB\tpid\tname";
        echo "========================================";
        cat ${TMP}/${SCRIPT_NAME}.kb|sort -rh;
        ;;

    pid | * )
        echo -e "pid\tkB\tname";
        echo "========================================";
        cat ${TMP}/${SCRIPT_NAME}.pid|sort -rh;
        ;;
esac
rm -fR "${TMP}/";

Вот еще один вариант использования:

#!/bin/bash
grep VmSwap /proc/[0-9]*/status | awk -F':' -v sort="$1" '
  {
    split($1,pid,"/") # Split first field on /
    split($3,swp," ") # Split third field on space
    cmdlinefile = "/proc/"pid[3]"/cmdline" # Build the cmdline filepath
    getline pname[pid[3]] < cmdlinefile # Get the command line from pid
    swap[pid[3]] = sprintf("%6i %s",swp[1],swp[2]) # Store the swap used (with unit to avoid rebuilding at print)
    sum+=swp[1] # Sum the swap
  }
  END {
    OFS="\t" # Change the output separator to tabulation
    print "Pid","Swap used","Command line" # Print header
    if(sort) {
      getline max_pid < "/proc/sys/kernel/pid_max"
      for(p=1;p<=max_pid;p++) {
        if(p in pname) print p,swap[p],pname[p] # print the values
      }
    } else {
      for(p in pname) { # Loop over all pids found
        print p,swap[p],pname[p] # print the values
      }
    }
    print "Total swap used:",sum # print the sum
  }'

Они все работают и их можно использовать для своих нужд. А можно использовать утилиту smem. О ней можно прочитать тут:

Установка smem для проверки RAM/SWAP активности в Unix/Linux

А на этом, у меня все! Статья «Какие процессы заняли SWAP в Unix/Linux» завершена.

 

The post Какие процессы заняли SWAP в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/kakie-protsessy-zanyali-swap-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-smem-dlya-proverki-swap-aktivnosti-v-unix-linux/ https://linux-notes.org/ustanovka-smem-dlya-proverki-swap-aktivnosti-v-unix-linux/#respond Wed, 22 Feb 2017 20:42:02 +0000 http://linux-notes.org/?p=11914 Установка smem для проверки RAM/SWAP активности в Unix/Linux Smem — утилита, которая показывает довольно много полезной информации о взаимодействии RAM, SWAP, USS, RSS по каждому процессу, процессу по пользователю. В отличие от существующих инструментов, smem может показывать пропорциональный размер памяти (PSS), который показывает более значимое представление о использовании памяти приложений и библиотек в настройках виртуальной памяти. […]

The post Установка smem для проверки RAM/SWAP активности в Unix/Linux first appeared on linux-notes.org.]]>

Установка smem для проверки RAM/SWAP активности в Unix/Linux

Smem — утилита, которая показывает довольно много полезной информации о взаимодействии RAM, SWAP, USS, RSS по каждому процессу, процессу по пользователю.

В отличие от существующих инструментов, smem может показывать пропорциональный размер памяти (PSS), который показывает более значимое представление о использовании памяти приложений и библиотек в настройках виртуальной памяти.

Установка smem для проверки RAM/SWAP активности в Unix/Linux

И так, приступим к установке данной утилиты. Я приведу пример установки для некоторых Unix/Linux ОС.

Установка smem для проверки SWAP активности в Debian/Ubuntu/Kali/Mint

Установка очень простая, просто выполните команду:

$ sudo apt-get install smem -y

Очень изи, да?)

PS: Чтобы строить графики, нужно установить:

# apt-get install python-matplotlib

Установка smem для проверки SWAP активности в RHEL/CentOS/Fedora

Для установки, используйте:

# yum install smem -y

Как-то так.

PS: Чтобы строить графики, нужно установить:

# yum install python-matplotlib python-tk -y

Установка smem для проверки SWAP активности в других Unix/Linux ОС

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

$ cd /usr/local/src && wget https://www.selenic.com/smem/download/smem-1.4.tar.gz && tar xvf smem-*tar.gz

Скопируем утилиту:

# cd smem-* && cp smem  /usr/local/bin/

Выставляем права:

# chmod +x /usr/local/bin/smem

Перейдем к использованию.

Использование smem для проверки SWAP активности в Unix/Linux

Простое использование:

# smem

Вывод:

 PID User     Command                         Swap      USS      PSS      RSS
  210 root     /sbin/agetty --noclear --ke        0      116      116      120
  218 root     /sbin/agetty --noclear tty2        0      124      124      128
79084 avahi    avahi-daemon: chroot helpe         0      100      168      236
123086 varnishlog /usr/bin/varnishncsa -a -w         0      180      208      272
122819 root     varnishncsa -a -w /var/log/        0      184      212      276
123017 varnishlog /usr/bin/varnishlog -a -w /        0      200      214      264
79298 root     /usr/sbin/atd -f                   0      220      220      236
39071 nagios   /usr/local/nagios/bin/nagio        0      268      300      536
39072 nagios   /usr/local/nagios/bin/nagio        0      272      304      540
39070 nagios   /usr/local/nagios/bin/nagio        0      276      308      544
39073 nagios   /usr/local/nagios/bin/nagio        0      276      308      544
39074 nagios   /usr/local/nagios/bin/nagio        0      276      308      544
39075 nagios   /usr/local/nagios/bin/nagio        0      276      308      544
39085 nagios   /usr/local/nagios/bin/nagio        0      268      314      372
162672 nginx    /usr/local/sbin/fcgiwrap           0      328      340      424
66064 root     /usr/lib/systemd/systemd-ud        0      392      392      396
79083 avahi    avahi-daemon: running [capt        0      348      417      568
79194 rpc      /sbin/rpcbind -w                   0      548      548      564
36783 root     /bin/sh /usr/bin/mysqld_saf        0      324      625     1564
79225 memcached /usr/bin/memcached -u memca        0      664      668      688
65954 root     /usr/sbin/crond -n                 0      708      715     1008
37204 root     /usr/sbin/sshd                     0      856      903     1340

Посмотреть какая библиотека что использует:

# smem -m


Map                                       PIDs   AVGPSS      PSS
(deleted)/etc/udev/hwdb.bin                  1        0        0
/run/systemd/journal/kernel-seqnum           1        0        0
/usr/lib64/gconv/gconv-modules.cache        44        0        0
/usr/lib64/libICE.so.6.3.0                  48        0        0
/usr/lib64/libMagickWand.so.5.0.0           48        0        0
/usr/lib64/libSM.so.6.0.1                   48        0        0
/usr/lib64/libX11-xcb.so.1.0.0              48        0        0

Посмотреть какой пользователь, что и сколько использует:

# smem -u


User     Count     Swap      USS      PSS      RSS
varnishlog     2        0      380      422      536
rpc          1        0      548      548      564
avahi        2        0      448      585      804
memcached     1        0      664      668      688
dbus         1        0      868      994     1216
nagios      13        0    25908    28958    89268
nginx        6        0    39460    44566    70816
root        17        0   115516   119300   152516
mysql        1        0   506100   506500   508244
www         42        0  1172120  1280634  5078252

Чтобы отфильтровать вывод по имени процесса, используйте «-P» или ‘—processfilter=»regex»‘ опцию:

$ sudo smem --processfilter="mysql"

  PID User     Command                         Swap      USS      PSS      RSS
36783 root     /bin/sh /usr/bin/mysqld_saf        0      324      625     1564
73198 root     python /usr/bin/smem --proc        0     7172     7239     8048
37097 mysql    /usr/sbin/mysqld --basedir=        0   508160   508560   510304

Или:

# smem -m -p | grep mysql

Чтобы показать необходимые столбцы, используйте «-c» или «—columns» опцию:

$ sudo smem -c "name user pss rss"

Есть много вариантов вызовов smem, например — для просмотра потребления памяти в системе, выполните следующую команду:

# smem -w

Показать отчет об использованной памяти в процентах:

$ sudo smem -p

Опция «-t» покажет общее количество задействованой памяти:

$ sudo smem -t

Комбинированный вывод:

# smem -t -p


 PID User     Command                         Swap      USS      PSS      RSS 
 3245 root     /usr/sbin/rpc.idmapd           0.02%    0.00%    0.00%    0.13% 
 3111 root     /usr/sbin/vmware-vmblock-fu    0.06%    0.00%    0.00%    0.13% 
 3231 statd    /sbin/rpc.statd                0.06%    0.00%    0.01%    0.22% 
 3255 daemon   /usr/sbin/atd -f               0.02%    0.00%    0.01%    0.18% 
 3286 root     /usr/sbin/acpid                0.01%    0.01%    0.01%    0.15% 
 3301 root     /usr/sbin/minissdpd -i 0.0.    0.01%    0.01%    0.01%    0.11% 
 3222 root     /sbin/rpcbind -w               0.04%    0.01%    0.01%    0.22% 
 3266 avahi    avahi-daemon: chroot helpe     0.02%    0.00%    0.01%    0.13% 
 3254 root     /usr/sbin/cron -f              0.02%    0.01%    0.02%    0.25% 
 4102 captain  /bin/cat                       0.00%    0.01%    0.02%    0.17% 
 4375 captain  gnome-pty-helper               0.00%    0.02%    0.02%    0.17% 
 3338 root     /sbin/agetty --noclear tty1    0.00%    0.02%    0.02%    0.18% 
 3154 root     /usr/lib/vmware-vgauth/VGAu    0.33%    0.00%    0.02%    0.41% 
 3960 captain  /bin/sh /usr/bin/start-puls    0.00%    0.02%    0.02%    0.10% 
 3769 rtkit    /usr/lib/rtkit/rtkit-daemon    0.00%    0.03%    0.03%    0.24% 
 3902 captain  /usr/bin/dbus-launch --exit    0.00%    0.03%    0.03%    0.18% 
 3961 captain  /usr/bin/xprop -root -spy      0.00%    0.03%    0.03%    0.22% 
 3899 captain  /usr/bin/ssh-agent /usr/bin    0.00%    0.04%    0.04%    0.08% 
 3284 root     /usr/sbin/cups-browsed         0.07%    0.02%    0.04%    0.52% 
 3258 avahi    avahi-daemon: running [debi    0.01%    0.03%    0.05%    0.27% 
 3622 root     tpvmlpd2                       0.00%    0.04%    0.05%    0.29% 
 3275 root     /lib/systemd/systemd-logind    0.02%    0.06%    0.06%    0.27% 
 5787 captain  /usr/lib/dconf/dconf-servic    0.00%    0.06%    0.06%    0.45% 
 3910 captain  /usr/bin/dbus-daemon --conf    0.00%    0.05%    0.06%    0.34% 
 4386 root     su -                           0.00%    0.04%    0.07%    0.34% 

Более того, есть опции для вывода информации в графическом моде. Вы можете произвести гистограмму процессов и их PSS и RSS значений. Например, покажем гистограмму процессов, находящихся в использовании root пользователя.

Вертикальная плоскость показывает PSS и RSS измерение процессов и горизонтальная плоскость представляет каждый пользовательский процесс:

$ sudo smem --userfilter="root" --bar pid -c"pss rss"

И получим:

smem в графическом использовании

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

Опция «—pie» назначает имя диаграмы и «-s»  опция помогает сортировать по PSS значению:

$ sudo smem --userfilter="root" --pie name -s pss

Для получения полного списка команд, используйте:

# smem --help

Или:

# smem -h

Довольно простая утилита для проверки swap активности в Unix/Linux.

The post Установка smem для проверки RAM/SWAP активности в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-smem-dlya-proverki-swap-aktivnosti-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-ps_mem-dlya-proverki-zanyatoj-pamyati-protsessami-v-unix-linux/ https://linux-notes.org/ustanovka-ps_mem-dlya-proverki-zanyatoj-pamyati-protsessami-v-unix-linux/#respond Sun, 19 Feb 2017 01:04:59 +0000 http://linux-notes.org/?p=9215 Установка ps_mem для проверки занятой памяти процессами в Unix/Linux При настройке php-fpm, nginx, apache нужно знать сколько памяти используется. И с ps_mem утилитой, можно узнать некоторую полезную информацию (какое количество памяти занято процессами). Тулза написанная на Python. Установка ps_mem для проверки занятой памяти процессами в Unix/Linux Расскажу как можно установить данную утилиту на различные Unix/Linux ОС. Установка […]

The post Установка ps_mem для проверки занятой памяти процессами в Unix/Linux first appeared on linux-notes.org.]]>

Установка ps_mem для проверки занятой памяти процессами в Unix/Linux

При настройке php-fpm, nginx, apache нужно знать сколько памяти используется. И с ps_mem утилитой, можно узнать некоторую полезную информацию (какое количество памяти занято процессами). Тулза написанная на Python.

Установка ps_mem для проверки занятой памяти процессами в Unix/Linux

Расскажу как можно установить данную утилиту на различные Unix/Linux ОС.

Установка ps_mem для проверки занятой памяти процессами в CentOS/Fedora/RedHat

Установка очень простая:

# yum install ps_mem -y

Установка ps_mem для проверки занятой памяти процессами в других Unix/Linux ОС

Выполняем:

# cd /usr/local/src && wget http://linux-notes.org/wp-content/uploads/python/ps_mem.py && mv ps_mem.py /usr/local/sbin/ps_mem && chmod 755 /usr/local/sbin/ps_mem

Или через «pip» установщик:

# pip install ps_mem

Использование ps_mem для проверки занятой памяти процессами в Unix/Linux

Некоторые полезные опции:

  • -w N – Ключ позволяет запустить  утилиту через N секунд;
  • -p – Ключ позволяет выводить информацию только по указанном PID-у (можно использовать несколько PID-ов, но использую разделитель — запятая);
  • -s – Ключ который позволяет выводить команду полностью, а не только имя процесса.

Мне хватает запуска:

# ps_mem 
 Private  +   Shared  =  RAM used	Program 

200.0 KiB +  36.0 KiB = 236.0 KiB	varnishlog
220.0 KiB +  31.0 KiB = 251.0 KiB	atd
240.0 KiB +  24.0 KiB = 264.0 KiB	agetty (2)
328.0 KiB +  63.0 KiB = 391.0 KiB	fcgiwrap
392.0 KiB +  39.5 KiB = 431.5 KiB	systemd-udevd
364.0 KiB + 100.0 KiB = 464.0 KiB	varnishncsa (2)
548.0 KiB +  69.0 KiB = 617.0 KiB	rpcbind
448.0 KiB + 201.0 KiB = 649.0 KiB	avahi-daemon (2)
328.0 KiB + 337.0 KiB = 665.0 KiB	mysqld_safe
664.0 KiB +  41.0 KiB = 705.0 KiB	memcached
712.0 KiB +  35.5 KiB = 747.5 KiB	crond
780.0 KiB + 346.5 KiB =   1.1 MiB	bash
  1.0 MiB + 157.0 KiB =   1.2 MiB	dbus-daemon
  1.2 MiB + 152.5 KiB =   1.4 MiB	systemd-logind
  2.3 MiB +  76.5 KiB =   2.4 MiB	systemd
  2.1 MiB + 662.0 KiB =   2.8 MiB	sshd (2)
 10.2 MiB +   3.7 MiB =  13.9 MiB	systemd-journald
 16.2 MiB + 527.5 KiB =  16.8 MiB	nagios (8)
 32.0 MiB +   5.8 MiB =  37.9 MiB	nginx (6)
 82.3 MiB + 299.0 KiB =  82.6 MiB	snmpd
180.5 MiB + 421.5 KiB = 180.9 MiB	mysqld
894.0 MiB + 107.9 MiB =   1.0 GiB	php-fpm (41)
---------------------------------
                          1.3 GiB
=================================

Утилита очень помогает при настройке php-fpm, apache, nginx. У меня все, статья «Установка ps_mem для проверки занятой памяти процессами в Unix/Linux» завершена.

The post Установка ps_mem для проверки занятой памяти процессами в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-ps_mem-dlya-proverki-zanyatoj-pamyati-protsessami-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/primery-ispol-zovaniya-openssl-v-unix-linux/ https://linux-notes.org/primery-ispol-zovaniya-openssl-v-unix-linux/#respond Sun, 20 Nov 2016 10:44:38 +0000 http://linux-notes.org/?p=9560 Примеры использования OpenSSL в Unix/Linux При работе с SSL, нужно уметь работать с утилитой OpenSSL чтобы создавать, конвертировать, управляют SSL-сертификатами. В этой статье «Примеры использования OpenSSL в Unix/Linux» я буду говорить о примерах использования OpenSSL. Некоторые из сокращений, связанных с сертификатами: SSL – Secure Socket Layer (Безопасный уровень сокета). CSR – Certificate Signing Request (Запрос […]

The post Примеры использования OpenSSL в Unix/Linux first appeared on linux-notes.org.]]>

Примеры использования OpenSSL в Unix/Linux

При работе с SSL, нужно уметь работать с утилитой OpenSSL чтобы создавать, конвертировать, управляют SSL-сертификатами. В этой статье «Примеры использования OpenSSL в Unix/Linux» я буду говорить о примерах использования OpenSSL.

Некоторые из сокращений, связанных с сертификатами:

  • SSL – Secure Socket Layer (Безопасный уровень сокета).
  • CSR – Certificate Signing Request (Запрос на подпись сертификата).
  • TLS – Transport Layer Security (Транспортный уровень безопастности).
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm (Безопасный hash алгорит).
  • PKCS – Public-Key Cryptography Standards (Стандарты шифрования публичных ключей).

Создание нового приватного ключа (Private Key) и Certificate Signing Request (CSR).

Выполняем команду:

# openssl req -out linux-notes.org.csr -newkey rsa:2048 -nodes -keyout linux-notes.org.key

Команда выше будет генерировать CSR и 2048-битный RSA ключ. Если вы собираетесь использовать этот сертификат в Apache или Nginx, то вам необходимо отправить этот CSR файл в службу сертификации и они дадут вам подписанный сертификат в «der» или «pem» формате. После чего вы настроите его на веб-сервере Apache или Nginx.

Так же, можно использовать такой вариант:

$ openssl req -new -newkey rsa:2048 -nodes -out linux-notes.org.csr -keyout linux-notes.org.key -subj "/C=US/ST=Wisconsin/L=Waukesha/O=IT Dept/OU=Linux Notes/CN=linux-notes.org"

Создание самоподписанного сертификата (Self-Signed Certificate).

Выполняем команду:

# openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout LN-selfsigned.key -out LN-cert.pem

Команда выше будет генерировать самоподписанный сертификат (self-signed) и 2048-битный RSA ключ. Я также использую алгорит шифрования — SHA256. Так как он считается наиболее безопасным в данный момент.

Замечание: По умолчанию, будет сгенерирован ключ толкьо на 1 месяц, если нужно создать на более длительное время — используйте опцию «–days», пример использования ниже.

Пример: Чтобы создать self-signed сертификат на 2 год, используйте:

# openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout LN-selfsigned.key -out LN-cert.pem

Проверка CSR файла.

Выполням проверку:

# openssl req -noout -text -in linux-notes.org.csr

и вы получите информацию.

Проверка подписи (signature):

$ openssl req -in linux-notes.org.csr -noout -verify

Кем(кому) был выдан сертификат:

$ openssl req -inlinux-notes.org.csr -noout -subject

Показать открытый ключ (public key):

$ openssl req -inlinux-notes.org.csr -noout -pubkey

Создать приватный RSA  ключ (Private Key).

Чтобы это сделать, выполните:

# openssl genrsa -out my_private_rsa.key 2048

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

Удалить ключевую фразу (Passphrase) с ключа.

# openssl rsa -in linux-notes.org.key -check -out nopassphrase.key

Если вы установили ключевую фразу для ключа, то при каждом старте веб-сервера (Apache/Nginx) вы должны будите вводить пароль. Если это вас злит, вы можете с легкостью удалить  passphrase с RSA ключа.

Проверка приватного ключа (Private Key)

# openssl rsa -in my_private.key -check

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

Проверка сертификата (Certificate).

Если вы хотите проверить данные сертификата( CN, OU, и т.д.), то вы можете использовать команду, которая даст вам сведения о сертификате:

# openssl x509 -in certfile.pem -text –noout

Команда довольна простая в использовании.

Проверка подписанного сертификата (Certificate Signer Authority).

# openssl x509 -in some_cert.pem -noout -issuer -issuer_hash

Можно узнать много полезного.

Создать тестовый SSL сервер.

Команда OpenSSL s_server реализует общий SSL/TLS-сервер. Она должна использоваться только для целей тестирования. В приведенном ниже примере данный сервер прослушивает соединения на порту 8080 и возвращает отформатированную HTML страницу статуса, который включает много информации о ciphers:

$ openssl s_server -key key.pem -cert cert.pem -accept 8080 -www

Проверить хеш вашего сертификата.

# openssl x509 -noout -hash -in my_cert.pem

Конвертирование сертификатов с DER в PEM формат.

# openssl x509 -inform der -in LN.der -out LN.pem

Как правило, при покупке SSL сертификатов, его отдают вам в формате .der и если вам нужно использовать его в веб-сервере или .pem формате, вы можете использовать команду выше, чтобы преобразовать такие сертификаты.

Конвертирование сертификатов с PEM в DER формат.

В случае, если вам необходимо изменить .pem формат в .der:

# openssl x509 -outform der -in linux-notes.pem -out linux-notes.der

Конвертирование CSR c DER в PEM формат.

$ openssl req -in csr.der -inform DER -out csr.pem -outform PEM

Конвертирование сертификата и приватного ключа  в PKCS#12 фотмат.

# openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Если вам необходимо использовать сертификат с приложением Java или с любым другим, кто принимает формат PKCS# 12.

Совет: Вы можете включить «chain certificate» используя «-chain» опцию:

# openssl pkcs12 -export -out my_cert.pfx -inkey my_key.pem -in your_cert.pem -chain the_cert.pem

Создание CSR используя  приватный ключ (private key).

# openssl req -out some_cert.csr -key exists.key -new

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

Проверьте содержимое сертификата в PKCS12 формате.

# openssl pkcs12 -info -nodes -in my_certificate.p12

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

Конвертирование PKCS12 формата в PEM сертификат.

# openssl pkcs12 -in my_certificat.p12 -out the_certificat.pem

Получить SHA-1 отпечаток сертификата или CSR

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

$ openssl dgst -sha1 my_cert.der

Чтобы получить SHA1 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

$ openssl dgst -sha1 the_csr.der

Получить MD5 отпечаток сертификата или CSR

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

$ openssl dgst -md5 cert.der

Чтобы получить MD5 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

$ openssl dgst -md5 my_csr.der

Тестирование SSL сертификата по URL.

# openssl s_client -connect linux-notes.org:443 -showcerts

Я использую это довольно часто для проверки SSL-сертификатов по URL с сервера. Это очень удобно для проверки некоторых деталей протокола, шифров и CERT.

Узнать версию OpenSSL

 # openssl version

Поверка PEM сертификата на завершение (Expiration Date).

# openssl x509 -noout -in cert.pem -dates

Пример:

# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT

Проверка завершения SSL сертификата (Expiration Date) по URL.

# openssl s_client -connect linux-notes.org:443 2>/dev/null | openssl x509 -noout -enddate

Проверить поддержку SSL версии V2/V3  по URL.

Проверка SSL версии V2:

# openssl s_client -connect linux-notes.org:443 -ssl2

Проверка SSL версии V3:

# openssl s_client -connect linux-notes.org:443 -ssl3

Проверка TLS 1.0:

# openssl s_client -connect linux-notes.org:443 -tls1

Проверка TLS 1.1:

# openssl s_client -connect linux-notes.org:443 -tls1_1

Проверка TLS 1.2:

# openssl s_client -connect linux-notes.org:443 -tls1_2

Проверка поддержки cipher для сайта по URL.

# openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect linux-notes.org:443

Какой алгоритм используется в сертификате (проверка).

$ openssl req -noout -text -in mycert.csr | grep 'Signature Algorithm'

Или, используя URL:

openssl s_client -connect linux-notes.org:443 < /dev/null 2>/dev/null | openssl x509 -text -in /dev/stdin | grep "Signature Algorithm"

Получить сертификат по URL

Команда что ниже, сохранит сертификат в файл прямо по URL сайта:

$ echo -n | openssl s_client -connect linux-notes.org:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > pem.cert

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

$ echo -n | openssl s_client -connect linux-notes.org:443 -servername linux-notes.org | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > pem.cert

Вот и все, много полезностей и все в одной статье «Примеры использования OpenSSL в Unix/Linux».

The post Примеры использования OpenSSL в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/primery-ispol-zovaniya-openssl-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/skonvertirovat-openssh-v-ssh2-i-naoborot-v-unix-linux/ https://linux-notes.org/skonvertirovat-openssh-v-ssh2-i-naoborot-v-unix-linux/#respond Sun, 13 Sep 2015 18:21:29 +0000 http://linux-notes.org/?p=8036 Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux Программа SSH (Secure Shell) обеспечивает зашифрованный канал для подключения на другой компьютер через сеть, выполнение команд на удаленном компьютере, а так же перемещение файлов с одного компьютера на другой. SSH обеспечивает хорошую аутентификацию для пользователей, а также защищённую коммуникацию через Интернет. SSH2 является более безопасной, эффективной и портативной версией в SSH. В […]

The post Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux first appeared on linux-notes.org.]]>

Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux

Программа SSH (Secure Shell) обеспечивает зашифрованный канал для подключения на другой компьютер через сеть, выполнение команд на удаленном компьютере, а так же перемещение файлов с одного компьютера на другой. SSH обеспечивает хорошую аутентификацию для пользователей, а также защищённую коммуникацию через Интернет.

SSH2 является более безопасной, эффективной и портативной версией в SSH. В этой статье «Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux» я расскажу как можно сконвертировать ключи SSH (OpenSSH) в SSH2 и наоборот.

Создать SSHv1 ключ через OpenSSH.

Для этого нужно перейти в домашнюю папку с пользователем и выполнить команду, например:

# cd /home/captain/.ssh && ssh-keygen

После выполнения данной команды, получим зашифрованный, закрытый ключ (так называемый id_rsa) и открытый ключ id_rsa.pub в папке /home/captain/.ssh

Вы можете сгенерировать ключ DSA с помощью команды:

# ssh-keygen -t dsa

Сконвертировать OpenSSH в SSH 

Приведенная ниже команда может быть использована для преобразования закрытого ключа SSH2 в формате OpenSSH:

# ssh-keygen -i -f path/to/private.key > path/to/new/opensshprivate.key

Приведенная ниже команда может быть использована для преобразования открытого ключ SSH2 в формате OpenSSH:

# ssh-keygen -i -f path/to/publicsshkey.pub > path/to/publickey.pub

Параметр  «-i» в SSH нужен для чтения и конвертирования SSH2 ключа в формате OpenSSH.

Сконвертировать OpenSSH в SSH2 

Обратный процесс для преобразования ключа OpenSSH в формате SSH2 может быть сделано с помощью следующей команды.

Преобразование закрытого ключа SSH2:

# ssh-keygen -e -f path/to/opensshprivate.key > path/to/ssh2privatekey/ssh2privatekey

Преобразование открытого ключа SSH2:

# ssh-keygen -e -f path/to/publickey.pub > path/to/ssh2privatekey/ssh2publickey.pub

Параметр  «-e» в SSH нужен для чтения и конвертирования SSH ключа в SSH2 в формате OpenSSH.

Примечание: Если вам нужно беспарольную аутентификацию b/w двух разных хостов, необходимо преобразовать PublicKey в соответствии с сервером и добавить публичный ключ в  ~/.ssh/authorized_keys или ~/.ssh2/authorized_keys на сервере.

The post Сконвертировать OpenSSH в SSH2 и наоборот в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/skonvertirovat-openssh-v-ssh2-i-naoborot-v-unix-linux/feed/ 0