Sysstat мониторинг производительности системы

sysstat — удобная утилита для измерения и анализа производительности системы. Можно получить доступ к системным характеристикам (загруженность процессора, i/o wait, использование памяти и прочее) указав в качестве параметра временной интервал, например статистику за последний день можно получить так.

sar -u
Linux 2.6.32-5-686 (debian.server)    21.11.2013      _i686_  (1 CPU)
13:05:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
13:15:01        all      1,55      0,00      0,46      0,62      0,00     97,36
13:25:01        all      1,30      0,00      0,45      0,45      0,00     97,80
13:35:01        all      2,98      0,00      0,58      0,69      0,00     95,75
13:45:01        all      1,78      0,00      0,50      0,65      0,00     97,07
13:55:01        all      1,23      0,00      0,46      0,53      0,00     97,78
14:05:01        all      3,24      0,00      3,36      1,59      0,00     91,81
14:15:01        all      1,83      0,00      0,51      0,74      0,00     96,92
Среднее:        all      1,99      0,00      0,90      0,75      0,00     96,36

Читать далее Sysstat мониторинг производительности системы

Команды LVM

Команды LVM

  1. Инициализация
    vgscan
  2. Посмотреть состояние физического тома в LVM
    pvdisplay /dev/sda1
  3. Ативация всех найденных томов
    vgchange -ay
  4. Деактивация группы томов
    vgchange -a n 
  5. Просмотреть состояние группы томов.
    vgdisplay 
  6. Читать далее Команды LVM

Работа с пакетными менеджерами yum и rpm

  1. Установить пакет
    yum install 

    Установить локальный пакет без проверки GPG

    yum install --nogpgcheck .rpm
    yum localinstall --nogpgcheck .rpm

    Установить пакет с помощью rpm

    rpm -ivh 
  2. Удалить пакет
    yum remove 

    Удалить с помощью rpm

    rpm -e 
  3. Обновление пакетов
    yum update 

    Обновление пакета, начинающегося с pkg

    yum update pkg\*

    Обновление системы

    yum update

    Читать далее Работа с пакетными менеджерами yum и rpm

