В данном материале мы рассмотрим, как основные команды, предусмотренные в дистрибутивах Linux по умолчанию для просмотра, управления и мониторинга текущих процессов, так и сторонние средства, дающие более расширенный доступ к просмотру и анализу текущих системных процессов.
Аренда выделенного сервера
Используйте готовые решения, чтобы быстро подобрать оптимальный для себя вариант аренды сервера
- Intel® Xeon® E3-1230 v2
3.3 , 4 ядра - 8Gb DDR3
- 2 x SSD: 240Gb, Ent
Недорогой, выделенный сервер, для задач средней сложности.
- Intel® Xeon® E3-1270 v2
3.5 , 4 ядра - 16Gb DDR3
- 2 x SSD: 240Gb, Ent
- 1 x SATA3: 1 TB
Хорошее решение, для задач средней ложности.
Любой выбранный сервер, всегда можно улучшить в процессе работы, если вы поймете что вам не достаточно производительности.
- Intel® Xeon® E3-1270 v6
3.8 , 4 ядра - 32Gb DDR4
- 2 x SSD: 480Gb, Ent
- 1 x SATA3: 2 TB
Аренда сервера для удаленного доступа и 1С.
Загрузка процессора до 70-100% при открытии диспетчера задач Windows10?
Позволит экономить и безопасно работать на арендованном сервере, через удаленный рабочий стол и Веб браузер.
Работа с запущенными процессами
На Linux-серверах, как и любых других серверных машинах, имеется возможность запуска приложений, которые компьютер рассматривает в виде процессов. При обработке системой закадрового, низкоуровневого управления жизненными циклами процессов, пользователь зачастую нуждается в другом способе взаимодействия с ОС, чтобы иметь возможность управлять процессами на высоких уровнях. Для начала рассмотрим простейшие моменты, связанные с управлением процессами средствами инструментов, интегрированных в дистрибутивы Linux.
Команда top
Это наиболее простой способы выяснить, какие процессы запущены на серверной машине в настоящее время:
- top
top — 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
Swap: 0k total, 0k used, 0k free, 258976k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
В верхней части выводимой информации предоставлена статистика работы системы, а если конкретнее, нагрузка на систему и число выполняемых задач. В нижней части отображается информация по запущенным процессам и статистики их использования.
РЕШЕНИЕ.системные прерывания, процессор 100%, майнер вирус.
Команда htop
Посредством этой усовершенствованной версии команды top можно получать более развернутые данные по процессам. Она доступна в хранилищах. Для установки используем:
sudo apt-get install htop
Использование ps для получения процессов в виде списка
Посредством приведенных выше команд можно получить удобный интерфейс, позволяющий мониторить запущенные процессы, который аналогичен более привычному для многих диспетчеру задач. Однако такого инструментария далеко не всегда достаточно в плане гибкости и не позволяют адекватно охватывать требуемые системные сценарии.
Для получения более полной картины процессов можно запустить такую команду:
- ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24188 2120 ? Ss 14:28 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:28 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:28 0:00 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S 14:28 0:00 [migration/0]
root 7 0.0 0.0 0 0 ? S 14:28 0:00 [watchdog/0]
root 8 0.0 0.0 0 0 ? S< 14:28 0:00 [cpuset]
root 9 0.0 0.0 0 0 ? S < 14:28 0:00 [khelper]. . .
Данные параметры отображают ps процессы, которые принадлежат всем пользователям, вне зависимости от пользовательского терминала.
Использование PID процессорных идентификаторов
В Unixо-подобных системах для каждого процесса существует собственный PID-идентификатор, посредством которого ОС способна отслеживать и идентифицировать любую активность процессов. Чтобы узнать идентификатор того или иного процесса можно воспользоваться следующей командой:
Таким образом, можно запросить идентификатор процесса и вернуть его. В процессе запуска первый запущенный процесс называется init с PID 1. Он отвечает за инициацию/запуск всех остальных системных процессов. Существует такое понятие, как родительский процесс, который ответственен за запуск других процессов.
В случае, когда порождающие процессы прекращаются, дочерние процессы также прекращают работу. PID родительских процессов называют PPID. Когда пользователь общается с операционной системой и нуждается в чтении процессов, имеет место перевода идентификаторов в имена процессов и наоборот. Именно для этого различные утилиты отправляют свой PID.
Один из наиболее распространенных способов передачи сигналов посредством PID является команда kill. По умолчанию ее функционал сводится к завершению процесса (kill PID_of_target_process). При выполнении данной команды всем процессам отправляется TERM-сигнал. Таким образом, рабочая программа выполняет требуемые операции по очистке и безопасно завершает работу.
Наблюдаем за процессами посредством утилиты strace
Утилита strace присутствует во многих Linux-дистрибутивах по умолчанию и зачастую используется в целях отладки, обучения и диагностики. Посредством strace можно решать самые разные задачи, включая мониторинг старта/завершения процессов, а также избавить себя от проблем с поиском возникших программных сбоев без доступа к исходным кодам.
Также данную программу можно использовать при необходимости получения/отправки bug-репортов для разработчиков того или иного ПО. Средствами данного инструмента можно воочию увидеть, как именно работает запущенная программа в подробностях.
Особенности запуска
Системный вызов представляет собой обращение программ к системному ядру для выполнения того или иного действия. Такие вызовы необходимы потому, что процесс не способен взаимодействовать с системой непосредственным образом.
Работа представленной утилиты заключается в том, что она отслеживает системные вызовы конкретных процессов и получаемые ими сигналы. В принципе может иметь место ситуация, в которой процессы не посылают никаких системных вызовов. В таких случаях strace, естественно, не способна ничего отследить.
Для запуска утилиты strace используется команда
После ее запуска происходит запуск программы program_name с выведением в поток стандартных выводов сообщений о выполняемых вызовах в системе. Существуют текстовые редакторы, такие как Vim, которые оснащены цветной подсветкой вывода strace, а это существенно упрощает анализ крупных файлов с трассировочными текстами.
Как вариант strace может запускаться для трассировки уже запущенных процессов. Для этого как раз потребуется PID требуемого процесса, о чем мы говорили выше. Этот идентификатор необходимо передать, как параметр в опциях –p для утилиты:
- strace -o trace_output.txt -p 1234
Анализ вывода – наиболее полезная функция данной программы. Структура для строй вывода strace предполагает, что сначала идет имя системного вызова, после чего в круглых скобках будет выведен список параметров, которые переданы вызову. Последний выводящийся информационный блок, который отображается после знака «=», отображает код, по которому завершается системный вызов. В качестве примера приведем несколько строк кода с анализом вывода посредство strace:
- execve(«/bin/ls», [«/bin/ls»], [/* 37 vars */]) = 0
- brk(0) = 0x9841000
- access(«/etc/ld.so.nohwcap», F_OK) = -1 ENOENT (No such file or directory)
- mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb779e000
- access(«/etc/ld.so.preload», R_OK) = -1 ENOENT (No such file or directory)
- open(«/etc/ld.so.cache», O_RDONLY) = 3
- fstat64(3, ) = 0
- mmap2(NULL, 78866, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb778a000
- close(3) = 0
- Собрать свой сервер
- Готовые решения
Источник: www.depohost.ru
Определить, какой процесс / программа запускает мой процесс / программу
Есть ли способ в коде определить, какой процесс или приложение запускает мой процесс или приложение. Любые фрагменты кода .net, vb6 или c ++ подойдут.
задан 16 сен ’09, 16:09
Условия Google, которые я рекомендую (но не пробовал): окна находят родительский процесс . моя логика заключается в том, что Linux поддерживает pid родительского процесса этого процесса, поэтому, возможно, Windows делает то же самое. — San Jacinto
5 ответы
Assembly.GetEntryAssembly()
возвращает сборку, с которой был запущен текущий запущенный процесс сборки. Но если у вас работает более одного процесса, я не верю, что есть способ определить, какой из них запустился первым .
чтобы получить версию начальной сборки,
Assembly.GetEntryAssembly().GetName().Version
Вы можете использовать это как основу Процессы создания снимка и просмотра. И пройдите до корневого процесса!
Джеймс Браун показывает в своем «ProcessTree» фрагмент, как это сделать:
Хотя код очень Си-иш, он очень чистый и понятный.
Он в основном звонит ZwQuerySystemInformation() который возвращает SYSTEM_PROCESSES структура во втором аргументе. Эта структура содержит информацию о процессе, в т.ч. член позвонил InheritiedFromProcessId который является идентификатором родительского процесса.
Напомним, что ZwQuerySystemInformation не является частью Windows SDK, это функция NTDLL и может быть изменена или даже просто удалена из будущих версий Windows [1]. [1]: msdn.microsoft.com/en-us/library/ms725506(VS.85).aspx — Варгас
public class ParentProc < [DllImport(«KERNEL32.dll»)] //[DllImport(«toolhelp.dll»)] public static extern int CreateToolhelp32Snapshot(uint flags, uint processid); [DllImport(«KERNEL32.DLL»)] //[DllImport(«toolhelp.dll»)] public static extern int CloseHandle(int handle); [DllImport(«KERNEL32.DLL»)] //[DllImport(«toolhelp.dll») public static extern int Process32Next(int handle, ref ProcessEntry32 pe); [StructLayout(LayoutKind.Sequential)] public struct ProcessEntry32 < public uint dwSize; public uint cntUsage; public uint th32ProcessID; public IntPtr th32DefaultHeapID; public uint th32ModuleID; public uint cntThreads; public uint th32ParentProcessID; public int pcPriClassBase; public uint dwFlags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] public string szExeFile; >; public static Process FindParentProcess() < int SnapShot = CreateToolhelp32Snapshot(0x00000002, 0); //2 = SNAPSHOT of all procs try< ProcessEntry32 pe32 = new ProcessEntry32(); pe32.dwSize = 296; int procid = System.Diagnostics.Process.GetCurrentProcess().Id; while(Process32Next(SnapShot, ref pe32) != 0) < string xname = pe32.szExeFile.ToString(); if(procid==pe32.th32ProcessID) < return System.Diagnostics.Process.GetProcessById(Convert.ToInt32(pe32.th32ParentProcessID)); >> >catch(Exception ex)< throw new Exception(System.Reflection.MethodBase.GetCurrentMethod() + » failed! [Type:»+ex.GetType().ToString()+», Msg:»+ex.Message+»]»); >finally < CloseHandle(SnapShot); >return null; > >
Если производительность не является большой проблемой, вы также можете использовать WMI и, таким образом, оставаться управляемым на 100% (C # / VB.NET), если вам не все равно.
Пример (только запросы WMI, фактический код C # / VB.NET опущен):
// First get figure the ID of your parent process SELECT ParentProcessID FROM Win32_Process WHERE ProcessID = // Than use that the get any attribute, e.g. the Name, of it SELECT Name FROM Win32_Process WHERE ProcessID =
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками c# .net c++ vb6 or задайте свой вопрос.
ADV
Последние вопросы
Связанные теги
stackovergo.com 2020–2023, под лицензией куб.см по-са 3.0 с указанием авторства. | Персональные данные | Cookies политики
Источник: stackovergo.com
Что за программа для Windows — Process explorer и как ею пользоваться?
Диспетчер задач Windows очень ограничен – гораздо лучшей альтернативой является бесплатный Process Explorer Microsoft. Программа выдает подробнейшую информацию обо всех запущенных процессах, включая владельца, использование памяти, задействованные библиотеки и т.д.
Что это за программа?
Справка! Process Explorer — это бесплатный диспетчер задач Windows и инструмент мониторинга системы, который детализирует, какие программы в системе пользователя имеют определенный открытый файл или каталог.
Обозреватель процессов предоставляет более наглядные и подробные отчеты, чем диспетчер задач Windows.
Это часть Sysinternals Process Utilities, имеющая выбор инструментов, чтобы предоставить программе больше контроля и вариантов для повышения производительности Windows.
Process Explorer можно использовать для отслеживания проблем. Например, он предоставляет средство для перечисления или поиска именованных ресурсов, которые хранятся процессом или всеми процессами. Это может быть использовано для отслеживания того, что держит файл открытым и предотвращения его использования другой программой.
В качестве другого примера, он может показать командные строки, используемые для запуска программы, что позволяет различать идентичные процессы.
Как и диспетчер задач, он может показать процесс, который исчерпывает ЦП, но в отличие от диспетчера задач программа демонстрирует, какой поток использует ЦП, эта информация даже не доступна в отладчике.
Как пользоваться этим софтом для Windows?
Внимание. Process Explorer имеет два окна с подробной информацией.
В верхнем окне отображается список активных процессов в режиме реального времени, описание того, что делают процессы, процессор и использование памяти, и название компании программного обеспечения.
Процессы настраиваются в иерархическом представлении с родительским процессом сверху и дочерними процессами под ними. Он может настроить, какую информацию столбцы включают на основе предпочтений. Кроме того, IT-специалисты могут организовать строки в алфавитном или числовом порядке.
Верхняя панель Process Explorer также содержит линейные диаграммы, цветовые коды и символы, которые можно настроить. Инструмент имеет область, которая показывает:
- все библиотеки динамической компоновки;
- дескрипторы;
- значки;
- командные строки;
- полные пути изображения;
- статистику памяти;
- атрибуты безопасности и многое другое.