Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

открытые файлы \ использование ресурсов \ lsof \ fuser

lsof | less - отображает процессы, не позволяющие закрыть файлы и каталоги

lsof -c bash - отображает файлы используемые консолью bash
lsof -c ssh - (Список подключений по ssh)
lsof -d cwd - выводит каталоги, открытые как текущие рабочие каталоги
lsof -u user - выводит каталоги открытые пользователем user

lsof /mnt/sda1 - выводит все открытые элементы файловой системы /mnt/sda1
lsof +d /mnt/sda1/dx - отображает все открытые элементы, хранящиеся в /mnt/sda1/dx
lsof /home  - список процессов имеющих доступ к /home
lsof /var/log/Xorg.0.log - найти кто использует  файла
lsof /dev/hd4 - (Список открытых файлов на устройстве /dev/hd4)
lsof /dev/cdrom - (Список процессов, работающих с CD ROM)

lsof -i  - покажет сетевые подключения
lsof -i tcp:80 - (просмотр информации о процессе, который прослушивает 80 TCP порт)
lsof -i tcp:143
lsof -i tcp:110
lsof -i tcp:3128
lsof -i tcp:443
lsof -i udp - информация кто использует UDP 
lsof -i :22 - информация кто использует 22 порт



lsof -p 3324 - найти по PID процесса
lsof -i 4 -a -p 1234 - (просмотр всех соединений IPv4, открытых процессом с PID = 1234)
lsof -i -n | grep ESTABLISHED
lsof -i -n | grep -i established
lsof -i -n | grep -i list


fuser -m /home - список процессов имеющих доступ к /home

ps ax | grep Xorg | awk '{print $1}' - найти PID приложения
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

отображает статистику использования процессора \ диска \ памяти \ iostat

apt-get install sysstat - пакет программ таких как iostat, sar и т.д.

iostat -c 3 - отображает статистику использования процессора (каждык 3 сек)
iostat -с 3 - avg-cpu %user 99% - запуск приложения / iowait 89% - копирование файлов
iostat -c -t - отображает статистику и добавляет время в отчет
iostat -c -t 2 - выводит статистику и обновляется каждые две сек в течении 20 сек
iostat 3 - проверяет скорость чтения/записи на диск

dstat -t -c 3 - отображает непрерывно использование ЦП (обновляет каждые 3 сек)

iostat -d -w5 — показывать информацию по дискам, с периодичностью в пять секунд безостановочно
iostat -dx -w5 — показывает расширенную статистику
iostat -dx /dev/vda 5 — показывает расширенную статистику

Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

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

vmstat 3 - статистика использования виртуальной памяти
vmstat -S m - статистика использования виртуальной памяти вывод в мегабайтах (1000 Кбайт)
vmstat -S M - статистика использования виртуальной памяти вывод в мегабайтах (1024 Кбайт)
vmstat -S k - статистика использования виртуальной памяти вывод в килобайтах (1000 байт)
vmstat -S K - статистика использования виртуальной памяти вывод в килобайтах (1024 байт)
vmstat -n 2 10 - статистика использования виртуальной памяти (обновляется каждые 2 сек в течении 20 сек)
vmstat -s | less - отображает счетчик кол-ва событий и статистику использования оперативной оперативной памяти 
vmstat -S M -s | less - отображает статистику в мегабайтах
vmstat -m | less - отображает информацию о кэш-памяти ядра
vmstat -d - отображает данные о чтении с диска, записи на него
vmstat -p sda1 - отображает статистику чтения/записи для sda1
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

использование памяти \ free

free - - отображает объем использования памяти в гигабайтах
free -s 5 - непрерывно показывает объем используемой оперативной памяти (интервал 5 сек)
free -t - отобразит занятую память и сколько ее всего
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

процессы \ загрузка CPU \ MEM \ ps

ps - отображает процессы текущего пользователя
ps -u chris - отображает процессы пользователя chris
ps -u chris u - отображает процессы пользователя chris с учетом CPU/MEM
ps -fu chris - отображает процессы пользователя chris с учетом PPID
ps -Fu chris - отображает все процессы, запущенные пользователем chris  с учетом SZ и PSR
ps -e - отображает каждый выполняемый процесс
ps -el - отображает более подробную информацию о каждом выполняемом процессе
ps -ef - выводит полную информацию о каждом выполняемом процессе
ps -eF - отображает расширенную информацию о каждом выполняемом процессе
ps aux - отображает информацию о каждом выполняемом процессе в полном стиле BSD
ps auwx - отображает информацию о каждом выполняемом процессе в полном стиле BSD +
ps auwwx - отображает информацию о каждом выполняемом процессе в полном стиле BSD ++
ps -ejH - отображает процессы в иерархическом порядке на основании ID процессов или сессий
ps -C httpd - отображает запущенные httpd-процессы
ps -p 5431 -o pid,ppid,bsdtime,args - отображает информацию о процессе с PID 5431
ps -U root,chris -o pid,ruser,tty,stats,args - отображает информацию о процессах пользователей root и chris
ps -p 'pgrep metacity' - выполнит поиск процесса metacity, а после выполнит команду ps -p '*'
ps -fp $(pgrep nautilus) - выполнит поиск процесса nautilus, а после выполнит  ps -fp "*"


ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

приоритет процессов \ nice \ renice

renice -5 $(pgrep firefox) - выполняет поиск процесса firefox и повышает приоритет команды
nice -n -10 gimp - повышает приоритет команды gimp
renice +2 -u user1 - увеличивает значение nice процессов пользователя на 2
renice +5 4737 - увеличивает значение nice процессов пользователя PID 4737 на 5
renice -3 'pgrep -u root spamd' - понижает значение процессов spamd пользователя root на 3
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

отобразить работающие процессы \ pgrep

pgrep init - отображает ID всех процессов содержащих "init"
pgrep -l init - отобразит PID процессов init
pgrep -lu www-data - покажет все процессы пользователя www-data
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

фоновый процесс \ режим \ задача \ fg \ bg \ jobs

nano - запускаем процесс nano
 - Останавливает процесс и перемещаем его в фоновый режим
[1]+ Stopped nano - в консоле увидим это

jobs - отобразит список процессов выполняющихся в фоне текущей консоли
bg 1 - запускаем процесс в фоновом режиме(он продолжит свою работу)
fg 1 - вытащим процесс 1 из фонового режима и покажет его работу

 уничтожаем процесс

disown - позволяет отделить приложение от консоли во время его выполнения
disown %3 - отделяет процесс %3 от текущей консоли
disown -a - отделяет все процессы от текущей консоли
disown -h - ограничивает все процессы от действий HUP-сигнала, отправленного в текущую консоль
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

использование ресурсов пользователем \ fuser

fuser -mauv /boot - отобразит подробный список процессов, которые используют /boot
fuser /boot - отобразит родительские PID процессов, использующих файлы в /boot
fuser -m /boot - отображает все PID процессов, использующих файлы в /boot
fuser -u /boot - отображает PID или имя пользователя консоли работающей в каталоге /boot
fuser -k /boot - уничтожает все процессы с открытыми файлами в /boot (SIGKILL)
fuser -l - отображает список поддерживаемых сигналов
fuser -k -HUP /boot - Отправляет HUP-сигнал всем процессам
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

сигналы \ остановка процесса \ перезапуск \ приоритет \ kill \ killall \ nohup


1 - SIGHUP - сигнал завершения процесса терминала или контрольного процесса !
2 - SIGINT - отправка с клавиатуры сигнала прерывания !
3 - SIGQUIT - отправка с клавиатуры сигнала прекращения
4 - SIGILL - неразрешенная команда
6 - SIGABRT - запрет на выполнение, отравляемый функции abort
8 - SIGFPE - исключение с плавающей точкой
9 - SIGKILL - сигнал полного завершения (уничтожения) процесса
11 - SIGSEGV - недействительная ссылка на ячейку памяти
13 - SIGPIPE - неработающий канал (нет процессов, которые могут быть считаны с канала)
14 - SIGALRM -  сигнал таймера, обозначающий аварийный системный вызов
15 - SIGTERM - сигнал завершения
30, 10, 16 - SIGUSR1 - определяемый пользователем сигнал 1
31, 12, 17 - SIGUSR2 - определяемый пользователем сигнал 2
20,17,18 - SIGCHLD - завершает или останавливает дочерний процесс
19,18,25 - SIGCOUNT - возобновление остановленного ранее процесса
17,19,23 - SIGSTOP - сигнал остановки процесса
18,20,24 - SIGTSTP - сигнал остановки, введенный в терминале
21,21,26 - SIGTTIN - ввод терминала для фоновых процессов
22,22,27 - SIGTTOU - вывод терминала для фоновых процессов

