Список всех открытых файлов .log 'в * nix

Бывают системные администраторы, возможно, вы не уверены в пути к файлу журнала нового приложения. В зависимости от системы может быть несколько способов найти то же самое. Пожалуйста, поделитесь различными способами, которыми мы можем получить список открытых файлов журнала в системе.

Пользовательские X-файлы

Если вам нужно увидеть только открытые файлы одного пользователя:

 $ lsof -u<user> 

Или только файлы с дескриптором текстового файла (обычно реальные файлы):

 $ lsof -a -u<user> -d txt 

пример

Все файлы используются пользователем saml .

 $ lsof -usaml COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME vim 1341 saml cwd DIR 253,2 4096 10370078 /home/saml/mp3s vim 1341 saml rtd DIR 253,0 4096 2 / vim 1341 saml txt REG 253,0 2105272 1215334 /usr/bin/vim vim 1341 saml mem REG 253,0 237616 393586 /lib64/libgssapi_krb5.so.2.2 

Только файлы, использующие текстовый дескриптор и принадлежащие пользователю saml .

 $ lsof -a -usaml -d txt Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME vim 1341 saml txt REG 253,0 2105272 1215334 /usr/bin/vim bash 1468 saml txt REG 253,0 940312 2490450 /bin/bash gvfsd-htt 1777 saml txt REG 253,0 179528 1209465 /usr/libexec/gvfsd-http gnome-key 2051 saml txt REG 253,0 953664 1214068 /usr/bin/gnome-keyring-daemon ... 

lsof как root

Как правило, вы хотите запустить lsof с повышенными привилегиями, чтобы вы могли видеть все файлы в системе, принадлежащей процессу Apache или root, например.

 $ sudo lsof 

Вы также можете использовать lsof обратном порядке и узнать, какой процесс открыл конкретный файл.

 $ sudo lsof /var/log/messages Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 1266 root 4w REG 253,0 372306 1973825 /var/log/messages 

lsof as top

Вы также можете использовать lsof аналогично top где он будет опросить каждое количество секунд и показать вам, что происходит в вашей системе.

 $ sudo lsof -u saml -c sleep -a -r5 

пример

Аргумент -c ... показывает только процессы со строкой ... в их имени. Здесь я использую команду sleep чтобы показать это. Я запускаю команду lsof которая lsof каждые 5 секунд и показывает любые файлы, открытые любыми процессами, в которых в них lsof строка. Затем я запустил sleep 5 в другом терминале.

 $ sudo lsof -u saml -c sleep -a -r5 Output information may be incomplete. ======= ======= ======= ======= COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sleep 10780 saml cwd DIR 253,2 32768 10354689 /home/saml sleep 10780 saml rtd DIR 253,0 4096 2 / sleep 10780 saml txt REG 253,0 27912 2490470 /bin/sleep sleep 10780 saml mem REG 253,0 151456 393578 /lib64/ld-2.13.so sleep 10780 saml mem REG 253,0 1956608 393664 /lib64/libc-2.13.so sleep 10780 saml mem REG 253,0 99158752 1209621 /usr/lib/locale/locale-archive sleep 10780 saml 0u CHR 136,59 0t0 62 /dev/pts/59 sleep 10780 saml 1u CHR 136,59 0t0 62 /dev/pts/59 sleep 10780 saml 2u CHR 136,59 0t0 62 /dev/pts/59 ======= ======= ======= ======= 

лог-файлы

Вы можете использовать lsof для поиска файлов журналов, просто используя любой из приведенных выше выводов для имен файлов журналов, которые вам интересны, чтобы узнать, что происходит.

 $ lsof .... | grep "log file name" 

Я использую ниже, чтобы получить общесистемный список открытых файлов .log :

 lsof | grep "\.log$" | awk '{print $NF}' | sort -u 

Чтобы получить список файлов .log для процесса, я использую:

 pfiles <PID> | grep "\.log$" | sort -u 

Также, пожалуйста, дайте мне знать, если есть более эффективный способ сделать это.

В Solaris 10 и Solaris 11

Используйте команду pfiles для просмотра файлов, открытых в процессе, включая файлы журналов. Grep на выходе, и вы сможете увидеть, открыт ли процесс (во время вашего моментального снимка), файл журнала.

Что касается других ответов на этой странице:

В Solaris нет такой вещи, как pstree или lsof из коробки.

  • pstree . Этот инструмент можно найти на большинстве Linux'ов. На самом деле это очень похоже на команду Solaris ptree , на самом деле я где-то читал, что pstree был вдохновлен Solaris ptree . Я уверен, что вы можете сделать работу pstree на Solaris, но я не уверен, что я понял бы ее смысл, когда у вас есть команда ptree ?

  • lsof . Этот инструмент не доступен на Solaris. Верно, что вы можете найти его, но в прошлый раз, когда я посмотрел, он использовал недокументированный взломать свои трюки в Solaris. Кроме того, он работал только в глобальных зонах в последний раз, когда я смотрел. Ближайшим эквивалентом Solaris будет pfiles .

Вы можете использовать locate . Например:

 locate .log