Вопрос

Тем 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 и grep , чтобы найти файлы, используемые chrome
  • $ 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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top