kill 28665 - отправляем сигнал SIGTERM процессу PID 28665
kill -9 4895 - отправляем сигнал SIGKILL процессу PID 4895
kill -SIGCOUNT 5254 - возобновляем остановленный процесс PID 5254
kill %3 - уничтожает процесс %3
killall spamd - уничтожает усе запущенные процессы spamd
killall -SIGHUP sendmail - заставляет процесс sendmail перечитать конфигурационные файлы

nohup updatedb & - запускает в фоне процесс updatedb с невозможностью его прерывания
nohup nice -9 gcc hello.c & - запускает gcc в непрерывном режиме и с более высоким приоритетом

Примеры:

 

ping -i 60 ya.ru > ping_ya.ru.log &   (создали процесс с пидом [1] 4712)
kill -s TERM 4712 - также kill -15 4712
killall -1 httpd - Завершить HUP процесс по имени
pkill -9 http - Завершить TERM процесс по имени (части имени)
pkill -TERM -u www - Завершить TERM процессы принадлежащие www

fuser -k -TERM -m /home - Завершить все процессы использующие /home (для umount)

kill -9 proc_id - убить процесс с PID proc_id, без соблюдения целостности данных, то есть насмерть
kill -1 proc_id - перечитать файл конфигурации процессом с PID proc_id

Сигналы:
-1     HUP - Дать отбой, перегрузка конфигурационных файлов и перезапуск программы
-2     INT - Прервать
-3     QUIT - Выйти
-9     KILL - Прекратить все выполняющиеся действия и завершить работу
-15    TERM - Мягкое завершение с удаление порожденных процессов и закрытием файлов

Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

получение различной информации о системе \ производительность \ потребление ресурсов \ cpu \ mem \ hdd \ dev \ info \ cat \ hdparm

arch - вывести на экран архитектуру компьютера
uname -m  - так-же выводит архитектуру компьютера
cal 2010  - печатает календарь на 2010 год. Без аргументов выводит календарь на текущий месяц

cat /proc/cpuinfo - вывести подробную информацию о процессоре
cat /proc/interrupts - вывести информацию о прерываниях
cat /proc/meminfo выводит статистику использования памяти
cat /proc/swaps - вывести информацию о swap файле(ах) ( файл подкачки )
cat /proc/version - вывести информацию о версии текущего ядра
cat /proc/net/dev - вывести информацию и статистику по сетевым устройствам
cat /proc/mounts - показать смонтированные файловые системы

clock -w  - записать текущую системную дату в BIOS

date - вывести текущую системную дату и время
date 041217002007.00 - установить дату и время в значение МесяцДеньЧасМинутаГод.Секунда

dmidecode -q - вывести в читабельном виде информацию по аппаратному оборудованию системы (SMBIOS / DMI)

hdparm -i /dev/hda - вывести характеристики жесткого диска
hdparm -tT /dev/sda - измерять скорость чтения данных с жесткого диска

lspci -tv  - вывести список устройств на шине PCI
lsusb -tv - вывести список устройств на USB шине

uname -r - вывести версию используемого ядра

free -h 

ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head


# CPU
7z b

# CPU
time dd if=/dev/zero bs=1MB count=200 | sha512sum

# disk write
time dd if=/dev/zero of=test.img oflag=direct bs=128k count=1k conv=fdatasync

# disk read
echo 3 | sudo tee /proc/sys/vm/drop_caches
time dd if=test.img of=/dev/null bs=128k conv=fdatasync
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Мониторинг и отладка системы \ free \ kill \ ps \ pstree \ lsmod \ tail

free -m - вывод статистики по оперативной памяти

kill -9 proc_id - убить процесс с PID proc_id, без соблюдения целостности данных, то есть насмерть
kill -1 proc_id - перечитать файл конфигурации процессом с PID proc_id

last reboot - вывод истории перезагрузок системы

lsof /home/user1 - вывести список открытых файлов из директории /home/user1
lsof -p proc_id - вывести список файлов, открытых процессом с PID proc_id

lsmod -список загруженных модулей ядра

ps -e -o pid,args --forest - вывести список PID'ов и процессов в виде дерева
ps -eafw - отобразить работающие в системе процессы, используемые ими ресурсы и другую полезную информацию ( единожды )

pstree - вывести дерево процессов

smartctl -i /dev/hda - проверить доступность SMART на жёстком диске /dev/hda
smartctl -A /dev/hda - проверка состояния жёсткого диска /dev/hda через SMART

strace -c ls >/dev/null - вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls >/dev/null - вывести список вызовов системных библиотек

tail /var/log/messages - вывести десять последних записей из системного журнала
tail /var/log/dmesg - вывести десять последних записей из журнала загрузки ядра

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

watch -n1 'cat /proc/interrupts' - выводить прерывания в режиме реального времени
Рубрики
boot \ grub \ grub2 \ init \ systemd cpu \ mem \ disk \ usage \ daemon \ процессы

sysv \ init.d \ свой демон для Linux

Ссылки:


https://github.com/ksemaev/manuals/blob/master/Simple%20daemon%20on%20Linux.md

Пример скрипта checker.sh:

Создаем по пути /opt/checker.sh скрипт с содержимым:
#!/bin/bash
while true
do
LIMIT=0.02
LAST="$(uptime | tail -c 5)"
if (( $(echo "$LAST >= $LIMIT" | bc -l) )) ; then
echo "ALERT at $(date)" >> /var/log/checker
fi
sleep 10
done

Превращаем checker.sh в исполняемый файл и проверяем работу:


chmod u+x /opt/checker.sh
touch /var/log/checker
/opt/checker.sh
tail /var/log/checker

Создаем /etc/init.d/checker скрипт для демона:

#!/bin/bash
# chkconfig: 2345 20 80
# description: checking load
# Source function library.
. /etc/init.d/functions

case "$1" in
start)
  echo "$(date) service checker started" >> /var/log/checker
  /opt/checker.sh &_
  echo $!>/var/run/checker.pid
;;
stop)
  echo "$(date) service checker stopped" >> /var/log/checker
  kill cat /var/run/checker.pid
  rm /var/run/checker.pid
;;
restart)
  $0 stop
  $0 start
;;
status)
if [-e /var/run/checker.pid]; then
  echo checker is running, pid=cat /var/run/checker.pid
  else
  echo checker is NOT running
  exit 1
  fi
;;
*)

echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0

Делаем скрипт исполняемым и добавляю в автозапуск и проверяю его работу:

sudo chmod u+x /etc/init.d/checker
chkconfig checker on
service checker start
service checker status
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Система информация \ uname \ lsb-release \ uptime \ dmesg \ id \ htop \ cron \ jobs \ kill

Версия операционной системы и ядра

# uname -a                               # Версия операционной системы и ядра (BSD)
# lsb_release -a                         # Информация о релизе (LSB distribution)
# cat /etc/SuSE-release                  # Версия SuSE
# cat /etc/debian_version                # Версия Debian

Используйте /etc/DISTR-release где DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris) и т.д. . Смотри так-же /etc/issue.

# uptime                                 # Аптайм, время прошедшее с момента запуска системы + текущая нагрузка(LA)
# hostname                               # Имя хоста
# hostname -i                            # IP адрес хоста (только для Linux)
# man hier                               # Документация(man page) по иерархии файловой системы
# last reboot                            # История перезагрузок(reboot)

Железо определенное ядром при загрузке

# dmesg                                  # Железо, определенное при загрузке
# lsdev                                  # Информация об установлено железе
# dd if=/dev/mem bs=1k skip=768 count=256 | strings -n 30 # Прочитать данные из BIOS

# cat /proc/cpuinfo                      # Модель процессора
# cat /proc/meminfo                      # Физическая память
# grep MemTotal /proc/meminfo            # Объем физической памяти
# watch -n1 'cat /proc/interrupts'       # Следить за прерываниями
# free -m                                # Использованная и свободная память (-m для MB)
# cat /proc/devices                      # Сконфигурированные устройства
# lspci -tv                              # Устройства PCI
# lsusb -tv                              # Устройства USB
# lshal                                  # Показать список всех устройств с их свойствами
# dmidecode                              # Показать информацию из DMI/SMBIOS:, из BIOS

