Содержание
Полезные команды и приемы в Bash
Кто занимает ресурсы
Оперативная память
Сколько памяти занимает процесс. На примере mysqld.
ps -o vsz,rss,cmd --pid $(pgrep mysqld)
Список процессов с сортировкой по занимаемой памяти.
ps aux --sort -rss ps aux --sort -vsz
Нагрузка на CPU
Посмотреть информацию о процессоре.
lscpu
Список процессов с сортировкой по нагрузке на CPU.
ps aux --sort -pcpu
ps aux --sort=-pcpu,+pmem | head -n 11
Информация о загрузке каждого ядра процессора.
mpstat -P ALL
Загрузка процессора в %.
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' <(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)
Текстовый вывод нагрузки на процессор в консоль.
sar 1 60
Наблюдение за процессами
Наблюдаем через top за конкретным процессом.
top -c -p $(pgrep -d',' -f mysqld)
Определить, кто родитель процесса.
Например, если указать pid worker процесса nginx, команда ниже покажет pid процесса master. В случае с nginx это не имеет большого смысла, но иногда нужно.
ps -o ppid= -p 5606
Откуда запущен процесс:
#ls -l /proc/Process-PID/cwd
Дисковая подсистема
Сводная информация по нагрузке на диск.
iostat -xk -t 2
Выводит информация в консоль каждые 2 секунды. С помощью этого вывода можно бегло оценить, что в целом происходит с каждым конкретным диском.
Дисковая активность всех процессов.
pidstat -d 1
Выводит каждую секунду в консоль информацию о дисковой активности всех процессов. Дисковая активность конкретного процесса.
pidstat -p PID -d 1
Что пишет процесс.
strace -e trace=write -p PID
Анализ I/O дисков, в том числе latency.
./iosnoop ./iosnoop -p PID
Список удаленных открытых файлов.
Полезная команда, которая позволяет решить популярную проблему, когда казалось бы места свободного должно быть много, но его реально нет. Принудительно удален какой-то открытый файл, поэтому место не освободилось.
lsof +L1 lsof | grep '(deleted)'
Список открытых файлов в конкретной директории.
lsof +D /var/log
Популярные метрики dstat
dstat -tldnpms 10
Только диски по read_bytes / write_bytes (нагрузка на «железо»):
dstat --top-bio
Диски по rchar/wchar (нагрузка на «по», т.е. включая обращения ко всяким виртуальным ФС):
dstat --top-io
Сетевая активность
Утилита nethogs дает интерфейс на подобии top.
dnf install nethogs apt install nethogs
Проверить какие порты прослушиваются в системе и кем
# lsof -i -P -n | grep LISTEN # netstat -tulpn | grep LISTEN # nmap -sTU -O IP-address-Here
Работа с tcpdump
Отфильтровать все запросы из локальных сетей к DNS-серверу по 53-му порту
tcpdump -i <interface> port 53 | grep "src net 192.168.0.0/16\|10.0.0.0/8\|172.16.0.0/12"
Установить нужный часовой пояс
timedatectl set-timezone Asia/Novokuznetsk
Узнать IP NAT
Вернет IP-адрес NAT
curl ifconfig.me
Отобразит цепочку IP-адресов
curl ifconfig.me/forwarded
Информация о службах
Вывести список всех служб:
#systemctl list-unit-files --type=service
Вывести список только включенных служб:
#systemctl list-unit-files --type=service --state=enabled --all
Изменение программ по умолчанию
Изменить редактор по умолчанию
Определяем путь до исполняемого файла желаемого редактора:
which vim
Получаем примерно следующий вывод:
# which vim /usr/bin/vim
Изменяем редактор:
export EDITOR=/usr/bin/vim
Работа с ВМ
Узнать номера дисков
Чтобы узнать сопоставление дисков с их номерами на ESXi необходимо выполнить следующее:
# cat /sys/class/scsi_host/*/proc_name
Примерный вывод:
[root@portal18 k.guskov]# cat /sys/class/scsi_host/*/proc_name vmw_pvscsi ahci ahci ahci ahci ahci ahci ahci ahci ahci ahci ata_piix ahci ahci ahci ahci ahci ahci ahci ahci ahci ahci ata_piix ahci ahci ahci iscsi_tcp ahci ahci ahci ahci ahci ahci ahci
Необходимо найти vmw_pvscsi и запомнить его индекс. В данном примере строчка 1, так что индекс будет 0 Затем выполняем:
ll /sys/class/scsi_host/host0/device/target*/*/block/
Примерный вывод:
# ll /sys/class/scsi_host/host0/device/target*/*/block/ /sys/class/scsi_host/host0/device/target0:0:0/0:0:0:0/block/: итого 0 drwxr-xr-x 10 root root 0 июн 7 16:59 sda /sys/class/scsi_host/host0/device/target0:0:1/0:0:1:0/block/: итого 0 drwxr-xr-x 8 root root 0 июн 7 16:59 sdb /sys/class/scsi_host/host0/device/target0:0:2/0:0:2:0/block/: итого 0 drwxr-xr-x 10 root root 0 июн 7 16:59 sdc /sys/class/scsi_host/host0/device/target0:0:3/0:0:3:0/block/: итого 0 drwxr-xr-x 8 root root 0 июн 7 16:59 sdd /sys/class/scsi_host/host0/device/target0:0:4/0:0:4:0/block/: итого 0 drwxr-xr-x 8 root root 0 июн 7 16:59 sde /sys/class/scsi_host/host0/device/target0:0:5/0:0:5:0/block/: итого 0 drwxr-xr-x 8 root root 0 июн 7 16:59 sdf /sys/class/scsi_host/host0/device/target0:0:6/0:0:6:0/block/: итого 0 drwxr-xr-x 8 root root 0 авг 1 13:56 sdh{{ :main:virtualization:vmware:scsi-disk:1.png?600 |}}
Необходимо найти интересующий вас диск и обратить внимание на секцию target последние 2 цифры - ID диска в ESXi.
Работа со службами
Информация о службах
Вывести список всех служб
systemctl list-units --type service
Пример вывода:
UNIT LOAD ACTIVE SUB DESCRIPTION blk-availability.service loaded active exited Availability of block devices chrony.service loaded active running chrony, an NTP client/server clamav-daemon.service loaded active running Clam AntiVirus userspace daemon clamav-freshclam.service loaded active running ClamAV virus database updater console-setup.service loaded active exited Set console font and keymap cron.service loaded active running Regular background program processing daemon dbus.service loaded active running D-Bus System Message Bus fetchmail.service loaded active exited LSB: init-Script for system wide fetchmail daemon getty@tty1.service loaded active running Getty on tty1 ifupdown2-pre.service loaded active exited Helper to synchronize boot up for ifupdown keyboard-setup.service loaded active exited Set the console keyboard layout kmod-static-nodes.service loaded active exited Create List of Static Device Nodes lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling networking.service loaded active exited Network initialization pmg-smtp-filter.service loaded active running Proxmox SMTP Filter Daemon pmgbanner.service loaded active exited Proxmox Mail Gateway Login Banner pmgdaemon.service loaded active running Proxmox Mail Gateway's privileged loopback API daemon pmgnetcommit.service loaded active exited Commit Proxmox network changes pmgpolicy.service loaded active running Proxmox Mail Gateway Policy Daemon pmgproxy.service loaded active running Proxmox Mail Gateway's unprivileged API and API-proxy daemon pmgsync.service loaded active exited Sync Proxmox Configuration postfix.service loaded active exited Postfix Mail Transport Agent postfix@-.service loaded active running Postfix Mail Transport Agent (instance -)
Вывести запущенные сервисы
systemctl list-units --type service --state running
Пример вывода:
# systemctl list-units --type service --state running UNIT LOAD ACTIVE SUB DESCRIPTION chrony.service loaded active running chrony, an NTP client/server clamav-daemon.service loaded active running Clam AntiVirus userspace daemon clamav-freshclam.service loaded active running ClamAV virus database updater cron.service loaded active running Regular background program processing daemon dbus.service loaded active running D-Bus System Message Bus getty@tty1.service loaded active running Getty on tty1 pmg-smtp-filter.service loaded active running Proxmox SMTP Filter Daemon pmgdaemon.service loaded active running Proxmox Mail Gateway's privileged loopback API daemon pmgpolicy.service loaded active running Proxmox Mail Gateway Policy Daemon pmgproxy.service loaded active running Proxmox Mail Gateway's unprivileged API and API-proxy daemon postfix@-.service loaded active running Postfix Mail Transport Agent (instance -) postgresql@15-main.service loaded active running PostgreSQL Cluster 15-main rpcbind.service loaded active running RPC bind portmap service rrdcached.service loaded active running LSB: start or stop rrdcached rsyslog.service loaded active running System Logging Service ssh.service loaded active running OpenBSD Secure Shell server systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running User Login Management systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files user@0.service loaded active running User Manager for UID 0 zfs-zed.service loaded active running ZFS Event Daemon (zed) LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 21 loaded units listed.
Вывести завершившиеся ошибкой
systemctl list-units --type service --state failed
Просмотреть все службы
systemctl list-unit-files
Пример вывода:
ystemctl list-unit-files UNIT FILE STATE PRESET proc-sys-fs-binfmt_misc.automount static - -.mount generated - dev-hugepages.mount static - dev-mqueue.mount static - proc-fs-nfsd.mount static - proc-sys-fs-binfmt_misc.mount disabled disabled run-rpc_pipefs.mount generated - sys-fs-fuse-connections.mount static - sys-kernel-config.mount static - sys-kernel-debug.mount static - sys-kernel-tracing.mount static - var-lib-nfs-rpc_pipefs.mount static - postfix-resolvconf.path disabled enabled systemd-ask-password-console.path static - systemd-ask-password-wall.path static - session-1.scope transient - session-3.scope transient - apt-daily-upgrade.service static - apt-daily.service static - auth-rpcgss-module.service static - autovt@.service alias - blk-availability.service enabled enabled chrony-dnssrv@.service static - chrony-wait.service disabled enabled chrony.service enabled enabled chronyd.service alias - clamav-clamonacc.service disabled enabled clamav-daemon.service enabled enabled clamav-freshclam.service enabled enabled console-getty.service disabled disabled console-setup.service enabled enabled container-getty@.service static - cron.service enabled enabled cryptdisks-early.service masked enabled cryptdisks.service masked enabled dbus-org.freedesktop.hostname1.service alias - dbus-org.freedesktop.locale1.service alias - dbus-org.freedesktop.login1.service alias - dbus-org.freedesktop.timedate1.service alias - dbus.service static - debug-shell.service disabled disabled
Вывести только службы Linux
systemctl list-unit-files --type service
Пример вывода:
UNIT FILE STATE PRESET proc-sys-fs-binfmt_misc.automount static - -.mount generated - dev-hugepages.mount static - dev-mqueue.mount static - proc-fs-nfsd.mount static - proc-sys-fs-binfmt_misc.mount disabled disabled run-rpc_pipefs.mount generated - sys-fs-fuse-connections.mount static - sys-kernel-config.mount static - sys-kernel-debug.mount static - sys-kernel-tracing.mount static - var-lib-nfs-rpc_pipefs.mount static - postfix-resolvconf.path disabled enabled systemd-ask-password-console.path static - systemd-ask-password-wall.path static - session-1.scope transient - session-3.scope transient - apt-daily-upgrade.service static - apt-daily.service static - auth-rpcgss-module.service static - autovt@.service alias - blk-availability.service enabled enabled chrony-dnssrv@.service static - chrony-wait.service disabled enabled chrony.service enabled enabled chronyd.service alias - clamav-clamonacc.service disabled enabled clamav-daemon.service enabled enabled clamav-freshclam.service enabled enabled console-getty.service disabled disabled console-setup.service enabled enabled container-getty@.service static - cron.service enabled enabled cryptdisks-early.service masked enabled cryptdisks.service masked enabled dbus-org.freedesktop.hostname1.service alias - dbus-org.freedesktop.locale1.service alias - dbus-org.freedesktop.login1.service alias - dbus-org.freedesktop.timedate1.service alias - dbus.service static - debug-shell.service disabled disabled dm-event.service static - dpkg-db-backup.service static - e2scrub@.service static - e2scrub_all.service static - e2scrub_fail@.service static - e2scrub_reap.service enabled enabled
Поиск службы
По имени
systemctl list-unit-files 'networking*'
Пример вывода:
# systemctl list-unit-files 'networking*'
UNIT FILE STATE PRESET
networking.service enabled enabled