Файлы, используемые процессом unix
-
08-07-2019 - |
Вопрос
Тем fuser
Команда позволяет мне узнать, какие процессы используют файл или каталог.
Я ищу команду, которая делает обратное:позволяет мне узнать, какие файлы используются процессом.
Обновлять
Забыл упомянуть, что это для системы Solaris.
Решение
Несмотря на то, что я не стал бы жалеть кого-либо, кто изучает Dtrace или приобретает опыт установки программного обеспечения, в Solaris есть команда для просмотра файлов, открытых процессом: / USR / бен / pfiles
% tail -f /etc/motd &
[1] 6033
% pfiles 6033
6033: tail -f /etc/motd
Current rlimit: 256 file descriptors
0: S_IFREG mode:0644 dev:182,65538 ino:163065 uid:0 gid:3 size:54
O_RDONLY|O_LARGEFILE
/etc/motd
1: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
O_RDWR|O_NOCTTY|O_LARGEFILE
/dev/pts/3
2: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
O_RDWR|O_NOCTTY|O_LARGEFILE
/dev/pts/3
Другие советы
lsof -p <pid>
От здесь
lsof означает «Список открытых файлов».Эта команда оболочки кажется обманчиво простой:В нем перечислена информация о файлах, открытых процессами в компьютере UNIX.
Несмотря на свою (кажущуюся) скромную формулировку миссии, lsof на самом деле является одной из самых мощных и полезных команд UNIX.Его необузданная мощь исходит из одного из принципов проектирования UNIX, который часто описывают как «в UNIX все является файлом».Это означает, что концепция lsof открытого файла охватывает не только обычные файлы, но и следующее:
- Каталоги
- Потоки или сетевые файлы (например, сокеты Интернета или домена UNIX и файлы NFS).
- Собственные библиотеки (например, динамические библиотеки .soor .dylib, связанные с процессом)
- Специальные блочные и символьные файлы (например, том диска, внешний жесткий диск, консоль или мышь)
- Трубы
Подождите, я не могу найти lsof в своей системе!
lsof — настолько популярный инструмент, что он портирован практически на все диалекты UNIX (Linux, Mac OS X, BSD, Solaris и т. д.).Если он недоступен на вашем компьютере, используйте для его установки обычную систему управления пакетами.Пакеты lsof для Solaris можно найти на сайте Бесплатное программное обеспечение Sun.
Это классическое приложение для dtrace . , Р>
Я не могу точно вспомнить синтаксис, но у вас может возникнуть трассировка при каждом открытии файла любым процессом в системе. Это может быть сделано на работающей системе без каких-либо дополнительных затрат, как я ожидал. Если вы работаете в Solaris с правами администратора, dtrace - ваш лучший друг. Даже если вы не программист, его очень легко освоить и ОЧЕНЬ мощный инструмент для системных запросов.
В некоторых системах Unix (IE: Linux) все файлы, открытые процессом, имеют идентификатор FD. Р>
Их можно увидеть под
/ proc / $ PID / fd
ls -la /proc/2055/fd
total 0
dr-x------ 2 kent kent 0 Nov 19 21:44 .
dr-xr-xr-x 7 kent kent 0 Nov 19 21:42 ..
lr-x------ 1 kent kent 64 Nov 19 21:44 0 -> /dev/null
l-wx------ 1 kent kent 64 Nov 19 21:44 1 -> /home/kent/.xsession-errors
lrwx------ 1 kent kent 64 Nov 19 21:44 10 -> socket:[3977613]
lrwx------ 1 kent kent 64 Nov 19 21:44 11 -> /home/kent/.googleearth/Cache/dbCache.dat
lrwx------ 1 kent kent 64 Nov 19 21:44 12 -> /home/kent/.googleearth/Cache/dbCache.dat.index
lrwx------ 1 kent kent 64 Nov 19 21:44 13 -> socket:[3978765]
lrwx------ 1 kent kent 64 Nov 19 21:44 14 -> socket:[3978763]
lrwx------ 1 kent kent 64 Nov 19 21:44 15 -> socket:[3978766]
lrwx------ 1 kent kent 64 Nov 19 21:44 17 -> socket:[3978764]
l-wx------ 1 kent kent 64 Nov 19 21:44 2 -> /home/kent/.xsession-errors
lr-x------ 1 kent kent 64 Nov 19 21:44 3 -> pipe:[3977583]
l-wx------ 1 kent kent 64 Nov 19 21:44 4 -> pipe:[3977583]
lr-x------ 1 kent kent 64 Nov 19 21:44 5 -> pipe:[3977584]
l-wx------ 1 kent kent 64 Nov 19 21:44 6 -> pipe:[3977584]
lr-x------ 1 kent kent 64 Nov 19 21:44 7 -> pipe:[3977587]
l-wx------ 1 kent kent 64 Nov 19 21:44 8 -> pipe:[3977587]
lrwx------ 1 kent kent 64 Nov 19 21:44 9 -> socket:[3977588]
Кроме того, иногда вы даже получаете "FDINFO" (Я думаю, что это флаг ядра в Linux)
cat /proc/2055/fdinfo/11
pos: 232741818
flags: 02
Вы можете получить lsof с http://www.sunfreeware.com/programlistsparc10.html# Lsof р>
Вы также можете попробовать pfiles:
http://docs.oracle .com / CD / E23823_01 / html / 816-5165 / pfiles-1.html # scrolltoc
$ ls -l / proc / * / fd | grep "chrome"
lrwx ------ 1 ba abc 64 июля 16 22:19 104 - > /home/abc/.config/google-chrome/Default/Cookies р>
lr-x ------ 1 abc abc 64 июля 16 22:19 113 - > /opt/google/chrome/nacl_irt_x86_64.nexe р>
lrwx ------ 1 abc abc 64 июля 16 22:19 121 - > /home/abc/.cache/google-chrome/Default/Cache/data_0 р>
lrwx ------ 1 abc abc 64 июля 16 22:19 122 - > /home/abc/.cache/google-chrome/Default/Cache/data_1 р>
lrwx ------ 1 abc abc 64 июля 16 22:19 123 - > /home/abc/.cache/google-chrome/Default/Cache/data_2 р>
lr-x ------ 1 abc abc 64 июля 16 22:19 125 - > /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic р>
Еще одна команда, чтобы узнать результат, используя lsof и grep
$ lsof | grep "chrome"
chrome 2204 abc cwd DIR 8,5 4096 1441794 / home / abc
Chrome 2204 abc rtd DIR 8,5 4096 2 /
chrome 2204 abc txt REG 8,5 87345336 5111885 / opt / google / chrome / chrome
chrome 2204 abc mem REG 8,5 4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache / data_3
chrome 2204 abc mem REG 8,5 1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache / data_2
chrome 2204 abc mem REG 8,5 270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache / data_1
chrome 2204 abc mem REG 8,5 45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache / data_0