Все о системе

lshw - команда выведет полную информацию о железе, следует выполнять с правами root'а (sudo lshw).
hwinfo - вывод информации о железе. Предварительно требуется установить утилиту (sudo apt-get install hwinfo).
uname -a - вывод информации о системе, версии ядра, дистрибутиве и архитектуре (32/64 бита).
lsb_release -a - выведет название и версию используемого дистрибутива.
cat /etc/*release* - аналогично предыдущей команде, плюс информация о базовом дистрибутиве (например, для Linux Mint 9 выведет еще и Ubuntu 10.04, как базовый дистрибутив).
ls -clt / | tail -n 1 | awk '{ print $7, $6, $8 }' - с помощью этой команды можно узнать дату и время установки системы.
ls -dl /var/log/installer/ - аналогично предыдущей команде (но немного иного принципа), позволяет узнать дату и время установки системы.

Загрузка, статистика, сообщения

Следующие команды применяются для мониторинга текущего состояния системы
# top                                    # Утилита TOP, различная системная информация, процессы, LA
# mpstat 1                               # Статистика касающаяся процессора
# vmstat 2                               # Статистика виртуальной памяти, дисков и процессора
# iostat 2                               # Статистика операций ввода/вывода,I/O 
# systat -vmstat 1                       # BSD суммарная системная статистика 
# systat -tcp 1                          # BSD статистика tcp (так-же можно -ip)
# systat -netstat 1                      # BSD активные сетевые соединения
# systat -ifstat 1                       # BSD сетевой трафик на активных интерфейсах
# systat -iostat 1                       # BSD работа процессора и дисков
# tail -n 500 /var/log/messages          # Последние 500 сообщений Syslog из файла messeges
# tail /var/log/warn                     # Системные предупреждения

Пользователи

# id                                     # Показать uid(имя), gid(группу), текущего пользователя
# last                                   # Статистика последних входов в систему
# who                                    # Показать кто в системе в данный момент
# groupadd admin                         # Создать группу "admin" и пользователя colin (Linux/Solaris)
# useradd -c "Colin Barschel" -g admin -m colin
# usermod -a -G             # Добавить существующего пользователя в группу (Debian)
# groupmod -A               # Добавить существующего пользователя в группу (SuSE)
# userdel colin                          # Удалить пользователя colin (Linux/Solaris)

# adduser joe                            # FreeBSD добавить пользователя joe (интерактивно)
# rmuser joe                             # FreeBSD удалить пользователя joe (интерактивно)
# pw groupadd admin                      # FreeBSD создать группу, используя утилиту pw 
# pw groupmod admin -m newmember         # FreeBSD добавить нового участника в группу
# pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh # FreeBSD создать пользователя (утилита pw) 
# pw userdel colin; pw groupdel admin    # FreeBSD удалить пользователя и группу (утилита pw)

Пароли, хранятся в файле /etc/shadow, для Linux и в /etc/master.passwd для FreeBSD, в зашифрованном виде. Если файл master.passwd 
был изменен вручную, нужно воспользоваться командой # pwd_mkdb -p master.passwd , что-бы пере собрать базу данных.

Что-бы временно запретить вход в систему, всем кроме root, используйте nologin.
# echo "Sorry no login now" > /etc/nologin           # (Linux)
# echo "Sorry no login now" > /var/run/nologin       # (FreeBSD)

Системные лимиты

Некоторые приложения(Proxy, Web сервера, базы данных) используют большие количества открытых файлов и сокетов, 
и как правило, установок по-умолчанию им недостаточно.

Оболочка/скрипт
За лимиты оболочки отвечает ulimit. Текущее состояние можно проверить ulimit -a. Например, 
что-бы увеличить кол-во открытых файлов с 1024 до 10240 нужно сделать:
# ulimit -n 10240                    # Команда верна только в оболочке
Так-же команда ulimit используется в скрипте, что-бы увеличить лимиты только для скрипта.
пользователь/процесс
Лимиты пользователей и процессов устанавливаются в /etc/security/limits.conf. Например:
# cat /etc/security/limits.conf
*   hard    nproc   250              # Лимит пользовательских процессов
asterisk hard nofile 409600          # Лимит открытых файлов для приложения


Обще системные лимиты устанавливаются командой Sysctl. Большинство этих переменных, действуют до перезагрузки, 
что-бы ограничения остались после ребута, внесите их в файл /etc/sysctl.conf.
# sysctl -a                          # Показать все системные переменные
# sysctl fs.file-max                 # Показать максимально-возможное кол-во открытых файлов
# sysctl fs.file-max=102400          # Изменить максимальное кол-во открытых файлов
# cat /etc/sysctl.conf
fs.file-max=102400                   # Постоянное значение в файле sysctl.conf
# cat /proc/sys/fs/file-nr           # Кол-во используемых файловых дескрипторов

Работа с процессами

top                  - процессы
htop                 - процессы
killall -9 name      - убить процесс name
kill PID№            - убить процесс по PID
kill 3936            - убить процесс
ps -aux              - показать процессы
ps U 1007            - показать процессы пользователя с uid 1007
ps U ivanov          - показать процессы пользователя ivanov
slay ivanov          - убить все процессы пользователя ivanov

Список процессов и PID


Каждая запущенная программа имеет уникальный номер, PID процесса. 
Список всех процессов можно получить утилитой ps.
 
# ps -auxefw                         # Полный список всех запущеных процессов

Однако зачастую целесообразней использовать эту команду с выводом на pgrep:
# ps axww | grep cron
  586  ??  Is     0:01.48 /usr/sbin/cron -s

# ps axjf                            # Все процессы в виде дерева (Linux)
# ps aux | grep 'ss[h]'              # Найти все PID процесса ssh, исключая PID процесса grep
# pgrep -l sshd                      # Найти PID процесса по имени(или по его части)
# echo $$                            # PID процесса текущей оболочки
# fuser -va 22/tcp                   # Список процессов использующих порт 22 (Linux)
# pmap PID                           # Карта памяти процессов (выявление утечек памяти) (Linux)
# fuser -va /home                    # Список процессов, имеющих доступ в раздел /home
# strace df                          # Отслеживать(Trace) системные вызовы и сигналы
# truss df                           # Тоже что и выше, но на FreeBSD/Solaris/Unixware

Изменить приоритет выполнения

Изменить приоритет процесса можно командой renice. 
Отрицательное значение, означает более высокий приоритет.
# renice -5 586                      # Повысить приоритет процесса с PID 586
586: old priority 0, new priority -5

C помощью nice можно запускать процессы с определенным приоритетом. Что-бы узнать, используете вы, /usr/bin/nice или nice встроенный в шелл, используйте # which nice).
# nice -n -5 top                     # Повысить приоритет процесса(/usr/bin/nice)
# nice -n 5 top                      # Понизить приоритет процесса(/usr/bin/nice)
# nice +5 top                        # nice Встроенный в шелл, понизить приоритет процесса

В то время как nice отвечает за распределение процессорного времени, другая полезная команда ionice, распределяет дисковый IO. 
Она весьма полезна в случае приложений, активно использующих дисковый IO(например компилирование). 
Вы можете установить для приложения соответствующий класс ( idle - best effort - real time), 
загляните в man, там все довольно доступно рассказано.
# ionice c3 -p123                    # Установить класс idle для pid 123 (только Linux)
# ionice -c2 -n0 firefox             # Запустить Фаерфокс с высоким приоритетом и классом best effort
# ionice -c3 -p$$                    # Установить для текущей оболочки класс idla

Последняя команда очень полезна при компилировании или отладке больших проектов. 
Любая команда, запущенная из текущей оболочки будет иметь пониженный приоритет. 
Переменная $$, содержит PID текушей оболочки (попробуйте echo $$)
FreeBSD использует idprio/rtprio (0 = максимальный приоритет, 31 = наиболее свободный(most idle)):
# idprio 31 make                     # Компилировать с низким приоритетом
# idprio 31 -1234                    # Установить низкий приоритет для PID 1234
# idprio -t -1234                    # -t удаляет real time/idle приоритеты

Jobs

bg/fg
Процессы запущенные в шелле, можно переключать в фоновый режим(background), приостанавливать, нажав [Ctrl]-[Z], 
и выводить обратно в foreground, так-же можно использовать команды bg and fg. 

Команда jobs, выведет список запущенных в фоновом режиме процессов.
# ping cb.vu > ping.log
^Z                                   # Команда ping приостановлена [Ctrl]-[Z] 

# bg                                 # Отправить в фон и продолжать выполнение

# jobs -l                            # Список фоновых процессов
[1]  - 36232 Running                       ping cb.vu > ping.log
[2]  + 36233 Suspended (tty output)        top

# fg %2                              # Вернуть процесс 2 в обычный режим
Что-бы процесс продолжал свое выполнение после закрытия оболочки, можно воспользоваться командой nohup.

# nohup ping -i 60 > ping.log &

top

Программа top показывает данные работы запущенных процессов. Смотрите так-же htop с htop.sourceforge.net, 
это более расширенная версия программы, работает на LInux и FreeBSD(ports/sysutils/htop/). 
Что-бы получить справку по ключам, во время работы top, нажмите h. Вот некоторые полезные ключи:
u [имя пользователя] Посмотреть процессы принадлежащие конкретному пользователю. 
Используйте + или пробел для возврата в режим полного просмотра.
k [pid] Убить (завершить) процесс с pid.
1 Показать статистику по процессору (только Linux)
R Переключить сортировку

kill

Прерывание процессов или посылка сигнала с помощью команд kill или killall.
# ping -i 60 cb.vu > ping.log &
[1] 4712

# kill -s TERM 4712                  # то-же что и kill -15 4712
# killall -1 httpd                   # отправить сигнал HUP процессу с точным именем
# pkill -9 http                      # отправить сигнал TERM процессу с именем или его частью
# pkill -TERM -u www                 # отправить сигнал TERM процессу выполняющемуся от имени конкретного пользователя
# fuser -k -TERM -m /home            # убить процессы имеющие доступ к /home 

Наиболее важные сигналы:
1       HUP Часто используется для перечитывания конфигурационных файлов
2       INT Прервать(interrupt)
3       QUIT Выйти
9       KILL Безусловно прибить процесс
15     TERM Мягкое прерывание
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

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

Введение:


Источник https://habrahabr.ru/company/simbirsoft/blog/271485/

0) Резюмируем, с какими ситуациями мы сталкиваемся и какие задачи нужно уметь решать:
— Подбор сервера под приложение и нагрузку
— Оценка возможностей имеющегося сервера
— Уметь ответить на вопрос «Почему так медленно?»

1) От чего в большей степени зависит производительность веб-приложения:
Скорость работы связки CPU + RAM
Скорость дисковой подсистемы
Производительность среды исполнения языка (в нашем случае это PHP)
Настройка базы данных (у нас это MySQL или PostgreSQL)
И, конечно, от самого приложения (от того, какие ресурсы оно использует)
Нам нужно иметь четыре инструмента, которые бы могли замерить скорость работы по отдельности:
для компонентов сервера: CPU+RAM и Дисковая подсистема
для программных компонентов: MySQL и PHP

2) Инструменты измерений

sysbench - позволяет быстро получить представление о производительности системы 
без установки сложных бенчмарков и специальных инструментов
github.com/akopytov/sysbench

Можно установить из пакетов:
apt-get install sysbench

Можно скомпилировать:
$ ./autogen.sh
$ ./configure
$ make 

Пример использования теста для CPU:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run - Тест CPU (вычисление двадцати тысяч простых чисел на двух потоках (--num-threads=2))

Пример использования теста для HDD:


HDD
sysbench --test=fileio --file-total-size=70G prepare - Подготовка файлов для теста  HDD. 
!Размер должен заметно превосходить объем оперативной памяти, 
!чтобы на результат тестирования не влиял кэш операционной системы.
sysbench --test=fileio --file-total-size=70G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run - Тест быстродействия HDD
sysbench --test=fileio cleanup - очистка ранее созданого мусора для теста.

Пример использования теста для MYSQL:

!Тест проверяет скорость выполнения транзакций MySQL сервера, 
!причем каждая транзакция состоит как из запросов на чтение, так и на запись. 
!Очень удобно изменять параметры сервера в my.cnf, перезапускать его и прогонять серию тестов, 
!— сразу видно, как меняется производительность.
!Параметр --oltp-read-only можно установить в значение on, тогда будут выполняться только запросы на чтение, 
!что позволит оценить скорость работы СУБД в режиме, например, slave-базы.
!Самый интересный параметр в отчете — это количество транзакций в секунду (transactions per sec).
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass prepare - Подготовка к тестированию
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=pass --max-time=60 --oltp-read-only=off --max-requests=0 --num-threads=8 run - Запуск теста

Пример использования теста для PostgreSQL:

!Ключи команды означают, что 4 клиента будут выполнять 5000 транзакций в 4 потока. В итоге будет выполнено 20000 транзакций.
!Самое главное здесь — это tps
pgbench -h localhost -U test_user -i -s 100 test - Для создания тестовых данных
pgbench -h localhost -U test_user -t 5000 -c 4 -j 4 test - Запуск тестирования

Пример использования теста для PHP:

!Имеется скрипт
!Скрипт выполняет десять тестов, разделенных на три группы:
!Первая группа — это общие операции (циклы, rand, создание/удаление объектов)
!Вторая группа тестов проверяет строковые функции, implode/explode, вычисление хешей
!Третья — работа с массивами
!Все измерения выполняются в секундах
wget github.com/florinsky/af-php-bench/raw/master/build/phpbm.phar - сам скрипт берем тут
php phpbm.phar - запускаем так.

atop и iostat:

Для анализа поведения сервера во времени нам помогают atop и iostat. 
Копим статистику за несколько дней (или больше), после чего можно её просмотреть.

atop
atop -w /tmp/atop.raw 1 60 - Запись данных в файл
atop -r /tmp/atop.raw - Прочитать запись

iostat
iostat -c 1 - Замер загрузки CPU
iostat -xd /dev/sda 1 - Замер загрузки дисковой подсистемы
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Демоны \ service \ init \ sysv \ init.d

init - Unix программа, которая порождает все остальные процессы.
biod - Работает совместно с удаленным nfsd для разрешения клиентских запросов NFS.
crond - Планировщик задач, работающий в фоновом режиме.
dhcpd - Динамически определяет конфигурацию TCP/IP для клиентов.
fingerd - Обеспечивает сетевой интерфейс для протокола finger, для использования команды finger.
ftpd - Служба FTP-запросов с удалённой системы. Прослушивает специальный порт, определённый в служебном файле для FTP.
httpd - Демон веб-сервера.
inetd - Прослеживает сетевые запросы. При допустимом запросе запускает фоновый процесс для обслуживания запроса. 
xinetd - В некоторых системах используется расширенная версия 
lpd - Line Printer Daemon» (англ.) протокол управления пулом печати.
nfsd - Процесс NFS операторских запросов для клиентских систем. Исторически каждый nfsd демон поддерживает один запрос за раз, поэтому запускается несколько копий.
ntpd - NTP демон, который управляет синхронизацией времени по сети. xntpd снабжён 3-й версией стандарта NTP.
rpcbind - Обеспечивает преобразование remote procedure call (RPC), такой как ypbind.
sendmail - SMTP демон.
sshd - Прослушивает запросы secure shell от клиентов.
swapper - Копирует местный процесс в пространство swap для исправления физической страницы памяти для ядра. Также называется sched.
syslogd - Системный процесс записи различных системных сообщений.
syncd - Периодически синхронизирует установленные системные файлы с системной памятью.
xfsd - Обслуживает X11 шрифты для удалённых клиентов.
vhand - Освобождает страницы памяти для использования другими процессами. Также известен как «page stealing daemon»англ.
ypbind - Находит сервер для NIS домена и запоминает информацию в файле.
jackd - Аудио сервер

smbd                  Серверы, предоставляющие доступ к файлам и принтерам для клиентских компьютеров с Windows по родному для тех протоколу. 
nmbd                    Близки к службе "Сервер" в Windows (в W'XP да, для остальных хорошо бы уточнить, т.к. для 16-битных Windows такой службы 
winbindd                точно не было; да и в W95/98/ME, скорее всего, тоже).

cupsd - Сервер работы с печатью. Как доступ к удаленным принтерам, доступ к локальным, доступ извне к локальным.
mysqld - Демон базы данных MySQL
dbus-daemon - Демон для работы с шиной данных
tftpd-hpa - Trivial File Transfer Protocol (TFTP) 
afpd - Сервер для Apple Filing Protocol
apache2 - Веб-сервер
atd - Запуск других программ в заданное время (подобно cron)
avahi-daemon - Автоматическая конфигурация сети (ZeroConf, Rendezvous, Bonjour)
bluetoothd - Управление технологией Bluetooth
cron - Запуск других программ в заданное время
cupsd - Диспетчер печати
dbus-daemon - Обмен данными через шину D-BUS
dhclient - DHCP-клиент
dhcpd - Присваивание другим компьютерам сетевого IP-адреса
dhcpcd - Считывание сетевого IP-адреса
gdm - Менеджер учетных записей Gnome
gpm - Управление мышью для текстовых консолей
hpiod - Функции печати и сканирования HP
httpd - Веб-сервер (например, Apache)
kdm - Менеджер учетных записей KDE
lockd - Функция NFS-Locking
Ipd - Обычный диспетчер печати на основе BSD-LPD
mdnsd - Автоматическая конфигурация сети (ZeroConf, Rendezvous, Bonjour)
mysqld - Сервер базы данных MySQL
named - Сервер доменных имен
NetworkManager - Устройство управления сетью
nmbd - Сервер имен для Windows/Samba
nscd - Кэш для хранения информации о пользователях, группах и именах компьютеров
ntpd - Установка времени с помощью сетевого протокола синхронизации времени (Network Time Protocol)
pppd - VPN-клиент, доступ к Интернету
pptpd - РРТР-сервер для VPN
portmap - Часть NFS-сервера
postfix - Почтовый сервер для рассылки электронных сообщений
rpc* - Сетевые службы RPC (удаленного вызова процедур), обычно для NFS
sdpd - Управление технологией Bluetooth
sendmail - Почтовый сервер для рассылки электронных сообщений
smartd - Система оценки состояния жесткого диска SMART
smbd - Файловый сервер Windows/Samba
squid - Сетевые прокси и сетевой кэш
sshd - Сервер SSH
rsyslogd - Протоколирование системных сообщений
udevd - Управление устройствами
vsftpd - FTP-сервер
xdm - Дисплейный менеджер для X
xinetd - Запуск других сетевых демонов
aio - Асинхронное управление вводом/выводом (например, для сетевых процессов)
events - Управление событиями и программными прерываниями
kacpid - Функции ACPI (усовершенствованного интерфейса конфигурации и управления питанием)
kblockd - Управление буфером блочных устройств
khelperd - Загрузка или удаление модулей ядра для пользовательских программ
khubd - Управление подключением и извлечением USB-устройств
kjournald - Осуществление журналирования для файловых систем ext3/4
knfsd - NFS-сервер
kthread	- Управление потоками
nfsd - NFS-сервер
kscand - Управление памятью
kseriod - Обмен информацией с серийными устройствами
ksoftirqd - Управление аппаратными прерываниями
kswapd - Свопинг
lockd - NFS-Locking
migration - Определение, какие процессы выполняются на каком процессоре
pdflush - Физическое сохранение изменений, вносимых в файлы
rpciod - NFS
scsi_eh - Управление ошибками и перерывами SCSI
watchdog - Проверка того, реагирует ли еще система на команды

Запуск вручную

service имя start
/etc/1nlt.d/ww start
invoke-rc.d имя start 
гс_имя start
start имя
systemctl start имя.service

Остановка вручную

service имя stop
/etc/init.d/имя stop
invoke-rc.d имя stop
ге_ймя stop
stop имя
systemctl stop имя.service

Перезагрузка/перезапуск

service имя reload/restart
/etc/init.d/имя reload/restart
invoke-rc.d имя reload/restart
гс_имя reload/restart
reload/restart имя
systemctl reload имя.service 

Автоматический старт при запуске компьютера

insserv имя
chkconfig --add имя
chkconfig --level 35 имя on

Предотвращение автоматического запуска

insserv -г имя
chkconfig --del имя
systemctl disable имя.service
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы мониторинг

Топтопы \ мониторинг сервера \ top \ htop \ free \ iotop \ netstat \ virt-top \ nethogs

Установка для debian

apt-get update
apt-get install  htop iotop nethogs virt-top 

Top — потребление ресурсов процессора, памяти, менеджер процессов \ top

 
Top - выводит информацию в реальном времени о запущенных процессах. 
Htop - продвинутая версия top, ставится из репозиториев.


top - отображает общий/используемый объем памяти, загрузка ЦП
h - помощь
Z - задать раскраску
z - вкл \ выкл раскраски
E - отображение выводимой инфы Гб, Мб и т.д. в шапке
e - отображение выводимой инфы Гб, Мб и т.д. в списке процессов
l,t,m - изменить отображение шапки
d или s - интервал обновления 
0,1,2,3,4,I - изменение отображения колонки CPU
R - переключение сортировки от большего к меньшему или наоборот
>,< - переключение сортировки по колонкам
M - сортировка по самым прожорливым процессам
V - показать процессы в виде дерева (родитель потомок)
с - показать путь до исполняемого файла 
n - число максимального кол-во показываемых процессов
u - [username] Показывает процессы принадлежащие пользователю username
k - [pid] Убить процесс с pid
r - [pid] renice приоритет (-20 до 20 )

Флаги '-q' и '-u' очень полезны в тех случаях, когда нагрузка на систему столь велика, что top не в состоянии быстро загрузиться.
s - показывать системные процессы (команда s)
i - не показывать спящие процессы (команда i)
t - не показывать самого себя (команда t)
mcpu - статистика cpu
mio - статистика ввода/вывода (команда m)
q - установить процессу top наивысший приоритет
u - показывать uid вместо имени пользователя
s - временной промежуток между обновлениями (команда s, значение по умолчанию - 2)
u - показывать процессы только данного юзера (команда u)


q - Выход

top -s -i -n 4 - покажет самые активные процессы
 
top -d 5 - покажет процессы ( и будет обновлять результат каждые 5 сек (по умолчанию 3 сек))
 
top -u root - будет показывать процессы пользователя root
 
top -p 190,2690 - будет отображать процессы с PID 190  и 2690
 
top -n 10 - после десяти обновления завершает выполнение команды
 
top -b - режим без вывода на экрана
 
top -b -n 12000 > myprocess.log - фиксировать информацию о процессах в течении 10 часов и записывать в логических

htop — потребление ресурсов процессора, памяти
Использование:

Управление:
F1 - справка
F2 - настройки
F3 - поиск процесса
F4 - сортировка списка процессов (от большего к меньшему или от меньшего к большему)
F5 - устанавливает древовидное отображение (корни - родительские процессы, а листья - дочерние) и наоборот
F6 - открывает панель с выбором параметра сортировки процессов
F7 - увеличить приоритет выполнения текущего процесса
F8 - уменьшить приоритет выполнения текущего процесса
F9 - убить процесс
F10 - выйти из программы.

Столбцы:
PID - идентификатор процесса.
USER - владелец процесса.
PRI - текуший приоритет (значение по умолчанию - 20; чем меньше приоритет, следовательно он выполняется быстрее)
NI - величина изменения приоритета относительно значения PRI (клавиши F7, F8).
VIRT - общий объем виртуальной памяти, используемой процессом
DATA - объем памяти, занятой данными, используемыми процессом в ходе выполнения.
SWAP - объем памяти, используемой процессом, но перемещенной в swap-область.
RES - количество резидентной (не перемещаемой в swap) памяти в килобайтах.
SHR - количество разделяемой (shared) памяти программы в килобайтах, т.е. памяти, которая может быть использована другими приложениями.
S - состояние процесса:
S — так называемое состояние сна;
R — состояние выполнения;
D — состояние ожидания.
CPU% - использование процессора в процентном отношении.
MEM% - использование процессом памяти в процентном отношении.
TIME+ - время работы процесса.
Command - указывает на команду, которой был запущен процесс.

Через настройки (F2) можно добавить еще некоторые полезные параметры:
IO RATE - Операции ввода\вывода. Чтение + запись. 
Если нужно отдельно на чтение и на запись, то можно добавить:
IO READ RATE и IO WRITE RATE.

Также на экран выводятся следующие параметры:
Load average - отражает число блокирующих процессов в очереди. (1 минута, 5 минут и 15 минут)
Блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы.

Uptime - время работы системы.

Ускорить или замедлить частоту обновления htop:
sudo htop -d 1  - чтобы программа обновляла окно каждую 1/10 секунды
sudo htop -d 50 - чтобы программа выводила новые данные раз в 5 секунд

Вывести процессы в виде дерева:
htop -t

Перемещение по списку процессов в htop:
Вы можете использовать курсорные клавиши для прокрутки списка процессов.
Также работают клавиши PgUp, PgDn для прокрутки окна.
Кнопка Home перенесёт к началу списка.
Кнопка End прокрутит список до конца.
Ctrl-a или ^ - прокрутка к началу пункта (началу строки).
Ctrl-e или $ - прокрутка к концу пункта записи о процессе (то есть концу строки).

Как в htop отсортировать по потреблению памяти, как выбрать поле для сортировки:
Нажмите клавишу F6 для выбора поля, которое вы хотите использовать для сортировки.
Для переключения к обратному порядку сортировки используйте кнопку I (Shift+i). 
При повторном нажатии список вновь будет отсортирован в обратном порядке.

Cвернуть ветки дерева процессов в htop:
В режиме дерева процессов выберите ветку дерева, которую вы хотите свернуть и нажмите F6.

Поиск и фильтрация процессов в htop:
Поиск отличается от фильтрации тем, что найденные процессы показываются наравне с остальными, и между найденными процессами можно переключаться кнопкой F3.
При фильтрации на экран будут выводиться только процессы, соответствующие введённой строке.
Для перехода к поиску по процессам нажмите F3 или /. 
Для переключения между найденными процессами нажимайте F3.
Для фильтрации процессов нажмите F4 или \ начните вводить имя процесса.
Для очистки фильтра вновь нажмите F4 и затем Esc.

Как выбрать один или несколько процессов в htop:
Для выбора процессов используйте Пробел. 
После этого введённые команды, такие как kill или изменение приоритета, 
могут применяться к группе выделенных процессов вместо подсвеченного в данный момент.
Для снятия выделения со всех процессов нажмите U (Shift+u).

Как закрыть процесс в htop:
Для закрытия процесса выберите один или несколько процессов и нажмите F9 или k. 
Выбранному процессу будет отправлен сигнал завершения. 
Если не отмечен ни один процесс, то будет закрыть тот, на котором находиться в данный момент курсор.

Как показать файлы, которые использует процесс:
Если вы хотите увидеть файлы, открытые процессом, то выделите интересующий вас процесс и нажмите кнопку l (маленькая латинская L).
Чтобы эта функция работала, в системе должны быть установлена утилита lsof.

Как изменить внешний вид htop:
Для изменения внешнего вида — панели с информацией о системе, выводимых столбцах и прочем, нажмите кнопку F2 или S (Shift+s).

Указать поле для сортировки при запуске htop:
htop -s PERCENT_MEM
htop --sort-key help

Показать только процессы определённого пользователя:
htop -u ПОЛЬЗОВАТЕЛЬ
htop -u mial

Показать только процесс с определённым номером:
Через запятую вы можете перечислить один или более идентификаторов процессов. 
Только эти процессы будут показаны в окне htop.
htop -p PID,PID…. 

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

Память

free -h - количество памяти и swap
cat /proc/meminfo - информация о памяти 
head -2 /proc/slabinfo; cat /proc/slabinfo  | egrep dentry\|inode - просмотреть различную кэш память и узнать ее размеры
vmstat 5 5 - информация использовании памяти за период времени 
swapoff -a - отключаем swap вообще прямо в работающей системе
swapon -a - включаем обратно swap
swapon -s - показывает источники и использование swap 
----------------------------------------------------- 

MemTotal - Всего памяти

MemFree - Свободная память

Cached - Страничный кэш в системе Linux ("Cached:" в meminfo) является в большинстве систем самым 
крупным потребителем памяти. Каждый раз, когда вы выполняете операцию чтения read () из файла, 
расположенного на диске, данные считываются в память и помещаются в страничный кэш.
После того, как операция read() завершается, ядро может просто выбросить страницу памяти, 
так как она не используется. Однако, если вы второй раз выполняете операцию чтения той же самой части файла, 
данные будут считываться непосредственно из памяти и обращения к диску не будет. 
Это невероятно ускоряет работу и, поэтому, в Linux так интенсивно используется кэширование страниц: 
ставка делается на то, что если вы обратились к некоторой странице дисковой памяти, 
то вскоре вы обратитесь к ней снова.

dentry/inode caches - Каждый раз, когда вы в файловой системе выполняете операцию "ls’" (или любую другую операцию: 
open(), stat() и т.д.), ядру требуются данные, которые находятся на диске. Ядро анализирует эти данные, 
находящиеся на диске, и помещает его в некоторых структуры данных, независимые от файловой системы, с тем, 
чтобы они могли в различных файловых системах обрабатываться одним и тем же образом. Таким же самым образом, 
как кэширование страниц в приведенных выше примерах, ядро может после того, как будет завершена команда "ls", 
стереть эти структуры. Тем не менее, делается такое же предположение, как и раньше: если вы однажды считали эти данные, 
вы обязательно прочитаете их еще раз. Ядро хранит эту информацию в нескольких местах "кэша", 
которые называются кэш памятью dentry и inode. Кэш память dentries являются общей для всех файловых систем, 
но каждая файловая система имеет свой собственный кэш inodes.

Buffer Cache - Кэш буфера ("Buffers:" в meminfo) является близким родственником кэш памяти dentry/inode. 
Данные dentries и inodes, размещаемые в памяти, представляют собой описание структур на диске, 
но располагаются они по-разному. Это, возможно, связано с тем, что у нас в копии, расположенной в памяти, 
используется такая структура, как указатель, но на диске ее нет. Может также случиться, 
что на диске байты будут располагаться не в том порядке, как это нужно процессору.

Подкачка памяти - swap
Как только ядро принимает решение, что ему не требуется получать память из каких-либо других источников, 
которые мы описывали ранее, оно запускает память подкачки swap. В ходе этого процесса оно получает данные 
пользовательских приложений и записывает их в специальное место (или места) на диске. Обратите внимание, 
что это происходит не только тогда, когда оперативная память близка к заполнению, 
ядро может принять решение перенести в память swap также данные, находящиеся в оперативной памяти, 
если они некоторое время не использовались (смотрите раздел "Подкачка памяти").

----------------------------------------------------
nano  /etc/sysctl.conf
vm.swappiness=10 - начинать использовать swap когда осталось 10% памяти  (0 не использовать swap)
vm.vfs_cache_pressure=100 - использовать память (чем меньше тем чаще используется swap) (при 1000 буде использоваться оперативная память)

sysctl -p - применить настройки сразу без перезагрузки

----------------------------------------------------

iotop — активность дисковой системы
Использование:

iotop -o - будут выведены наиболее активные процессы
iotop -o -b - ставим эту программу минут на 10 и смотрим, что же за эти 10 минут произошло
iotop -botqqqk --iter=60 >> /var/log/iotop - записывать в лог
iotop -botqqqk --iter=60 | grep -P "dd.dd K/s" >> /var/log/iotop - записывать только те процессы, которые генерируют более 10 КБ/
tail /var/log/iotop - смотрим результаты 
less /var/log/iotop - смотрим результаты 

Ключи:
-o – отображать только процессы, которые в данный момент выполняют операции I/O с диском 
-b – отключить интерактивный режим (например – для логгирования)
-n – задать число выполнения проверок перед выходом
-d – интервал (секунды) между проверками
-p – PID процесса, который надо отслеживать
-u – имя пользователя, которого надо отслеживать
-P – отображать только процессы (по-умолчанию – все процессы и потоки)
-k – отображать инфомрацию в KB
-t – добавить отображение времени выполнения проверки
-q (-qq, -qqq) – уменьшить количество выводимой информации

Расшифровка параметров
TID - ID процесса, его же можно посмотреть в ps auxf
PRIO - приоритет процесса
USER - имя пользователя, от которого запущен процесс
DISK READ - скорость чтения с диска
DISK WRITE - скорость записи на диск
SWAPIN - процент в свап
IO - процент напрямую
COMMAND - команда, которая “безобразничает” и которую так долго искали

nethogs — сетевая активность

 
Наглядная демонстрация кто сожрал канал.
Единицы измерения можно изменить с помощью клавиши "m"

netstat — сетевая активность

netstat -a - перечислить все порты
netstat -at - перечислить все TCP порты
netstat -au - перечислить все UDP порты
netstat -l - перечислить все прослушиваемые порты (состоянии LISTEN)
netstat -lt - перечислить прослушиваемые TCP порты (состоянии LISTEN)
netstat -lu - перечислить прослушиваемые UDP порты (состоянии LISTEN)
netstat -lx - перечислить прослушиваемые UNIX сокеты (состоянии LISTEN)
netstat -s - показать статистику всех портов
netstat -st - показать статистику только TCP портов
netstat -su - оказать статистику только UDP портов
netstat -p - отображение PID и имени процесса в выводе netstat
netstat -an - ключ n отключает разрешение имён в выводе
netstat -c - вывод информации netstat непрерывно (как top,htop)
netstat -r - таблица маршрутизация ядра
netstat -ap | grep ssh - соответствие портов и процессов (ssh)
netstat -an | grep ':80' - соответствие портов и процессов (порт 80)
netstat -i - показать список сетевых интерфейсов

Полезная команда: 
netstat -lnptux
-l все открытые порты (LISTEN)
-t по протоколу TCP
-u по протоколу UDP
-x по протоколу UNIX Socket
-n без резолва IP/имён
-p но с названиями процессов и PID-ами

Полезная команда: 
netstat -tulpan 

virt-top — Мониторинг виртуальных машин на kvm

!!! в debian 12 не обнаружил virt-top, был только в did debian, но поставил так:
!!! wget  http://ftp.us.debian.org/debian/pool/main/v/virt-top/virt-top_1.1.1-1_amd64.deb
!!! dpkg -i virt-top_1.1.1-1_amd64.deb 

S — состояние виртуальной машины. 
R — Для запущенных 
RDRQ/WRRQ — дисковое i/o
RXBY/TXBY — i/o сети

Клавиши:
1 - переключимся в режим отображения по процессорам (по ядрам процессора). 
2 - просмотрим текущий i/o на различных виртуальных сетевых интерфейсах (vnetX, например).
3 - просмотрим текущий i/o по виртуальным дисковым устройствам 

Запись в файл:
virt-top --csv file.csv - для того, что бы virt-top писал свои данные в файл
virt-top --csv file.csv -d 1 - заставим писать статистику каждую секунду, а не 3
virt-top --csv file.csv -d 1 --script - выключим отображение основного интерфейса virt-top
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Мониторинг в ОС Linux \ ps \ top \ gstat \ vmstat \ iostat \ netstat \ df \ sysctl \ sockstat

apt-get install top
apt-get install ganglia-monitor
apt-get install sysstat
apt-get install sockstat

top

У утилиты top есть параметры, которые облегают жизнь, их мы набираем в top’e когда он запущен:
S — показать системные процессы, по умолчанию они не показываются
u — и имя пользователя, например u mysql покажет процессы запущенные от пользователя mysql
o — используем для сортировки, возможные параметры — pri, size, res, cpu, time, threads
m — переключение между режимами отображения нагрузки и ввода-вывода
k — завершить процесс, ввод pid процесса
r — изменить приоритет процесса, вводим pid процесса
n — отображать статистику по определённому процесс
a — показывает абсолютные запущенных процессов

top -n 3 — показывает самые ресурсоёмкие приложения в данный момент

gstat

gstat — показывает использование дисков.
gstat -a — используется для вывода только активных устройств

vmstat

vmstat — показывает состояние виртуальной памяти и буфера
vmstat 5 — отображает статистику раз в пять секунд
vmstat -z — показывает состояние буфера
vmstat -i — показывает состояние прерываний

iostat

iostat — выводит статистику по I/O устройств
iostat -d -w5 — показывать информацию по дискам, с периодичностью в пять секунд безостановочно
iostat -dx -w5 — показывает расширенную статистику
iostat -dx /dev/vda 5 — показывает расширенную статистику

netstat

netstat — показывает активные сетевые соединения.
netstat -w 1 — количество пакетов в настоящее время.
netstat -ibt — вывод сетевых интерфейсов с разбивкой по IP адресам, отображает объём трафика, количество ошибок, коллизий
netstat -rn — отображает таблицу маршрутизации

sysctl

Вообще-то в sysctl кладезь информации, и она достойна отдельной подробной статьи
sysctl — позволяет посмотреть параметры в системы и внести изменения, такие как стек tcp/ip, вирутальной памяти
sysctl -a — показывает все параметры
sysctl kern.ipc.numopensockets — показывает количество открытых сокетов
sysctl kern.openfiles — показывает количество открытых файлов

df

df — утилита, которая показывает свободное место на дисках
df -h — отображает слайсы, и свободное\занятое место
df -i — показывает количество занятых инодов

sockstat

sockstat — отображает информацию о сокетах, сетевых и файловых.
sockstat -l — список портов открытых на прослушивание
sockstat -c список установленных соединений
sockstat -4, -6 — по протоколу ipv4 или ipv6

lsof

lsof — показывает информацию от откртых сокетах, файлах и сетевых соединениях.
lsof -i -n — показывает открытые интернет-соединения
lsof -i -n |grep ESTABLISHED — показывает открытые, и установленные сетевые соединения

доп

 

ps auxww|grep имя\pid\ от кого запущено — позволяет получить информацию по интересующему процессу.

mount — показывает смонтированные разделы.

Также можно установить iftop, которая показывает статистику по сетевым интерфейсам, к при меру:

iftop -i em0

tunefs -p /tmp – показывает информацию о файловой системе.

uname -a — показывает информацию о системе, ядре.

date — выводит текущую дату и время.

w — показывает кто, откуда, во сколько зашёл в систему.

last — показывает историю входов в систему, и последнюю перезагрузку.

uptime — показывает сколько система работает с момента последней перезагрузки.
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Управление процессами \ jobs \ fg \ bg \ kill \ top \ nice \

Запуск процесса

Для изучения управления процессами, какой-нибудь процесс необходимо сначала запустить. 
Убедитесь, что у вас запущен X (графический сервер — прим. пер.) и выполните следующую команду:
$ xeyes -center red

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

Остановка процесса

Чтобы вернуть приглашение, вы должны нажать Control-C (часто пишется как Ctrl-C или ^C):
Вы получили назад свое приглашение, но и окно xeyes исчезло. Фактически, процесс был «убит». 
Вместо завершения по Control-C, мы можем просто остановить процесс с помощью Control-Z: 

$ xeyes -center red
Control-Z
[1]+  Stopped                 xeyes -center red
$

На этот раз вы получите приглашение bash'a, а окно xeyes останется сверху. 
Если вы с ним немного поиграете, возможно заметите, что глаза заморожены на одном месте. 
Если окно xeyes будет перекрыто другим окном и затем снова открыто, вы увидите, что оно даже не пере рисовалось. 
Процесс не делает ничего. 
Он на самом деле остановлен.

fg и bg

Чтобы процесс «растормошить» и запустить обратно, мы можем вывести его на передний план используя команду fg (от англ. foreground — прим. пер.):

$ fg
(test it out, then stop the process again)
Control-Z
[1]+  Stopped                 xeyes -center red
$

А теперь продолжим его в фоне с помощью команды bg (от англ. backgroud — прим. пер.):
$ bg
[1]+ xeyes -center red &
$

Прекрасно! Процесс xeyes сейчас запущен в фоновом режиме,  а мы снова имеем приглашение bash. 

Использование «&»

Если нам нужно сразу запустить xeyes в фоновом режиме (вместо использования Control-Z и bg), мы можем просто добавить "&" (амперсанд) в конец команды xeyes: 

$ xeyes -center blue &
[2] 16224

Несколько фоновых процессов jobs

Теперь в фоне у нас одновременно работают красные и синие xeyes. 
Мы можем просмотреть список заданий с помощью jobs: 

$ jobs -l
[1]- 16217 Running                 xeyes -center red &
[2]+ 16224 Running                 xeyes -center blue &

Число в левой колонке — это порядковый номер задания, который bash присваивает ему при запуске. 
Плюс (+) у второго задания значит, что это «текущее задание», оно будет выведено на передний план при вводе fg. 
Вы также можете вывести на передний план конкретное задание указывая его номер; 
например, fg 1 сделает таковым красный xeyes. 
Следующая колонка это идентификатор процесса или сокращенно pid, любезно добавленный в вывод благодаря опции -l. 
Наконец, состояние обоих процессов «Running» (выполняется) и их командная строка справа. 

Введение в сигналы

Чтобы убить, остановить, или продолжить процесс, Linux использует специальную форму взаимодействия, 
называемую сигналы. Отправляя сигнал некоторому процессу, вы можете его завершить, остановить, 
или сделать что-нибудь еще. Это то, что происходит на самом деле, когда вы нажимаете Control-C, Control-Z, 
или используете bg и fg — вы указываете bash отправить процессу определенный сигнал.
Сигналы также можно отправить с помощью команды kill указав ей как параметр id процесса (pid): 
$ kill -s SIGSTOP 16224
$ jobs -l
[1]- 16217 Running                 xeyes -center red &
[2]+ 16224 Stopped (signal)        xeyes -center blue

Как можно заметить, kill не обязательно «убивает» процесс, хотя может и это. Используя опцию -s, kill может отправить процессу любой сигнал. 
Linux убивает, останавливает или продолжает процессы когда они получают SIGINT, SIGSTOP, или SIGCONT сигнал соответственно. 
Есть и другие сигналы, которые вы можете отправить процессам; некоторые сигналы могут обрабатываться внутри самих программ. 
Вы можете узнать о сигналах которые обрабатывает конкретная программа поискав в ее man'е секцию SIGNALS. 

SIGTERM и SIGINT

Если вы хотите убить процесс, есть несколько вариантов. По-умолчанию, kill отправляет SIGTERM, 
который отличается от SIGINT отправляемого по Control-C, но обычно имеет тот же эффект: 
$ kill 16217
$ jobs -l
[1]- 16217 Terminated              xeyes -center red
[2]+ 16224 Stopped (signal)        xeyes -center blue

Полное убийство

Процесс может игнорировать оба сигнала, SIGTERM и SIGINT, либо по своему усмотрению, либо потому, что он остановлен, либо еще как-то «застрял». 
В этом случае, может быть необходимо использование большого молотка — сигнала SIGKILL. 
Процесс не может игнорировать SIGKILL: 
$ kill 16224
$ jobs -l
[2]+ 16224 Stopped (signal)        xeyes -center blue
$ kill -s SIGKILL 16224
$ jobs -l
[2]+ 16224 Interrupt               xeyes -center blue

nohup

Терминал в котором вы запускаете задания, называется терминалом управления заданиями. 
Некоторые шеллы (но не bash по-умолчанию), отправляют сигнал SIGHUP фоновым заданиям когда вы выходите, 
заставляя их завершаться. Для защиты процессов от такого поведения, используйте nohup когда запускаете процесс: 
$ nohup make &
[1] 15632
$ exit

Используем ps для вывода списка процессов

Команда jobs, которую мы использовали ранее выводит только те процессы, которые были запущены в вашей сессии bash. 
Чтобы увидеть все процессы в вашей системе, используйте ps совместно с опциями a и x: 
$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        S      0:04 init [3]
    2 ?        SW     0:11 [keventd]
    3 ?        SWN    0:13 [ksoftirqd_CPU0]
    4 ?        SW     2:33 [kswapd]
    5 ?        SW     0:00 [bdflush]

Здесь приведены только первые 5 процессов, поскольку обычно список процессов очень длинный. 
Команда дает вам «слепок» всего, что в данный момент выполняется на машине, однако в нем много лишней информации. 
Если бы вы, не указали ax, вы бы получили список только тех процессов, которые принадлежат вам, и которые есть в управляющем терминале. 
Команда ps x покажет все ваши процессы, даже те, которых нет в управляющем терминале. 
Если использовать ps a, то будет получен список процессов из терминалов всех пользователей.

Просмотр «леса» и «деревьев»

Вы также можете просмотреть и другую информацию о каждом процессе. 
Опция --forest позволяет легко просмотреть иерархию процессов и даст вам представление о том, как различные процессы в системе взаимосвязаны между собой. 
Если один процесс запускает другой процесс, то запущенный будет называться его потомком. 
В выводе --forest, родители находятся слева, а потомки появляются как ветки справа: 
$ ps x --forest
  PID TTY      STAT   TIME COMMAND
  927 pts/1    S      0:00 bash
 6690 pts/1    S      0:00  \_ bash
26909 pts/1    R      0:00      \_ ps x --forest
19930 pts/4    S      0:01 bash
25740 pts/4    S      0:04  \_ vi processes.txt

«u» и «l» опции ps

Опции u и l могут быть использованы в любой комбинации с опциями a, x с целью получения более подробной информации о процессах: 

$ ps au
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
agriffis   403  0.0  0.0  2484   72 tty1     S     2001   0:00 -bash
chouser    404  0.0  0.0  2508   92 tty2     S     2001   0:00 -bash
root       408  0.0  0.0  1308  248 tty6     S     2001   0:00 /sbin/agetty 3
agriffis   434  0.0  0.0  1008    4 tty1     S     2001   0:00 /bin/sh /usr/X
chouser    927  0.0  0.0  2540   96 pts/1    S     2001   0:00 bash

$ ps al
  F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
100  1001   403     1   9   0  2484   72 wait4  S    tty1       0:00 -bash
100  1000   404     1   9   0  2508   92 wait4  S    tty2       0:00 -bash
000     0   408     1   9   0  1308  248 read_c S    tty6       0:00 /sbin/ag
000  1001   434   403   9   0  1008    4 wait4  S    tty1       0:00 /bin/sh
000  1000   927   652   9   0  2540   96 wait4  S    pts/1      0:00 bash

Использование top

Если вы обнаружили, что запускаете ps несколько раз подряд, пытаясь рассмотреть происходящие изменения, возможно вам стоит воспользоваться top. 
Программа top отображает постоянно обновляющийся список процессов, наряду с другой полезной информацией: 
$ top
10:02pm  up 19 days,  6:24,  8 users,  load average: 0.04, 0.05, 0.00
75 processes: 74 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:  1.3% user,  2.5% system,  0.0% nice, 96.0% idle
Mem:   256020K av,  226580K used,   29440K free,       0K shrd,    3804K buff
Swap:  136544K av,   80256K used,   56288K free                  101760K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND
  628 root      16   0  213M  31M  2304 S       0  1.9 12.5  91:43 X
26934 chouser   17   0  1272 1272  1076 R       0  1.1  0.4   0:00 top
  652 chouser   11   0 12016 8840  1604 S       0  0.5  3.4   3:52 gnome-termin
  641 chouser    9   0  2936 2808  1416 S       0  0.1  1.0   2:13 sawfish

nice

Каждый процесс имеет свое значение приоритета, которое Linux использует для разделения времени CPU. 
Вы можете указать приоритет процесса при его запуске, с помощью команды nice: 
$ nice -n 10 oggenc /tmp/song.wav

С тех пор, как приоритет стал называться nice, он стал легче для запоминания, так, большее значение nice делает «хорошо» (nice — хорошо, замечательно; прим. пер.) другим процессам, 
позволяя им получить более приоритетный доступ к времени CPU. 
По-умолчанию, процессы запускаются с приоритетом 0, поэтому установка приоритета в 10 для oggenc значит, что он будет давать больше времени поработать другим процессам.
Как правило, это означает, что oggenc даст возможность другим процессам выполняться со своей обычной скоростью, не зависимо от того, сколько времени процессора хочет сам oggenc. 
Вы могли видеть эти «уровни любезности» в колонке NI у ps и top ранее.

renice

Команда nice может изменять приоритет процессов только во время их запуска. 
Если вам необходимо изменить приоритет работающего процесса, воспользуйтесь командой renice: 
$ ps l 641
  F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
000  1000   641     1   9   0  5876 2808 do_sel S    ?          2:14 sawfish
$ renice 10 641
641: old priority 0, new priority 10
$ ps l 641
  F   UID   PID  PPID PRI  NI   VSZ  RSS WCHAN  STAT TTY        TIME COMMAND
000  1000   641     1   9  10  5876 2808 do_sel S    ?          2:14 sawfish
Рубрики
cpu \ mem \ disk \ usage \ daemon \ процессы

Процессоры и дистрибутивы \ х86_64 \ i386

Как определится с дистрибутивом файл ISO?
i386 = 386 и совместимые с ним процессоры;
i486 = 486 и совместимые с ним процессоры;
i586 = Pentium и совместимые с ним процессоры;
i686 = Pentium II и совместимые с ним процессоры;
х86_64 = AMD64 и совместимые с ним 64-битные процессоры (включая Intel).

Пакет i386 будет работать со всеми вышеуказанными процессорами. 

Напротив, пакет i686 использует различные расширения Pentium II, поэтому код может выполняться немного быстрее. 
В любом случае программа не будет работать с другими процессорами.