Часто используемые команды MySQL

  1. Создать базу данных с кодировкой utf8
    CREATE DATABASE IF NOT EXISTS `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. Список БД
    SHOW DATABASES;
  3. Узнать кодировку БД
    SHOW CREATE DATABASE 
  4. Выбрать БД
    USE ;
  5. Создать таблицу table-name с первичным ключом id
    CREATE TABLE table-name
        (id SMALLINT,
         name VARCHAR(30),
         CONSTRAINT pk_table-name PRIMARY KEY (id)
        );
         
  6. Просмотр таблиц
    SHOW TABLES FROM ;
  7. Список столбцов MySQL
    describe ;
  8. Добавить данные в таблицу MySQL
    INSERT INTO <table_name> (<col1_name>, <col2_name>)
    VALUES ('VALUE1', 'VALUE2')
  9. Изменить значения столбцов в таблице MySQL
    UPDATE <table_name>
    SET <col1> = 'VALUE2'
    WHERE <col2> = 'VALUE1';
  10. Просмотр значения столбцов
    SELECT  FROM  WHERE  = 'VALUE';
  11. Просмотр индексов
    SHOW INDEX FROM ;
  12. Добавить пользователей MySQL
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
        ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
            -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
    mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
    mysql> GRANT USAGE ON *.* TO dummy@localhost;
    

    monty
    Полноценный суперпользователь — он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@»%». Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
    admin
    Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
    dummy
    Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение ‘N’-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.

  13. Пользователи
    DESC mysql.user;
    SELECT host, user, password FROM mysql.user;
  14. Просмотр привилегий пользователей
    SHOW GRANTS FOR @;
    SHOW GRANTS;
    SHOW GRANTS FOR CURRENT_USER;
    SHOW GRANTS FOR CURRENT_USER();
  15. Просмотр прав пользователя на конкретную БД
    SELECT user,host FROM mysql.db WHERE `db` = 'some_database';
    
  16. Значения системных переменных
    SHOW VARIABLES;
  17. Статистика по MySQL процессам
    SHOW [FULL] PROCESSLIST;
  18. Общая статистика
    SHOW STATUS;
  19. Статистика по всем таблицам в бд
    SHOW TABLE STATUS [FROM db_name];
  20. Удалить таблицу
    DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE]
  21. Удалить БД
    DROP DATABASE [IF EXISTS] db_name
  22. Удалить строку
    DELETE [LOW_PRIORITY | QUICK] FROM table_name
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
  23. Обновить столбец
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
        [ORDER BY ...]
        [LIMIT rows]
    или
    UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
        SET col_name1=expr1 [, col_name2=expr2 ...]
        [WHERE where_definition]
  24. Изменить пароль root
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
  25. Сделать дамп БД
    mysqldump -uroot -p  > db.sql
  26. Развернуть дамп БД
    mysql -uroot -p  < db.sql
  27. Просмотреть информация от таблицах INNODB
    SHOW ENGINE INNODB STATUS\G
  28. Полезная информация
    SHOW PROCESSLIST;
    SHOW GLOBAL STATUS;

iptables DNAT Проброс порта за NAT

Для проброса порта сервера, находящегося за NAT средствами iptables

iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination $LOCAL_IP:$PORT2
iptables -A FORWARD -i eth0 -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT

Смотрим

iptables -t nat -L -v -b
iptables -L -v -n

Комнады iptables

  1. Прохождение цепочек iptables для транзитныхпакетов
    Таблица Цепочка Назначение
    mangle PREROUTING Внесение изменений в заголовок пакета, TOS, TTL, MARK
    nat PREROUTING DNAT, фильтрацию здесь не делать
    Принятие решения о дальнейшей маршрутизации
    mangle FORWARD Использовать только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации
    Filter FORWARD В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации.
    mangle POSTROUTING Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.
    nat POSTROUTING Цепочка предназначена для SNAT и Masquerading
  2. Прохождение цепочек iptables для локальных пакетов
    mangle PREROUTING Внесение изменений в заголовок пакета, например для изменения битов TOS
    nat PREROUTING DNAT, не для фильтрации пакетов
    Принятие решения о маршрутизации
    mangle INPUT Здесь вносятся изменения в заголовок пакета перед тем как он будет передан локальному приложению
    filter INPUT Здесь осуществляется фильтрация
  3. Прохождение цепочек iptables от локальных пакетов
    mangle OUTPUT Здесь производится внесение изменений в заголовок пакета. Выполнение фильтрации в этой цепочке может иметь негативные последствия.
    nat OUTPUT Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра.
    Filter OUTPUT Здесь фильтруется исходящий трафик.
    mangle POSTROUTING Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра.
    nat POSTROUTING Используется для SNAT, фильтрацию производить не стоит, однако можно останвливать DROP
  4. Команды iptables
    • -A, —append — добавить новое правило в конец цепочки
    • -D, —delete — удалить правило
      iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1
    • -R, —replace — перезаписать одно павило другим
      iptables -R INPUT 1 -s 192.168.0.1 -j DROP
    • -I, —insert — вставляет правило
      ptables -I INPUT 1 --dport 80 -j ACCEPT
    • -L, —list — вывод списка правил в заданной цепочке
      iptables -L INPUT
    • -F, —fush — сброс всех правли в цепочке
      iptables -F INPUT
    • Сохранить правила iptables
      iptables-save > /etc/iptables.rules
    • Восставновить правила iptables
      pre-up iptables-restore < /etc/iptables.rules
    • Нумерованый список правил iptables
      iptables -L --line-numbers

Оригинал статьи тут.

Открытые порты Linux

  1. Список открытых портов
    netstat -lnp

    netstat -pant | grep LISTEN

    lsof -i

    lsof -i tcp

  2. lsof -i :25
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    master  2787 root   12u  IPv4   4932      0t0  TCP *:smtp (LISTEN)
    master  2787 root   13u  IPv6   4934      0t0  TCP *:smtp (LISTEN)
  3. Все сетевые действия пользователя
    lsof -a -u username -i

  4. Убить процесс по номеру порта
    fuser -k 80/tcp

Информация о системе

    lsb_release -a
  1. Архитектура ОС
    uname -m
  2. Вся информация о ядре
    uname -a
  3. Количество свободной оперативной памяти в МБ
    free -m
  4. Вывести характеристики жесткого диска
    hdparm -i /dev/sda
  5. Тест производительности жесткого диска
    hdparm -tT /dev/sda
  6. Информация о процессоре
    cat /proc/cpuinfo
  7. Показать статистику по сетевым интерфейсам
    cat /proc/net/dev
  8. PCI устройства
    lspci -tv
  9. USB устройства
    lsusb -tv
  10. Информация о состоянии Raid массива
    cat /proc/mdstat
  11. Системная дата
    date
  12. Список процессов, которые запустили не вы
    ps aux | grep -v `whoami`
  13. Список из 10 процессов, которые запустили не вы и которые сильнее всего нагружают процессор
    ps aux --sort=-%cpu | grep -m 11 -v `whoami`
  14. Убить все процессы пользователя
    pkill -u <user_name>
    killall -u <user_name>
  15. Посмотреть кто в системе
    who
  16. Лимиты пользователя
    ulimit -a
  17. Настройки ядра
    sysctl -a
  18. Лимит на максимальное количество открытых файлов
    sysctl fs.file-max
  19. Активировать для ранлевела по умолчанию
    update-rc.d sshd defaults
  20. Как сбросить пароль root linux
    Во время загрузки grub выбираем следующую опцию

    init=/bin/sh

    Если / загрузится «только для чтения», его необходимо перемонтировать

    mount -o remount,rw /
    passwd
    sync; mount -o remount,ro /
    reboot
  21. Список загруженных модулей ядра
    lsmod
  22. Загрузить модуль ядра
    modprobe 
  23. Синхронизация времени
    ntpdate ntp.blueyonder.co.uk
  24. Список пользователей
    cat /etc/passwd | awk "/bash/{print}"
  25. Подписать ключ
    $ gpg --recv-keys 64481591B98321F9
    $ gpg --armor --export 64481591B98321F9 | sudo apt-key add -

Работа с файловой системой Linux

  1. Рекурсивное копирование с сохранением прав
    cp -Rp <что> <куда>
  2. Рекурсивно поменять права на каталоги. Эта команда рекурсивно пройдется по текущему каталогу и всем его подкаталогам и изменит права на 755 только у каталогов
    find . -type d -exec chmod 755 {} \;
  3. Рекурсивно поменять права на файлы
    find . -type f -exec chmod 644 {} \;
  4. Рекурсивный поиск всех файлов с расширениями .py .js .xml .csv и подсчет количества строк в них
    find . -type f \( -name "*.py" -o -name "*.csv" -o -name "*.xml" -o -name "*.js" \) -exec cat {} + | wc -l
  5. Полная информация о разделе
    tune2fs -l /dev/sda1
  6. Принудительная проверка диска. Произойдет после перезагрузки
    touch /forcefsck
  7. Перечитать таблицу разделов
    partprobe
  8. Скопировать таблицу разделов с одного диска на другой
    sfdisk -d /dev/sda | sfdisk /dev/sdb
    dd if=/dev/sda of=/dev/sdb bs=512 count=1
  9. Размер примонтированной файловой системы
    df -h
  10. Информация об инодах файловой системы
    df -i
  11. Размер папки
    du -shc
    du -h
  12. Поиск самых больших файлов
    ls -lSh
    ls -lSh *.cfg
  13. Поиск самых больших папок
    du -kx | egrep -v "\./.+/" | sort -nr
  14. Поиск измененных сегодня файлов
    ls -al --time-style=+%D | grep `date +%D`
  15. Перейти в домашнюю директорию пользователя user
    cd ~user
  16. Показать файлы и директории, содержащие в имени цифры
    ls *[0-9]*
  17. Показать лерево файлов
    tree
  18. Рекурсивное созадние директорий
    mkdir -p ~/dir1/dir2/dir3
  19. Создать символическую ссылку на файл
    ln -s filename lnk
  20. Создать жесткую ссылку на файл
    ln filename lnk
  21. Список всех открытых файлов
    lsof
  22. Кто использует файл
    lsof /path/to/fie
  23. Рекурсивный поиск всех открытых файлов
    lsof +D /usr/lib
  24. Список всех файлов, открытых пользователем
    lsof -u username
  25. Все файлы, открытые программой
    lsof -c nginx
  26. Узнать кто использует партицию
    fuser -v /mnt/
  27. Принудительное отключение занятых устройств
    fuser -km /mnt/disk1
  28. Найти все файлы с битами SUID и SGID
    find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -l {} \;
  29. Рекурсивная смена прав на файлы
    find /path/to/folder/ -type f -exec chmod 644 {} \;
  30. Рекурсивная смена прав на папки
    find /path/to/folder/ -type d -exec chmod 755 {} \;