linux
Как узнать какой файл/скрипт запускает процесс ? В Windows просто открыть расположение файла, а в линукс ?
Нужно узнать откуда запускается этот cryptonight malware
mysite 224079 3.9 0.0 1883876 46716 ? Sl Sep26 3186:59 ./httpd -a cryptonight -o 178.32.145.31:8005 -u
-
Вопрос заданболее трёх лет назад
-
12661 просмотр
Комментировать
Решения вопроса 2
Посмотреть где лежит исполняемый файл процесса:ll /proc/{PID}/exe
Посмотреть кто его родитель:ps -o ppid= -p {PID}
@morihaos
На 99% вопросов уже есть ответы в инетке…
Привет,
1. Сначала вывод процессовс разными вариантами по ключами, как кому надо. К примеру:ps -aux
Читай:man ps
2. Для того чтобы узнать где именно располагается файл, можно использовать:pwdx PID
где PID это номер процесса.
Можно и через lsof узнать:lsof -p PID | grep cwd
где PID это тот же номер процесса.
Пригласить эксперта
Ответы на вопрос 1
ls -l /proc/$(pidof prog_name)/exe
Комментировать
Похожие вопросы
-
Показать ещё
Загружается…
26 мая 2023, в 02:01
10000 руб./за проект
26 мая 2023, в 01:06
500 руб./за проект
26 мая 2023, в 00:08
2500 руб./за проект
Минуточку внимания
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
1 |
|
22.10.2010, 17:58. Показов 9156. Ответов 30
помогите написать программу которая находит файл по его pid и убивает его
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
22.10.2010, 18:17 |
2 |
находит файл по его pid и убивает его файлы по pid`у не ищут, и тем более не убивают.
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
22.10.2010, 18:22 [ТС] |
3 |
ну вообщем нужно найти процесс по его Pid и удалить его
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
22.10.2010, 18:45 |
4 |
pid процесса — это и так его идентификатор. процесс убивается по pid`у. или тебе нужно найти определить pid процесса зная его имя?
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
24.10.2010, 22:16 [ТС] |
5 |
мне известно имя , по нему определить пид и убить процесс , это надо реализовать на си , чтобы когда в консоле я вызывал программу она спрашивала только название
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
24.10.2010, 22:29 |
6 |
мне известно имя , по нему определить пид и убить процесс выродил..наконец-то
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
24.10.2010, 22:31 [ТС] |
7 |
просто мне только щас уточнили задание
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
24.10.2010, 22:36 |
8 |
я так понимаю, системные утилиты нельзя вызывать из кода программы?
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
24.10.2010, 22:52 [ТС] |
9 |
я так понимаю, системные утилиты нельзя вызывать из кода программы? я думаю можно
0 |
niXman 3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
||||
24.10.2010, 23:02 |
10 |
|||
это все упрощает. man pidof из этого понимаем, что если выполнить в консоле: pidof process_name, то получим его pid. дальше убиваем его.
из f читаем строку и приводим ее к целому.
1 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
24.10.2010, 23:09 [ТС] |
11 |
а как в си реализовать убийство процесса?
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
24.10.2010, 23:13 |
12 |
путем чтения «man 2 kill» зы
1 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
28.10.2010, 22:18 [ТС] |
13 |
а как на сделать чтобы я вводил в программу на си только имя процесса , а программа сама определяла пид и убивала?
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
28.10.2010, 23:39 |
14 |
найти процесс по имени и определить его PID.
0 |
suv121 4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
||||
29.10.2010, 23:54 [ТС] |
15 |
|||
а можно пример кода Добавлено через 10 часов 16 минут
какие библиотеки нужно ещё подключить и будет ли работать эта программа?
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
30.10.2010, 00:53 |
16 |
getpid(a); это что такое? я же вам написал каким образом определяется pid по имени процесса. Добавлено через 1 минуту
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
30.10.2010, 10:16 [ТС] |
17 |
а можете в мой код вставить нахождение пида по имени
0 |
3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
|
30.10.2010, 11:48 |
18 |
а можете в мой код вставить нахождение пида по имени во первых — не понятно что это. вопрос?
0 |
4 / 4 / 0 Регистрация: 04.12.2009 Сообщений: 134 |
|
30.10.2010, 12:32 [ТС] |
19 |
я не понимаю как связать FILE* f = popen(«/bin/pidof process_name», «r»); с введенным мною именем процесса и как преобразовать f к целочисленному виду
0 |
niXman 3211 / 1459 / 73 Регистрация: 09.08.2009 Сообщений: 3,441 Записей в блоге: 2 |
||||
30.10.2010, 19:00 |
20 |
|||
Решениевот
1 |
Содержание
- Как получить подробные сведения о процессах в Windows 7
- Как узнать PID (идентификатор процесса) в Windows
- Как узнать PID (идентификатор процесса) в диспетчере задач
- Как узнать PID (идентификатор процесса) в командной строке
- Finding the process ID
- Task Manager
- The tasklist command
- TList utility
- The .tlist debugger command
- PowerShell Get-Process command
- CSRSS and user-mode drivers
- Как узнать какой порт использует программа
- Определения порта программы стандартными средствами Windows
- Поиск идентификатора процесса PID
- Поиск порта процесса
- Программы для просмотра сетевых соединений
- TCPView
- CurrPorts
- Поиск и сравнение процесса
- Решение
Как получить подробные сведения о процессах в Windows 7
В статье «Анализ использования памяти с помощью Монитора ресурсов Windows 7» я рассказывал, как использовать Монитор ресурсов (Resource Monitor) для анализа распределения памяти в Windows 7. При этом я упомянул, что графа «Образ» (Image) в таблице «Процессы» (Processes) на вкладке «Память» (Memory) позволяет идентифицировать процессы приложений по имени исполняемого файла. Например, процесс «notepad.exe» со всей очевидностью принадлежит Блокноту (Notepad).
Однако далеко не все процессы можно так легко опознать, и я получил уже немало вопросов от читателей по этому поводу. С идентификацией менее очевидных процессов поможет Диспетчер задач (Task Manager), и в этой статье я расскажу, как его использовать.
Запуск Диспетчера задач
Запустить Диспетчер задач в Windows 7 можно несколькими способами. Во-первых, можно нажать на панели задач правой кнопкой мыши и выбрать опцию «Запустить диспетчер задач» (Start Task Manager). Во-вторых, можно воспользоваться клавишной комбинацией [Ctrl]+[Shift]+[Esc]. И наконец в-третьих, можно запустить исполняемый файл Диспетчера задач из строки поиска меню «Пуск» (Start) — для этого введите taskmgr и нажмите [Enter]. В открывшемся окне выберите вкладку «Процессы» (Processes).
На вкладке «Процессы» есть графа «Описание» (Description, рис. A), в которой приводятся подробные сведения о каждом процессе.
Добавление столбцов на вкладке «Процессы»
Чтобы получить более подробные сведения о процессах Windows 7, воспользуйтесь командой «Выбрать столбцы» (Select Columns) в меню «Вид» (View). Появится диалоговое окно «Выбор столбцов страницы процессов» (Select Process Page Columns), показанное на рис. B. Отсюда можно добавить на вкладку «Процессы» дополнительные колонки — например, столбец «Путь к образу» (Image Path Name), в котором указывается полный путь к файлу, инициировавшему запущенный процесс Windows 7, или графу «Командная строка» (Command Line), где приводится полная команда для запуска процесса со всеми параметрами и переключателями.
Помимо этих столбцов, на вкладку «Процессы» можно добавить и многие другие. Всего в окне «Выбор столбцов страницы процессов» доступно более 30 опций, описание которых не входит в задачи данной статьи. Узнать о назначении всех колонок можно из справочной статьи «Что означают столбцы памяти Диспетчера задач?» на сайте Microsoft.
Опция «Открыть место хранения файла»
Помимо добавления на вкладку столбцов «Путь к образу» и «Командная строка», можно нажать на процессе правой кнопкой мыши и выбрать опцию «Открыть место хранения файла» (Open File Location). При этом откроется папка со всеми файлами, относящимися к данному процессу. К примеру, для процесса «hqtray.exe» на моем компьютере открывается папка «VMware Player» (рис. C).
Еще один источник информации о процессе Windows 7 — окно свойств, которое можно вызвать, нажав на процессе правой кнопкой мыши и выбрав опцию «Свойства» (Properties). Полезные сведения содержатся на вкладке «Подробно» (Details, рис. D).
Если вас интересует процесс «Svchost.exe», можно воспользоваться утилитой командной строки Tasklist, чтобы узнать о нем поподробнее. «Svchost.exe» — общее имя процесса для всех служб, запускаемых из динамически подключаемых библиотек (DLL). Чтобы узнать, каким службам принадлежит этот процесс, откройте командную строку (Command Prompt) и выполните следующую команду:
Вы получите список всех запущенных процессов, в котором приводятся сведения о службах для каждого процесса «Svchost.exe» (рис. E).
Узнав имена служб, запомните идентификатор (PID) процесса «Svchost.exe». Теперь откройте вкладку «Службы» (Services) в Диспетчере задач и отсортируйте список по столбцу «ИД процесса» (PID). Найдите нужный идентификатор и посмотрите описание, чтобы понять назначение службы Windows 7 (рис. F).
Сведения, к сожалению, весьма скудные, но хотя бы позволяют понять, какая именно служба запустила процесс «Svchost.exe».
А вам приходилось использовать Диспетчер задач для поиска информации о запущенных процессах Windows 7? Поделитесь своим опытом в комментариях!
Автор: Greg Shultz
Перевод SVET
Оцените статью: Голосов
Источник
Как узнать PID (идентификатор процесса) в Windows
В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.
Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.
Все процессы имеют уникальные идентификаторы PID, которые автоматически присваиваются каждому процессу когда он создается в операционной системе, что позволяет ядру системы различать процессы.
При необходимости можно узнать PID (идентификатор процесса).
Как узнать PID (идентификатор процесса) в диспетчере задач
Теперь найдите нужный процесс, и в столбце ИД процесса будет отображен идентификатор соответствующего процесса.
Как узнать PID (идентификатор процесса) в командной строке
Также узнать PID (идентификатор процесса) можно используя командную строку.
Запустите командную строку и выполните следующую команду:
Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.
Также можно отобразить процессы в виде списка, для этого в командной строке выполните следующую команду:
Найдите нужный процесс, в строке PID будет отображен идентификатор процесса.
Используя рассмотренные выше действия, можно узнать PID (идентификатор процесса) в операционной системе Windows.
Источник
Finding the process ID
Each process running in Windows is assigned a unique decimal number called the process ID (PID). This number is used in a number of ways, for example to specify the process when attaching a debugger to it.
This topic describes how you can determine the PID for a given app using Task Manager, the tasklist Windows command, the TList utility, or the debugger.
Task Manager
Task Manager can be opened in a number of ways, but the simplest is to select Ctrl+Alt+Delete, and then select Task Manager.
In Windows 10, first click More details to expand the information displayed. From the Processes tab, select the Details tab to see the process ID listed in the PID column.
Click on any column name to sort. You can right click a process name to see more options for a process.
Some kernel errors may cause delays in Task Manager’s graphical interface.
The tasklist command
Use the built in Windows tasklist command from a command prompt to display all processes, their PIDs, and a variety of other details.
Use tasklist /? to display command line help.
TList utility
Task List Viewer (TList), or tlist.exe, is a command-line utility that displays the list of tasks, or user-mode processes, currently running on the local computer. TList is included in the Debugging Tools for Windows. For information on how to download and install the debugging tools, see Download Debugging Tools for Windows.
If you installed the Windows Driver Kit in the default directory on a 64 bit PC, the debugging tools are located here:
C:Program Files (x86)Windows Kits10Debuggersx64
When you run TList from the command prompt, it will display a list of all the user-mode processes in memory with a unique PID number. For each process, it shows the PID, process name, and, if the process has a window, the title of that window.
For more information, see TList.
The .tlist debugger command
If there’s already a user-mode debugger running on the system in question, the .tlist (List Process IDs) command will display a list of all PIDs on that system.
PowerShell Get-Process command
To work with automation scripts, use the Get-Process PowerShell command. Specify a specific process name, to see the process ID for that process.
For more information, see Get-Process.
CSRSS and user-mode drivers
To debug a user-mode driver running on another computer, debug the Client Server Run-Time Subsystem (CSRSS) process. For more information, see Debugging CSRSS.
Источник
Как узнать какой порт использует программа
На компьютере может быть установлено довольно много программ и все они резервируют в операционной системе определенный порт для взаимодействия с другим программным обеспечением по сети. В большинстве случаев пользователь заранее знает какой порт использует программа. Это может быть официально зарезервированный порт, под определенный сетевой протокол. Например почтовые программы используют для приема почты протокол POP3 и резервируют порт 110. Бывают неофициально резервируемые порты, например порт 1540 используемый агентом сервера 1С:Предприятие. Информацию об используемых неофициальных портах разработчики программного обеспечения указывают в документации.
Определения порта программы стандартными средствами Windows
Поиск идентификатора процесса PID
1. Открываем командную строку: сочетание клавиш и вводим команду CMD.
2. Запускаем tasklist и находим PID процесса.
Если необходимо отобразить полный список процессов, в том числе служебных и системных, необходимо использовать tasklist без аргументов.
Команда tasklist /fi «status eq running» найдет только те процессы, которые были запущенны программами. Это сократит список процессов и облегчит поиск.
Находим в списке нужную программу, например OneDrive.exe и запоминаем соответствующий PID.
Поиск порта процесса
Для получения списка используемых портов воспользуемся утилитой командной строки netstat.
B netstat были использованы слtдующие аргументы:
В результате будет получен довольно крупный список активных сетевых соединений, среди которых необходимо найти соединение с нужным PID.
В найденных результатах видно, что процесс c PID 15304 (программа OneDrive.exe) использует несколько сетевых портов: 11906, 11907, 11908.
Обращайте внимание на то, для какого траспортного протокола открыт порт: ТСР или UDP. Это информация будет важна, когда будете пробрасывать порт через межсетевой экран.
Программы для просмотра сетевых соединений
Этот способ подойдет для тех, кто не хочет погружаться в работу утилит командной строки Windows, а желает быстро и просто получить информацию о портах, которые использует программа, в графическом интерфейсе.
TCPView
CurrPorts
Из плюсов программы следует отметить наличие русского языка. Чтобы русифицировать программу нужно скачать отдельный файл русификации и положить его в папку с программой.
Источник
Поиск и сравнение процесса
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поиск процесса на c++
ПОМОГИТЕ ПЛИЗ. Программирую на с++ builder 6. Задача: 1-е проверить наличие процесса.
Поиск процесса по имени
Такой вопрос: я ввожу с клавиатуры имя процесса и можно ли проверить, запущен ли процесс с таким.
Поиск процесса по имени
Помогите написать программу поиска процесса по имени на MS Visual Studio 2010.
Добавлено через 1 час 0 минут
Модифицированный вариант с поиском файла в произвольной папке и обработкой каждого найденного PID для найденного имени файлапроцесса:
Решение
Добавлено через 5 минут
что-то типа
чтобы точнее, надо поизучать help по wmic process
Добавлено через 1 минуту
под XP wmic работает,
a ежели чо, проверить наличие SP3.
Добавлено через 4 часа 6 минут
ну вот, появился у меня windows под рукой, поэтому,
чтобы перезапустить процесс, зная его исполняемый путь
doit.bat:
Поиск окон процесса
Привет, подскажите пожалуйста какие функции надо использовать в моем случае, никак не могу найти.
Поиск процесса по имени
Здравствуйте, помогите пожалуйста перевести с Lua код поиск процесса по имени, на язык.
Поиск процесса по имени
Нужно написать функцию которая будет искать запущен ли процесс (имя процесса за ранние известно).
поиск скрытого процесса.
у меня в системе завёлся скрытый процесс я знаю только имя файла «000.exe» мне надо на нулевом.
Источник
Недорогой хостинг для сайтов
lsof — это утилита командной строки для всех Unix и Linux подобных операционных систем для проверки « списка открытых файлов » Само название «lsof» происходит от этой функции. Команда lsof в основном используется для получения информации о файлах, которые открываются различными процессами. Открытые файлы в системе могут быть разных типов, например, дисковые файлы, сетевые сокеты, именованные каналы и устройства. Эта отличительная особенность позволяет лучше отлаживать и понимать операционную систему Linux.
Когда мы выполняем минимальную установку CentOS / RHEL / Ubuntu / OpenSUSE , lsof не является частью установки по умолчанию, поэтому используйте следующую команду для установки команды или утилиты lsof
Для системы CentOS / RHEL,
~] # yum install lsof -y
Системы на основе Debian (Ubuntu / Linux Mint)
~] # apt install lsof -y
Для системы OpenSUSE,
~] # zypper install lsof
Команда «lsof» имеет множество опций и переключателей. Будет очень интересно изучить некоторые из этих важных. В этой статье мы обсудим 18 полезных примеров команды lsof для гиков Linux.
Пример: 1) Список всех открытых файлов вашей системы (lsof)
Выполнение команды lsof без каких-либо параметров выведет список всех открытых файлов вашей системы, принадлежащих всем активным процессам.
Просто набрав команду «lsof» без каких-либо параметров в командной строке, вы получите следующий результат:
Примечание . — Поскольку вывод lsof предоставляет много информации для STDOUT, лучше использовать вертикальную черту «|» операция, чтобы просмотреть этот вывод постранично.
~]# lsof | more
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 128 /
systemd 1 root rtd DIR 253,0 4096 128 /
systemd 1 root txt REG 253,0 1489960 50674818 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0
Приведенный выше вывод команды, если вы внимательно его изучите, предоставляет много информации со многими параметрами. Например, процесс « systemd » (который является процессом демона) имеет идентификатор процесса ( PID ) «1», пользователь — « root », файловый дескриптор ( FD ) — « cwd » и т. Д. FD предлагает множество values, поскольку известно, что дескриптор файла создается для любых открытых файлов автоматически в системах Linux. Ниже приведены некоторые из хорошо известных значений «FD», используемых для команд lsof.
Примечание . В некоторых случаях за «mem» следует число и различные символы, такие как «r», «u», «w» и т. Д. Эти символы: «r» для чтения, «w» для записи, «u» для прочти и напиши.
Наконец, « Type » в выводе команды указывает тип файла. Ниже приведены стандартные типы файлов в системах Linux.
Другие поля, которые отображаются вместе с этим, следующие:
- DEVICE –> Идентификатор устройства
- SIZE/OFF –> Фактический размер этого процесса (взятый во время выполнения)
- NODE –> Обычно номер inode каталога или родительского каталога
- NAME –> Путь или ссылка
Пример: 2) Список открытых файлов определенной файловой системы (/ proc)
Как вы знаете, « /proc » будет существовать только в течение срока службы ОС Linux, этот каталог содержит много важной информации, связанной с процессами. Выполнение «lsof» в / proc даст нам интересный результат для изучения,
~]# lsof /proc
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 9r REG 0,3 0 6690 /proc/1/mountinfo
systemd 1 root 11r REG 0,3 0 4026532018 /proc/swaps
systemd-j 462 root 10r REG 0,3 0 6936 /proc/sys/kernel/hostname
lsof 5186 root 3r DIR 0,3 0 1 /proc
lsof 5186 root 6r DIR 0,3 0 28890 /proc/5186/fd
~]#
Как упоминалось ранее, здесь фиксируется «lsof» самого «lsof», и отображаются все подробности. Помимо «lsof» существуют другие процессы, такие как systemd и rsyslogd, которые являются демонами, используемыми для свопинга, монтирования и т. Д.
Точно так же мы можем перечислить открытые файлы другой файловой системы, например /var/log,
~]# lsof /var/log/
Команда lsof становится очень удобной в ситуации, когда команды df и du показывают разное использование диска одной и той же файловой системы, с помощью команды lsof мы можем найти файлы, которые были удалены, когда они были открыты и использовались каким-то процессом,
~]# lsof /var/log | grep -i "deleted"
Вышеупомянутая команда предоставит вам pid файлов, которые были удалены, но все еще существуют в системе в удаленном состоянии. Итак, чтобы освободить место в файловой системе, мы можем безопасно убить процесс по его pid.
Пример: 3) Список открытых файлов для команды «lsof»
Само «lsof» выдает сообщение об ошибке,
~]# lsof lsof
lsof: status error on lsof: No such file or directory
lsof 4.87
Пример: 4) Список открытых файлов для пользователей (lsof -u <user_name>)
«Lsof» можно использовать для всех пользователей, вошедших в систему Linux. В этом случае «lsof» отобразит все открытые файлы для соответствующего пользователя.
Список всех открытых файлов для пользователя root
~]# lsof -u root | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 128 /
systemd 1 root rtd DIR 253,0 4096 128 /
systemd 1 root txt REG 253,0 1620416 51034677 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90632 33628275 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99
systemd 1 root mem REG 253,0 19888 33656455 /usr/lib64/libattr.so.1.1.0
…………………………………………………………
Список открытых файлов для пользователей без полномочий root, давайте посмотрим все открытые файлы для пользователя infoit,
~]# lsof -u infoit | more Или ~]# lsof -l -u infoit | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 2657 infoit cwd DIR 253,0 4096 128 / sshd 2657 infoit rtd DIR 253,0 4096 128 / sshd 2657 infoit txt REG 253,0 815520 34698340 /usr/sbin/sshd sshd 2657 infoit DEL REG 0,4 23850 /dev/zero sshd 2657 infoit mem REG 253,0 15472 33831639 /usr/lib64/security/pam_lastlog.so sshd 2657 infoit mem REG 253,0 68192 33628305 /usr/lib64/libbz2.so.1.0.6 sshd 2657 infoit mem REG 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99 sshd 2657 infoit mem REG 253,0 91496 33628319 /usr/lib64/libelf-0.163.so sftp-serv 2661 infoit mem REG 253,0 14608 33618582 /usr/lib64/libutil-2.17.so sftp-serv 2661 infoit mem REG 253,0 61856 33863972 /usr/lib64/liblber-2.4.so.2.10.3 sftp-serv 2661 infoit mem REG 253,0 344224 33863974 /usr/lib64/libldap-2.4.so.2.10.3 sftp-serv 2661 infoit mem REG 253,0 19512 33618298 /usr/lib64/libdl-2.17.so sftp-serv 2661 infoit mem REG 253,0 2516624 33657314 /usr/lib64/libcrypto.so.1.0.2k sftp-serv 2661 infoit mem REG 253,0 164432 33618285 /usr/lib64/ld-2.17.so sftp-serv 2661 infoit 0r FIFO 0,8 0t0 24046 pipe sftp-serv 2661 infoit 1w FIFO 0,8 0t0 24047 pipe sftp-serv 2661 infoit 2w FIFO 0,8 0t0 24048 pipe bash 2670 infoit cwd DIR 253,0 79 17157147 /home/infoit ………………………………………………………………………
Чтобы вывести список всех открытых файлов, кроме пользователя root, используйте ^ (символ каретки) перед пользователем root (lsof -u ^ root),
~]# lsof -u ^root | more
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dbus-daem 1662 dbus cwd DIR 253,0 4096 128 /
dbus-daem 1662 dbus rtd DIR 253,0 4096 128 /
dbus-daem 1662 dbus txt REG 253,0 441176 17133533 /usr/bin/dbus-daemon
dbus-daem 1662 dbus mem REG 253,0 57824 33618566 /usr/lib64/libnss_files-2.17.so
dbus-daem 1662 dbus mem REG 253,0 19512 33618298 /usr/lib64/libdl-2.17.so
dbus-daem 1662 dbus mem REG 253,0 398272 33628261 /usr/lib64/libpcre.so.1.2.0
dbus-daem 1662 dbus mem REG 253,0 2107816 33618292 /usr/lib64/libc-2.17.so
……………………………………………………………………………………………………………
Пример: 5) Список всех открытых файлов Интернета и домена UNIX (lsof -i -U)
Используйте параметр «-i -U» в команде lsof для вывода списка всех открытых файлов Интернета и домена UNIX в вашей системе, пример показан ниже.
~]# lsof -i -U
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 12u unix 0xffff8800b8baab40 0t0 11075 /run/systemd/cgroups-agent
systemd 1 root 13u unix 0xffff8800b8bab2c0 0t0 11077 /run/systemd/private
systemd 1 root 42u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 43u IPv4 16577 0t0 UDP *:sunrpc
rpcbind 1633 rpc 3u unix 0xffff8800bab8cf00 0t0 16574 /var/run/rpcbind.sock
rpcbind 1633 rpc 4u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1633 rpc 5u IPv4 16577 0t0 UDP *:sunrpc
rpcbind 1633 rpc 6u IPv6 16578 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1633 rpc 7u IPv6 16579 0t0 UDP *:sunrpc
rpcbind 1633 rpc 10u IPv4 16649 0t0 UDP *:960
sshd 2532 root 3u IPv4 21120 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65110 (ESTABLISHED)
sshd 2532 root 4u unix 0xffff8800bbef3a40 0t0 21260 socket
sshd 2532 root 8u unix 0xffff8800b8afd680 0t0 21298 /tmp/ssh-QHz9BdtRvt/agent.2532
sshd 2536 root 3u IPv4 21191 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65112 (ESTABLISHED)
sshd 2536 root 4u unix 0xffff8800b8afd2c0 0t0 21363 socket
………………………………………………………………………………………………………………
Пример: 6) Список всех открытых сетевых файлов IPv4 (lsof -i 4)
Используйте опцию «-i -4» в команде lsof, чтобы вывести список всех открытых сетевых файлов для IPv4,
~]# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 42u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 43u IPv4 16577 0t0 UDP *:sunrpc
rpcbind 1633 rpc 4u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)
sshd 2258 root 3u IPv4 19493 0t0 TCP *:ssh (LISTEN)
master 2360 root 13u IPv4 20087 0t0 TCP localhost:smtp (LISTEN)
dhclient 2494 root 6u IPv4 20983 0t0 UDP *:bootpc
dhclient 2494 root 20u IPv4 20951 0t0 UDP *:24884
dhclient 2514 root 6u IPv4 20866 0t0 UDP *:bootpc
sshd 2532 root 3u IPv4 21120 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65110 (ESTABLISHED)
sshd 2536 root 3u IPv4 21191 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65112 (ESTABLISHED)
sshd 2621 root 3u IPv4 23506 0t0 TCP 192.168.1.6:ssh->192.168.1.9:65422 (ESTABLISHED)
sshd 2655 root 3u IPv4 23863 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49992 (ESTABLISHED)
sshd 2657 infoit 3u IPv4 23795 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49990 (ESTABLISHED)
sshd 2660 infoit 3u IPv4 23863 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49992 (ESTABLISHED)
~]#
Чтобы перечислить все открытые сетевые файлы IPv4, используемые определенным процессом, чей идентификатор процесса «any_number», приведены ниже.
Предположим, мы хотим перечислить все сетевые файлы IPv4 для процесса rpcbind.
Синтаксис : # lsof i 4 -a -p {process_pid}
~]# lsof -i 4 -a -p 1633
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1633 rpc 4u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1633 rpc 5u IPv4 16577 0t0 UDP *:sunrpc
rpcbind 1633 rpc 10u IPv4 16649 0t0 UDP *:960
~]#
Пример: 7) Список всех открытых сетевых файлов для IPv6 (lsof -i 6)
Предполагая, что домен ipv6 поддерживается, вывод lsof будет примерно таким, как показано ниже:
~]# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 44u IPv6 16578 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 46u IPv6 16579 0t0 UDP *:sunrpc
rpcbind 1633 rpc 6u IPv6 16578 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1633 rpc 7u IPv6 16579 0t0 UDP *:sunrpc
rpcbind 1633 rpc 11u IPv6 16650 0t0 UDP *:960
sshd 2258 root 4u IPv6 19504 0t0 TCP *:ssh (LISTEN)
master 2360 root 14u IPv6 20088 0t0 TCP localhost:smtp (LISTEN)
dhclient 2494 root 21u IPv6 20952 0t0 UDP *:16498
dhclient 2514 root 21u IPv6 20823 0t0 UDP *:34955
httpd 2594 root 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2595 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2598 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2599 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
~]#
Пример:
Список всех процессов TCP и UDP, запущенных на определенном порту (lsof -i TCP / UDP: порт)
Предположим, мы хотим вывести список всех TCP-процессов, запущенных на 80-м порту, используйте следующую команду
~]# lsof -i TCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 2594 root 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2595 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2598 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
httpd 2599 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)
~]#
Чтобы вывести список всех открытых файлов на TCP-порту из диапазона портов (от 1 до 1048), используйте следующую команду
~]# lsof -i TCP:1-1048
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 41u IPv4 16863 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 44u IPv6 16865 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1663 rpc 4u IPv4 16863 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1663 rpc 6u IPv6 16865 0t0 TCP *:sunrpc (LISTEN)
sshd 2294 root 3u IPv4 19949 0t0 TCP *:ssh (LISTEN)
sshd 2294 root 4u IPv6 19965 0t0 TCP *:ssh (LISTEN)
master 2433 root 13u IPv4 21026 0t0 TCP localhost:smtp (LISTEN)
master 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp (LISTEN)
sshd 2600 root 3u IPv4 21737 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52393 (ESTABLISHED)
sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLISHED)
sshd 2663 root 3u IPv4 22123 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52489 (ESTABLISHED)
httpd 2837 root 4u IPv6 26112 0t0 TCP *:http (LISTEN)
httpd 2838 apache 4u IPv6 26112 0t0 TCP *:http (LISTEN)
httpd 2839 apache 4u IPv6 26112 0t0 TCP *:http (LISTEN)
httpd 2840 apache 4u IPv6 26112 0t0 TCP *:http (LISTEN)
httpd 2841 apache 4u IPv6 26112 0t0 TCP *:http (LISTEN)
httpd 2842 apache 4u IPv6 26112 0t0 TCP *:http (LISTEN)
sshd 2891 root 3u IPv4 26896 0t0 TCP 192.168.1.3:ssh->192.168.1.9:53541 (ESTABLISHED)
sshd 2895 infoit 3u IPv4 26896 0t0 TCP 192.168.1.3:ssh->192.168.1.9:53541 (ESTABLISHED)
~]#
Чтобы вывести список всех процессов UDP, запущенных на определенном порту, используйте следующую команду
~]# lsof -i UDP:16498
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dhclient 2494 root 21u IPv6 20952 0t0 UDP *:16498
~]#
Примечание . Чтобы вывести список всех открытых процессов UDP в вашей системе Linux, используйте команду « lsof -i UDP ».
Пример: 9) Список всех открытых файлов для определенного устройства (lsof <device_name>)
Следующая команда может использоваться для вывода списка всех открытых файлов на / dev / vda1.
Примечание: в этом случае тип устройства является виртуальным, обычно это может быть тип / dev / hd <number> / sd {number}
~]# lsof /dev/vda1 | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,1 4096 2 /
systemd 1 root rtd DIR 253,1 4096 2 /
systemd 1 root txt REG 253,1 1577264 262271 /lib/systemd/systemd
systemd 1 root mem REG 253,1 18976 262252 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd 1 root mem REG 253,1 262408 262245 /lib/x86_64-linux-gnu/libblkid.so.1.1.0
systemd 1 root mem REG 253,1 14608 266364 /lib/x86_64-linux-gnu/libdl-2.23.so
systemd 1 root mem REG 253,1 456632 262207 /lib/x86_64-linux-gnu/libpcre.so.3.13.2
systemd 1 root mem REG 253,1 1868984 266362 /lib/x86_64-linux-gnu/libc-2.23.so
systemd 1 root mem REG 253,1 138696 266361 /lib/x86_64-linux-gnu/libpthread-2.23.so
systemd 1 root mem REG 253,1 286824 261756 /lib/x86_64-linux-gnu/libmount.so.1.1.0
Пример: 10) Список процессов с открытыми файлами в файловой системе NFS
Бывают ситуации, когда вы смонтировали файловую систему nfs на свой Linux-сервер, но сервер nfs недоступен и вы хотите вывести список всех процессов с открытыми файлами в этой файловой системе nfs,
~]# lsof -b <nfs-share-mount-point>
Пример: 11) Список открытых файлов, связанных с терминалом (lsof / dev / tty {number})
Следующая команда используется для всех открытых файлов на / dev / tty1.
Примечание . В этом случае тип терминала — «tty1». Также можно использовать любой другой тип терминала, например / dev / tty <number>
~]# lsof /dev/tty1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2442 root 0u CHR 4,1 0t0 4689 /dev/tty1
bash 2442 root 1u CHR 4,1 0t0 4689 /dev/tty1
bash 2442 root 2u CHR 4,1 0t0 4689 /dev/tty1
bash 2442 root 255u CHR 4,1 0t0 4689 /dev/tty1
~]#
Пример: 12) Список PID, имени команды, дескриптора файла, номера устройства и номера индексного дескриптора файла (lsof -FpcfDi)
Один из интересных вариантов в «lsof» для получения вывода поля PID (P) и имени команды (c) для каждого процесса, дескриптора файла (f), номера файлового устройства (D) и номера индексного дескриптора файла (i) для каждого файла. Пример каждого процесса показан ниже
~]# lsof -FpcfDi | more
p1
csystemd
fcwd
D0xfd00
i128
frtd
D0xfd00
i128
ftxt
D0xfd00
i51034677
fmem
D0xfd00
i33628284
………………
Примечание. Отображается длинный список вывода, но он сокращен для экономии места.
Пример: 13) Список всех сетевых подключений (lsof -i)
Используйте опцию «-i» в команде lsof, чтобы вывести список всех связанных с сетью процессов или команд, пример показан ниже,
~]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 41u IPv4 16863 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 43u IPv4 16864 0t0 UDP *:sunrpc
rpcbind 1663 rpc 4u IPv4 16863 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1663 rpc 5u IPv4 16864 0t0 UDP *:sunrpc
rpcbind 1663 rpc 11u IPv6 17051 0t0 UDP *:988
sshd 2294 root 3u IPv4 19949 0t0 TCP *:ssh (LISTEN)
sshd 2294 root 4u IPv6 19965 0t0 TCP *:ssh (LISTEN)
rpc.statd 2300 rpcuser 10u IPv6 19974 0t0 UDP *:48486
rpc.statd 2300 rpcuser 11u IPv6 20045 0t0 TCP *:39334 (LISTEN)
rpc.mount 2311 root 7u IPv4 19897 0t0 UDP *:mountd
rpc.mount 2311 root 8u IPv4 19911 0t0 TCP *:mountd (LISTEN)
master 2433 root 13u IPv4 21026 0t0 TCP localhost:smtp (LISTEN)
master 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp (LISTEN)
dhclient 2563 root 6u IPv4 21589 0t0 UDP *:bootpc
dhclient 2583 root 21u IPv6 21365 0t0 UDP *:10368
sshd 2600 root 3u IPv4 21737 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52393 (ESTABLISHED)
sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLISHED)
~]#
Пример: 14) Найдите файл сокета IPv4 / IPv6
Чтобы найти файл сокета IPv4, используйте следующую команду, замените IP-адрес на IP-адрес вашей системы.
~]# lsof -i@192.168.1.3
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 2600 root 3u IPv4 21737 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52393 (ESTABLISHED)
sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486 (ESTABLISHED)
sshd 2663 root 3u IPv4 22123 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52489 (ESTABLISHED)
sshd 2724 root 3u IPv4 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848 (ESTABLISHED)
sshd 2728 infoit 3u IPv4 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848 (ESTABLISHED)
~]#
Чтобы найти файл сокета IP версии 6 по соответствующему числовому адресу в форме двоеточия, в котором есть ряд нулей — например, адрес обратной связи (127.0.0.1), используйте команду и параметры ниже:
~]# lsof -i@[::1]
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp (LISTEN)
~]#
Пример: 15) Список всех процессов или команд, принадлежащих идентификатору процесса (lsof -p <pid>)
Предположим, мы хотим перечислить все процессы или команды, принадлежащие определенному идентификатору процесса. Пример показан ниже.
~]# lsof -p 2842 | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 2842 apache cwd DIR 253,0 4096 128 /
httpd 2842 apache rtd DIR 253,0 4096 128 /
httpd 2842 apache txt REG 253,0 523680 34641136 /usr/sbin/httpd
httpd 2842 apache mem REG 253,0 110808 33618576 /usr/lib64/libresolv-2.17.so
httpd 2842 apache mem REG 253,0 27512 33618564 /usr/lib64/libnss_dns-2.17.so
httpd 2842 apache mem REG 253,0 57824 33618566 /usr/lib64/libnss_files-2.17.so
httpd 2842 apache mem REG 253,0 27808 17080385 /usr/lib64/httpd/modules/mod_cgi.so
httpd 2842 apache mem REG 253,0 68192 33628305 /usr/lib64/libbz2.so.1.0.6
………………………………………………
Пример: 16) Убить все процессы, принадлежащие определенному пользователю.
Команда lsof становится очень удобной, когда мы хотим убить весь процесс, принадлежащий определенному пользователю, в приведенном ниже примере будет уничтожен весь процесс, принадлежащий пользователю infoit.
~]# kill -9 `lsof -t -u infoit`
~]#
Пример: 17) Список всех открытых файлов в определенном каталоге (lsod + D <directory-path>)
Предположим, мы хотим перечислить все открытые файлы в каталоге / var / log, а затем использовать следующую команду lsof,
~]# lsof +D /var/log/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
auditd 1635 root 4w REG 253,0 1177238 51031316 /var/log/audit/audit.log
wpa_suppl 1840 root 3w REG 253,0 240 392280 /var/log/wpa_supplicant.log
tuned 2295 root 3w REG 253,0 6000 17713597 /var/log/tuned/tuned.log
rsyslogd 2296 root 6w REG 253,0 7118 392279 /var/log/cron
rsyslogd 2296 root 7w REG 253,0 449328 338975 /var/log/messages
rsyslogd 2296 root 8w REG 253,0 26038 338976 /var/log/secure
rsyslogd 2296 root 9w REG 253,0 1576 338977 /var/log/maillog
rsyslogd 2296 root 10w REG 253,0 9458 138 /var/log/boot.log
httpd 2837 root 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2837 root 7w REG 253,0 0 34824416 /var/log/httpd/access_log
httpd 2838 apache 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2838 apache 7w REG 253,0 0 34824416 /var/log/httpd/access_log
httpd 2839 apache 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2839 apache 7w REG 253,0 0 34824416 /var/log/httpd/access_log
httpd 2840 apache 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2840 apache 7w REG 253,0 0 34824416 /var/log/httpd/access_log
httpd 2841 apache 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2841 apache 7w REG 253,0 0 34824416 /var/log/httpd/access_log
httpd 2842 apache 2w REG 253,0 2829 34768157 /var/log/httpd/error_log
httpd 2842 apache 7w REG 253,0 0 34824416 /var/log/httpd/access_log
~]#
Примечание: в приведенной выше команде, если мы используем опцию + D, то lsof будет рекурсивно перечислять все открытые файлы каталога, и если вы не хотите рекурсивно перечислять открытые файлы каталога, используйте опцию «+ d».
Пример: 18) «lsof», чтобы проверить, кто открыл файл журнала (чтобы найти PID)
Следующая опция команды используется, чтобы узнать, кто открыл файл /var/log/httpd/access.log и каков PID этого процесса. А затем с помощью команды «ps -ef» мы можем найти точного пользователя
~]# lsof -t /var/log/httpd/access_log 3109 3110 3111 3112 3113 3114 ~]# ~]# ps -ef | grep -E "3109|3110|3111|3112|3113|3114" | grep -v grep or ~]# ps -fp "$(lsof -t /var/log/httpd/access_log | xargs echo)" root 3109 1 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 3110 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 3111 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 3112 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 3113 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 3114 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND ~]#
Многие параметры команды «lsof» можно комбинировать для различных целей, как показано ниже, некоторые комбинации флагов «-c», «-u» и «-I». Для получения более подробной информации обратитесь к странице руководства.
Приведенная ниже комбинация команд каждую секунду будет выводить информацию о домашнем каталоге «infoit», который все файлы открывались повторно.
~]# lsof -u infoit -c init -a -r1
=======
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
inita.sh 2971 infoit cwd DIR 8,1 4096 393218 /home/infoit
inita.sh 2971 infoit rtd DIR 8,1 4096 2 /
inita.sh 2971 infoit txt REG 8,1 83344 524367 /bin/dash
inita.sh 2971 infoit mem REG 8,1 1434567 1443695 /lib/i386-linux-gnu/libc-2.13.so
……………………………………………………………………………
Заключение:
Как упоминалось во вводном разделе, «lsof» — очень мощная и полезная команда в дистрибутивах на базе Linux. Эту команду и перечисленные параметры можно использовать для различных целей, таких как отладка, устранение неполадок и сортировка процессов Linux. Упомянутые варианты и комбинации, если попробуете, помогут установить полное понимание команды «lsof». Другие команды, такие как lstat , stat и ls, также можно использовать в сочетании с командой «lsof».
Рекомендуемый контент
На терминальном сервере человек 10 запускают приложение, пусть это будет CALC.exe, и естетсвенно, в процессах 10 ОДИНАКОВЫХ процессов.
Здесь мне подсказали, как узнать путь к файлу нужного процесса.
А как сделать тоже самое, только если пользователя зовут ВАСЯ, то процесс запущенный ВАСЕЙ и находился?
задан 1 фев 2011 в 14:57
2
Самый простой вариант с помощью WMI:
string processName = "calc.exe";
string currentUser = WindowsIdentity.GetCurrent().Name.Split('\')[1];
string query = "Select * from Win32_Process Where Name = "" + processName + """;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processes = searcher.Get();
foreach (ManagementObject proc in processes)
{
string owner;
string[] argList = new string[] { string.Empty };
int returnVal = Convert.ToInt32(proc.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
owner = argList[0];
else
continue;
if (owner != currentUser)
continue;
// Вот тут-то и остался только нужный процесс!
string path = proc["ExecutablePath"].ToString();
}
ответ дан 1 фев 2011 в 15:16
kirelaginkirelagin
4,50821 серебряный знак29 бронзовых знаков
1
На WinApi проблема решалась еще в первом вопросе)
Поиск по msdn выдал сразу:
Получаем токен процесса по хендлу: OpenProcessToken(…)
SID пользователя — в информации о токене: GetTokenInformation(…)
@kirelagin:
Оригинал с мсдн:
BOOL WINAPI OpenProcessToken(
__in HANDLE ProcessHandle,
__in DWORD DesiredAccess,
__out PHANDLE TokenHandle
);
В c#:
[DllImport("Advapi32.dll", EntryPoint = "OpenProcessToken")]
private static extern bool OpenProcessToken(int ProcessHandle, int DesiredAccess, int* TokenHandle);
ответ дан 1 фев 2011 в 15:30
Бодров АндрейБодров Андрей
3711 золотой знак2 серебряных знака13 бронзовых знаков
1