Процессы — это по сути работающие программы, которые могут быть запущены как самой системой, так и любым пользователем. Данные программы могут работать как в фоновом режиме и быть невидимыми, так и на переднем плане и иметь своеобразный видимый интерфейс. Для выполнения каждого процесса приходится выделять память и процессорное время.
Для чего необходимо изучать процессы?
Бывает так, что компьютер “тормозит” и не позволяет выполнять некоторые важные операции. Такое происходит, когда какой-нибудь процесс занимает большую часть оперативной памяти или процессорного времени. Зная основы работы с процессами можно отключить мешающий процесс и разгрузить компьютер. Существуют ситуации, когда запущенная программа перестает реагировать на действия пользователя и никак не удается ее закрыть штатным способом. В данном случае достаточно найти процесс данной программы и принудительно закрыть программу.
К процессам часто обращаются, когда компьютер содержит вирус или другое вредоносное ПО. Взглянув на процессы можно найти аномальное поведение системы и найти вредоносное ПО. Поэтому даже обычному пользователю необходимо знать основы работы с процессами. Прежде, чем мы рассмотрим как управлять процессами, перечислим основные параметры, характерные для каждого процесса:
Полезные программы для Linux #1 — мой базовый набор
PID — (process ID) идентификатор каждого процесса
PPID — (parent process ID) идентификатор родительского процесса. Процесс может порождать и другие процессы.
UID, GID — реальные идентификаторы пользователя и его группы, запустившего данный процесс.
EUID, EGID — эффективные идентификаторы пользователя и его группы. В 16-ом уроке мы изучали признаки доступа SUID, SGID. Когда пользователь запускает файл с установленными признаками, то эффективные идентификаторы (EUID, EGID) равны реальным идентификаторам (UID, GID) владельца данного файла. То есть система смотрит на эффективные идентификаторы и таким образом узнает, что был установлен признак SUID/SGID и предоставляет доступ пользователю. Если пользователь запустит любой другой файл без установленного признака SUID/SGID, то реальные и эффективные идентификаторы всегда равны.
Priority/Nice — приоритет и относительный приоритет. Служит для выделения большего или меньшего процессорного времени для определенного процесса. Разрешается менять только относительный приоритет (Nice). Его значение варьируется от -20 до +19. Чем ниже значение относительного приоритета, тем больше процессорного времени выделяется для данного процесса.
STAT — состояние процесса. В таблице представлены обозначения процессов:
Состояние | Описание |
R (runnable) | Работающий процесс |
S (sleeping) | Процесс в состоянии ожидания |
T (stopping) | Остановленный процесс |
Z (zombie) | Завершившийся процесс |
В (uninterruptible) | Непрерывный процесс |
7 лучших LINUX программ, которыми я пользуюсь!
Кроме того, помимо состояния самого процесса можно увидеть и дополнительную информацию (индикатор), которая следует сразу за символом состояния:
Индикатор | Описание |
Процесс с высоким приоритетом | |
N | Процесс с низким приоритетом |
L | Процесс имеет страницы, заблокированные в памяти |
s | Процесс является лидером сессии |
l | |
+ | Процесс работает на переднем плане |
Как же можно увидеть все процессы?
Для этого существует команда ps. Однако в “чистом виде” она обычно не используется, поэтому применяются различные опции. Она имеет множество опций, причем некоторые используются с дефисом, а некоторые — без. Поэтому предлагаю просто запомнить наиболее используемые команды.
- Список всех процессов — ps aux
- Отображение всех процессов, включая и PPID — ps -ef
- Отображение дерева процессов, то есть схематическое отображение от какого процесса был порожден конкретный процесс — ps auxf
- Отображение дерева процессов, включая PPID — ps ajxf
- Более короткий вывод дерева процессов — pstree
- Отображение процессов конкретного пользователя — ps U пользователь
Вывод каждой команды частично отличается, частично совпадает. Кроме того, отображаются ненужные данные.
Есть ли возможность использования универсальной и более удобной, команды чтобы не использовать тяжело запоминаемые опции?
Конечно, такая команда существует и вот как она выглядит — ps -eo параметр_1, параметр_2, и так далее. Например, нам необходимо отобразить только пользователя и его процесс — ps -eo user,cmd
Теперь отобразим пользователя, его UID, GID, идентификатор процесса, родительский идентификатор и название процесса — ps -eo user,uid,gid,pid,ppid,cmd
Выводом команды можно управлять и исключить ненужную информацию. Список параметров доступен на 1-ой странице встроенного мануала.
Завершение процесса
Теперь, когда мы знаем номер процесса и программу, то мы можем ее принудительно закрыть.
Как это сделать?
С помощью команд kill и killall. Упрощенный формат команд выглядит так:
kill PID_процесса
killall имя_процесса
Есть небольшой нюанс в работе команд kill/killall. Процесс можно закончить разными способами. Для этого существуют различные сигналы.Чтобы узнать список всех доступных сигналов введи команду kill -l
Нам достаточно запомнить всего лишь 2 сигнала: TERM и KILL.
TERM — “мягкое” завершение процесса и порожденных им процессов, все открытые файлы закрываются и ресурсы системы освобождаются.
KILL — “грубое” завершение процесса. Все порожденные процессы останутся незавершенными и может привести к непредсказуемым последствиям. Поэтому данный способ лучше применять лишь в крайних случаях.
Как указать такой сигнал?
По умолчанию всегда используется TERM, если нужно указать другой сигнал то используется следующий формат:
kill -9 PID_процесса
kill KILL PID_процесса
Цифра означает номер сигнала при выводе списка командой kill -l.
Динамическое отображение процессов.
Команда ps полезна при поиске определенного процесса и общего представления загрузки системы. Однако у нее есть небольшой недостаток — выходные данные команды не обновляются. В то время, пока мы смотрим на процесс, он может уже закончится. То есть команда ps попросту делает мгновенный “снимок” процессов на момент исполнения команды.
Как получить автоматически обновляющийся список процессов?
С помощью команды top
В реальном режиме времени программа top сортирует и отображает процессы системы и пользователей, показывает использование оперативной памяти и загрузку процессора. Кроме того, в интерактивном режиме она принимает команды для управления выводом команды.
Что это за команды?
- Завершение процесса — клавиша “к”, затем введите номер процесса
- Отображение процессов конкретного пользователя — клавиша “U”, затем введите UID или имя пользователя
- Помощь — клавиша “h” или “?”
- Выход из программы — клавиша “q” или Ctrl + C. Программа поддерживает много команд, поэтому предлагаю ознакомиться с ними самостоятельно при желании.
Просмотр открытых/задействованных файлов
Как в Linux посмотреть конфигурацию / параметры компьютера
В Linux множество средств анализа и получения информации о системе, однако не все программы широко известны. Особенно — новичкам!
В GNU/Linux довольно много средств для мониторинга и просмотра параметров системы: как программных, так и аппаратных. В данной заметке мы сконцентрируемся на “железе”. Начнём с утилит, которые можно найти практически в любом дистрибутиве.
Спец. файлы Linux с конфигурацией компьютера
Во-первых, можно узнать практически всё необходимое из файлов, размещённых на
procfs . Так, например, информацию о процессоре можно узнать из файла /proc/cpuinfo :
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Virtual CPU a7769a6388d5 stepping : 2 microcode : 0x1 cpu MHz : 2394.454 cache size : 16384 KB flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat bugs : bogomips : 4788.90 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
Также можно посмотреть подключённые разделы дисков в файле /proc/partitions :
$ cat /proc/partitions major minor #blocks name 253 0 26214400 vda 253 1 26213105 vda1
Аналогично имеется файл для памяти – /proc/meminfo :
$ cat /proc/meminfo MemTotal: 1016020 kB MemFree: 76772 kB MemAvailable: 403408 kB Hugepagesize: 2048 kB DirectMap4k: 79728 kB DirectMap2M: 968704 kB
– подробнейшее описание текущего состояния памяти, однако, ничего про “железо”.
Стандартные утилиты для просмотра конфигурации
Всё также посмотреть состояние памяти можно командой free:
$ free total used free shared buff/cache available Mem: 1016020 363776 79148 46016 573096 408428 Swap: 0 0 0
Посмотреть все устройства, подключенные через PCI-шину (и опознанные Linux-ом),
можно командой lspci:
$ lspci 00:00.0 Host bridge: Intel Corporation 440FX — 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon 00:06.0 Unclassified device [00ff]: Red Hat, Inc Virtio RNG
Аналогично можно увидеть все подключённые через USB и опознанные устройства
командой lsusb :
$ lsusb Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Узнать занятое и свободное место на дисковом пространстве можно через утилиту
df:
$ df -h Filesystem Size Used Avail Use% Mounted on udev 477M 0 477M 0% /dev tmpfs 100M 11M 89M 11% /run /dev/vda1 25G 2.9G 21G 13% /
Аналогично графическому монитору процессов, в Linux имеется консольный монитор,
который присутствует практически в каждом дистрибутиве – top:
$ top top — 05:40:59 up 415 days, 10:10, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1016020 total, 74996 free, 363696 used, 577328 buff/cache KiB Swap: 0 total, 0 free, 0 used. 408580 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21177 root 20 0 214384 15916 5816 S 0.3 1.6 1:30.57 x 1 root 20 0 185308 5028 3084 S 0.0 0.5 14:38.10 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:04.38 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 7:12.46 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H .
- В первой строке: время работы системы, количество активных пользователей,
среднюю нагрузку за минуту, 5, 15. - Вторая строка — статистика по процессам: всего, активные, спящие, зомби.
- Третья про CPU: в пользовательском пространстве, системном, простой и т.д.
Далее — аналогично free . Ну и таблица процессов, упорядоченная по умолчанию по
загрузке процессора.
Также существует расширенная версия — htop. Установить её можно через одноимённый пакет.
Дополнительные программы для просмотра конфигурации компьютера в Linux
Следующие программы доступны в репозиториях Linux дистрибутивов, но, скорее всего, в стандартной поставке вы их не найдёте.
lshw — список подключенных устройств
Получить подробное описание подключенных устройств можно командой lshw :
$ sudo lshw -short H/W path Device Class Description ================================================== system Standard PC (i440FX + PIIX, 1996) /0 bus Motherboard /0/0 memory 96KiB BIOS /0/400 processor Virtual CPU a7769a6388d5 /0/1000 memory 1GiB System Memory /0/1000/0 memory 1GiB DIMM RAM /0/100 bridge 440FX — 82441FX PMC [Natoma] /0/100/1 bridge 82371SB PIIX3 ISA [Natoma/Triton II] /0/100/1.1 storage 82371SB PIIX3 IDE [Natoma/Triton II] /0/100/1.2 bus 82371SB PIIX3 USB [Natoma/Triton II] /0/100/1.2/1 usb1 bus UHCI Host Controller /0/100/1.2/1/1 input QEMU USB Tablet /0/100/1.3 bridge 82371AB/EB/MB PIIX4 ACPI /0/100/2 display GD 5446 /0/100/3 ens3 network Virtio network device /0/100/4 storage Virtio block device /0/100/5 generic Virtio memory balloon /0/100/6 generic Virtio RNG /0/1 scsi1 storage /0/1/0.0.0 /dev/cdrom disk DVD reader
– таким деревом выводятся устройства различных шин / форматов. Чтобы получить
более подробный список, стоит поднять привелегии пользователя, то есть
sudo lshw и убрать ключ -short .
Также, если добавить ключ -html , можно получить html-файл, который
просмотреть через веб-браузер.
inxi — комбайн для получения различной информации о системе
Получить информацию о модели ноутбука / компьютера:
$ inxi -M Machine: System: QEMU product: Standard PC (i440FX + PIIX 1996) v: pc-i440fx-2.10 Mobo: N/A model: N/A Bios: Sea v: . qemu-project.org date: 04/01/2014
Информация о процессоре:
$ inxi -C CPU: Single core Virtual a7769a6388d5 (-UP-) cache: 16384 KB speed: 2394 MHz (max)
Вывести модель и характеристики видео-карты:
Получить модель аудио-карты:
$ inxi -A Audio: Card-1 Intel 8 Series HD Audio Controller driver: snd_hda_intel Sound: ALSA v: k4.4.0-21-generic Card-2 Intel Haswell-ULT HD Audio Controller driver: snd_hda_intel
Также есть ключи -N — для сети и -D — для дисков. Можно комбинировать ключи,
например, inxi -MCGAND , либо же использовать ключ -b — для получения
той же информации кратко, либо -F — полностью (считай сокращение списка ключей).
Это далеко не полный список программ под Linux для просмотра конфигурации / параметров компьютера, но, думаю, на первое время хватит 🙂
Источник: 900913.ru
Просмотр оборудования в Ubuntu
В Linux существует множество вариантов просмотра информации о железе, на котором работает операционная система. В данной заметке я расскажу, как быстро посмотреть в Ubuntu состав оборудования, такого как процессор, память, диски и т.д. Рассмотрю несколько наиболее известных программ для этого, а так же то, что может показать сама операционная система.
Если вы только планируете устанавливать ubuntu, то можете воспользоваться моей подробной статьей на этот счет — установка ubuntu server. Так же вам может быть интересен мой обзор и сравнение сервера убунту с другими linux системами — Ubuntu Server — обзор для начинающих, сравнение, отзывы.
Общая информация о железе
Самый простой и быстрый способ посмотреть оборудование в Ubuntu — воспользоваться утилитой lspci, которая по умолчанию присутствует в системе даже в минимальной установке.
lspci