lsof - ограничивают вывод физическими файлами только - как?

Да, флаги трассировки сгруппированы областью SQL Server - первые две цифры всегда обозначают область. Например:

  • 6xx методы доступа Механизма устройства хранения данных
  • 8xx пул буферов
  • 12xx менеджер блокировок
  • 14xx зеркальное отражение базы данных
  • 25xx, 52xx связанный DBCC
  • 30xx, 31xx, 32xx резервное копирование/восстановление
  • 36xx SQL Server общее 'время выполнения'
  • 55xx FILESTREAM
  • 73xx, 74xx выполнение запросов
  • 76xx полный текст связаны (?)
  • 75xx курсоры
  • 82xx репликация

Они - просто те, я помню, поскольку у меня больше нет исходного кода (я записал набор кода и владел whoe Механизмом устройства хранения данных на 2008).

Нет никакого простого способа помнить то, что каждый делает.

Надеюсь, это поможет.

30
задан 26 January 2010 в 16:13
5 ответов

Просто просмотренный некоторые страницы справочника, кажется, что Вы используете команду:

sudo lsof /

Это перечислит все открытые файлы в / каталог, который является всем в файловой системе Linux. Просто протестированный и это показывает только REG и DIR.

Больше примеров:

lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /

0-999 пределов это в файлы с числом дескриптора файла.

37
ответ дан 28 November 2019 в 19:59
  • 1
    Будет включать FIFOs также. –  Kyle Brandt 26 January 2010 в 16:35
  • 2
    Хороший и простой. При необходимости просто в последнем столбце, Вы могли бы добавить | awk {' распечатайте 9$ '} Интересный. Я don' t добираются первым прибыл, первым обслужен в моем выводе также. Fedora 12 и CentOS 5.3 –  egorgry 26 January 2010 в 16:37
  • 3
    CentOS 5.2 и Ubuntu 9.04 возвращают fifo' s для меня, могло быть изменение, но действительно ли Вы уверены, что существуют fifos? Я был бы grep для него сначала, и удостоверьтесь, что это там, чем попытка / –  Kyle Brandt 26 January 2010 в 20:20
  • 4
    Кроме того, я просто придирался к мелочам, это походит на него просто doesn' t хотят шум, и там вероятно, won' t быть очень многими fifos. –  Kyle Brandt 26 January 2010 в 20:23
  • 5
    lsof / только включает файлы в корневую файловую систему. Если у Вас есть несколько смонтированных файловых систем, они won' t появляются в выводе. Я нахожу, что лучший способ состоит в том, чтобы просто использовать grep. –  James 27 January 2010 в 01:18

Мог бы быть переключатель, но если Вы не возражаете пропускать его через grep, Вы могли бы сделать sudo lsof | egrep 'REG|DIR' , принятие "физическими файлами" Вы имеете в виду регулярные файлы и каталоги.

Посмотрите ВЫВОД:: раздел TYPE страницы справочника man lsof для всех типов, которые могли бы быть в том столбце.

9
ответ дан 28 November 2019 в 19:59
  • 1
    Мог бы быть переключатель, но чтения страницы справочника как someone' s диссертация... :) –  Cawflands 26 January 2010 в 16:27
  • 2
    Да... человека lsof чрезвычайно трудно считать...; p) –  Vladislav Rastrusny 26 January 2010 в 16:31
  • 3
    +1 тот комментарий.:) –  egorgry 26 January 2010 в 16:39

Это то, что я сделал, и у меня отлично сработало:

lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u

Параметр -F n для lsof заставит его только распечатать имена открытых файлов. Каждая строка вывода, имеющая имя открытого файла, будет начинаться с одиночного символа n , за которым сразу следует имя . Обычные файлы всегда будут абсолютным, полным именем файла. grep ^ n / выберет только те строки, имена которых начинаются с / (что означает абсолютное полное имя файла); таким образом устраняются такие вещи, как открытые порты, сокеты, каналы (например, FIFO) и т. д. cut -c2- удалит первый символ, n , оставив только имя файла. Затем, наконец, sort -u удалит все повторяющиеся записи.

Одно предостережение: сюда будут включены файлы, которые не являются обычными , если их имена начинаются с / . Например, будут включены все файлы, начинающиеся со следующих:

  • / dev
  • / proc
  • / sys

И могут быть другие в зависимости от вашей ОС.

2
ответ дан 28 November 2019 в 19:59

это отлично работает в mac os:

$ lsof /

мне это нравится, потому что это быстро. это будет быстрее, если вы укажете -p

$ lsof -a -p <comma,sep,pids> /
0
ответ дан 18 April 2020 в 17:38

Если вы используете lsof /, он просто перечислит открытые файлы в файловых системах, смонтированных НЕПОСРЕДСТВЕННО под / - то есть, если вы /home смонтировали под /, его содержимое будет игнорируется. Я пробовал различные комбинации параметров для lsof, но у всех были проблемы. Лучшее, что я смог придумать, это следующее:

lsof `readlink -f /dev/block/*`

Здесь используется readlink -f, чтобы получить все блочные устройства и передать их в виде списка для поиска. lsof игнорирует те, которые не смонтированы.

Если у вас есть какие-либо другие параметры для ограничения поиска, например pid, не забудьте завершить команду lsof с помощью -a, чтобы И их со списком блочных устройств:

lsof -p 982482 -a `readlink -f /dev/block/*`
2
ответ дан 28 April 2021 в 10:03

Теги

Похожие вопросы