4 мин для чтения7 примеров команды lsof в linux

Абсолютно первые шаги

Кто я, где я?

  • — выводит имя машины (сервера), на которой вы сейчас находитесь;
  • — выводит ваш логин (ваше имя в системе);
  • — псевдографическое изображение дерева каталогов на машине; выход из пролистывания — ;
  • — выводит каталог, в котором вы сейчас находитесь; в командной строке вы не можете быть «просто так», вы обязательно находитесь в каком-то каталоге (=текущий каталог, рабочий каталог). Вероятно, текущий рабочий каталог выводится у вас в приглашении (prompt).
  • — список файлов в текущем каталоге; — список файлов в указанном каталоге;

man

  • 1 — исполняемые программы и шелльные команды (, , и т.п.);
  • 2 — системные вызовы (, и т.п.)
  • 3 — библиотечные функции (, , , ).

Что делать, когда что-то непонятно

  • насколько возможно четко сформулируйте вопрос или задачу — нет ничего сложнее, чем решать «то, не знаю что»;
  • вспомните, сталкивались ли вы уже с такой же или подобной проблемой — в этом случае стоит попробовать решение, которое сработало в прошлый раз;
  • почитайте подходящие man-ы (если понимаете, какие man-ы подходят в вашем случае) — возможно, вы найдете подходящие примеры использования команд, нужные опции или ссылки на другие команды;
  • подумайте: нельзя ли немного поменять задачу? — возможно, чуть-чуть изменив условия, вы получите задачу, которую уже умеете решать;
  • задайте свой четко сформулированный вопрос в поисковой системе — возможно, ответ найдется на Stack Overflow или других сайтах;

Методы работы

Скопировать-и-вставитьЧитать manВытащить из истории предыдущую команду, добавить в конвейер еще одну команду, запустить, повторить

Базовые команды

  • переход в другой каталог: ;
  • просмотр содержимого файлов: , , , ;
  • манипуляции с файлами: , , ;
  • просмотр содержимого каталогов: , , ;
  • структура каталогов: , (можно передать в качестве параметра каталог);
  • поиск файлов: ;

Аналитика

  • , ;
  • — сортировка по указанному полю;
  • — числовая соритровка;
  • — сравнение файлов;
  • , , , , — поиск текста;
  • , — уникализация строк;
  • — в варианте , чтобы оставить только первое поле из каждой строки, можно менять на , и т.д.;

Диагностика системы

  • — информация о процессах (запущенных программах), работающих на машине;
  • — интерактивный просмотр самых ресурсоемких процессов;
  • — занятое и свободное место на диске;
  • — суммарный размер файлов в каталоге (рекурсивно с подкаталогами);
  • , — какие системные вызовы выполняет процесс;
  • — какие файлы использует процесс;
  • , — какие порты и сокеты открыты в системе.

Массовое и полуавтоматическое выполнение

  • — проврека условий;
  • — цикл по строчкам ;
  • — подстановка строк из в параметры указанной программе;
  • — генерация последовательностей натуральных чисел;
  • — объединить вывод нескольких команд;
  • — выполнить одно за другим;
  • — выполнить при условии успешного завершения первой команды;
  • — выполнить при условии неудачного завершения первой команды;
  • — продублировать вывод программы в и в файл на диске.

Разное

  • — текущая дата;
  • — скачивает документ по указаному url и пишет результат на ;
  • — обновить дату модификации файла;
  • — послать процессу сигнал;
  • — ничего не делает, возвращает истину, полезна для организации вечных циклов;
  • — выполнить команду от имени ‘а.

fuser command

Find out the processes PID that opened tcp port 7000, enter: Sample outputs:

7000/tcp:             3813

Finally, find out process name associated with PID # 3813, enter: Sample outputs:

lrwxrwxrwx 1 vivek vivek 0 2010-10-29 11:00 /proc/3813/exe -> /usr/bin/transmission

/usr/bin/transmission is a bittorrent client, enter: OR Sample outputs:

transmission (1)     - a bittorrent client

Find Out Current Working Directory Of a Process

To find out current working directory of a process called bittorrent or pid 3813, enter: Sample outputs:

lrwxrwxrwx 1 vivek vivek 0 2010-10-29 12:04 /proc/3813/cwd -> /home/vivek

OR use pwdx command, enter: Sample outputs:

3813: /home/vivek

Find Out Owner Of a Process on Linux

Use the following command to find out the owner of a process PID called 3813: OR Sample outputs:

vivek     3813  1.9  0.3 188372 26628 ?        Sl   10:58   2:27 transmission

OR try the following ps command: Sample outputs:

3813 vivek    vivek    transmission                   02:44:05 Fri Oct 29 10:58:40 2010

Another option is /proc/$PID/environ, enter: OR Sample outputs (note –colour option):
Fig.01: grep output

Version history

27/03/2019 — Version 2.8

  • New Dark Mode friendly template icons for Mojave
  • Multiple items can now be selected and copied
  • Info Panel now shows which processes are connected to each other via unix pipes & domain sockets
  • Info Panel now also shows file system info such as device name & inode
  • Cmd-L menu action to show selected item
  • Minor performance improvements
  • Sparkle update framework now has Mojave Dark Mode-compatible appearance
  • No longer shows hidden volumes in Volumes filter
  • Fixed issue with mangled process names
  • Fixed issue with pipe icon on non-retina displays
  • Fixed minor memory leak
  • More graceful error handling when file descriptor lookup fails in lsof

10/02/2019 — Version 2.7

  • Info Panel now shows file Uniform Type Identifier
  • Fixed crash bug on macOS 10.9 and earlier
  • Various minor bug fixes and interface improvements

02/06/2018 — Version 2.5

  • Fixed critical lsof output parsing bug introduced in 2.4
  • New «Authenticate on launch» option in Preferences
  • Various minor interface refinements

10/05/2018 — Version 2.4

  • Now defaults to showing Mac-friendly process names (e.g. «Safari Web Content» instead of «com.apple.WebKit.WebContent»)
  • Unix process names no longer truncated to 32 characters
  • Search filter can now be used to filter by IP protocol (e.g. TCP or UDP) or IP version (e.g. IPv4 or IPv6)
  • Now shows TCP socket state (e.g. LISTEN, ESTABLISHED) in list and Info Panel
  • Info Panel now shows file descriptor integer
  • Info Panel now shows additional info for character devices
  • Info Panel now shows Carbon Process Serial Number (PSN) for processes, if available
  • Much improved IPv6 socket handling
  • DNS to IP and port name resolution in Info Panel when DNS/port lookup enabled in Prefs
  • Minor user interface enhancements

16/04/2018 — Version 2.3

  • Now supports access mode filtering (e.g. read, write, read/write)
  • Search filter now also filters by PID
  • DNS and port name lookup for IP Sockets in Info Panel
  • Info Panel now identifies standard I/O stream character devices
  • New Search Filter menu with case sensitivity and regex options
  • New application icon
  • Fixed bug where Volumes filter wouldn’t work
  • Minor interface improvements

07/03/2018 — Version 2.2

  • Now defaults to excluding process binaries, shared libraries and current working directories in listing
  • DNS and port name lookup now disabled by default for faster execution (can be enabled in Preferences)
  • Info Panel now displays file access mode and process owner
  • New sort option: User ID
  • Info Panel now shows IP socket protocol and version
  • New Preferences window
  • New high-resolution pipe and socket icons
  • Fixed bug where sort settings were not respected on launch

12/02/2018 — Version 2.1

  • Copying a file path now creates a file representation in clipboard in addition to text
  • File paths are now red in colour if selected file does not exist at path
  • Uniform Type Identifier now used to identify app bundles instead of .app suffix
  • Fixed issue with Info Window’s handling of moved or non-existent files
  • Minor interface refinements

01/10/2017 — Version 2.0

  • New Volumes filter
  • New «Sort By» submenu under View in main menu
  • Sorting by PID now correctly does numerical sort instead of alphabetic

07/06/2017- Version 1.9

  • Files can now be dragged and dropped
  • Cmd-F now focuses on filter field
  • File representations can now be copied to the clipboard
  • Cmd-double-click now reveals file in Finder
  • Fixed various minor user interface bugs
  • Fixed collapse all bug with Info Panel open
  • New compact interface size option
  • Fixed broken permissions display for non-bundle processes in Info Panel

24/02/2016 — Version 1.6

  • Asynchronous refresh
  • Much improved performance
  • UI improvements
  • New filtering options
  • Smarter regex filtering
  • Load results as root without relaunching application
  • Expanded sorting options
  • Migrated project to ARC, modern Objective-C and Xcode 7
  • Now requires OS X 10.8 or later

29/05/2009 — Version 1.4

  • Regular expressions in search filter
  • New «Relaunch as root» option
  • Fixed bug in Mac OS X 10.5
  • Now built for Mac OS X 10.4 or later

05/03/2004 — Version 1.3

  • Live update for search filter
  • Sorting by column now works
  • Performance improvements
  • Lots of code replaced by Cocoa bindings thanks to Bill Bumgarner

27/02/2004 — Version 1.2

  • Filter search field now tries to match all fields when filtering
  • Added auto-refresh timer option
  • lsof binary and kill signal type can now be set in Preferences
  • New application icon
  • Added Icelandic and Japanese localizations

11) View all TCP or UDP connections

Use the following command to view both TCP and UDP connections on your Linux system:

# lsof -i tcp; lsof -i udp;
# lsof -i tcp; lsof -i udp;
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1707 root 3u IPv4 4897 0t0 TCP *:ssh (LISTEN)
sshd 1707 root 4u IPv6 4908 0t0 TCP *:ssh (LISTEN)
sshd 25453 root 3u IPv4 1601772 0t0 TCP li978-9.members.linode.com:ssh->182.188.228.74:casp (ESTABLISHED)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 1383 avahi 12u IPv4 3397 0t0 UDP *:mdns
avahi-dae 1383 avahi 13u IPv4 3398 0t0 UDP *:53376
chronyd 1393 chrony 1u IPv4 2712 0t0 UDP *:ntp
chronyd 1393 chrony 2u IPv6 2713 0t0 UDP *:ntp
chronyd 1393 chrony 3u IPv4 2714 0t0 UDP localhost:323
chronyd 1393 chrony 5u IPv6 2715 0t0 UDP localhost:323
dhclient 1497 root 6u IPv4 4179 0t0 UDP *:bootpc
dhclient 1497 root 20u IPv4 4151 0t0 UDP *:24561
dhclient 1497 root 21u IPv6 4152 0t0 UDP *:20528

Опции.

default : : без вариантов, Lsof выведет список всех открытых файлов для всех процессов.grouping : это возможно группирования параметров, например -abC, но вы должны следить какие опции принимают параметры.-a : «И» результаты (вместо «ИЛИ»).—l : показать идентификатор пользователя (userID) вместо имени пользователя на выходе.—h : Вывести помощь (help).—t : Получить ID процесса (ов)  только.—U : Получить  адрес сокета UNIX.-F : вывод готов для другой команде, которую можно отформатировать различными способами, например,-F pcfn (идентификатор процесса, название команды, дескриптор файла, имя файла, с нулевого символа)

Перечислите все сетевые соединения

Вы можете перечислить все сетевые подключения, открытые с помощью ‘-I’ вариант.

# lsof -i

lsof -i

Получить только  траффик сIPv6 с опцией -i 6

# lsof -i 6

Показать только соединения TCP (работает то же самое и для UDP), вы можете также показать только TCP или UDP соединения, предоставляя протокол сразу после -i:

# lsof -iTCP

или

# lsof -iUDP

Показать сети, связанный с данным портом с помощью -i: порт:

# lsof -i :21

Показать соединения к определенному хосту с помощью  «host». Это очень полезно, когда вы ищете, есть ли у вас открытые соединения с данного хоста в сети или по интернету.

# lsof -i@147.136.112.45

Показать соединения к определенному хосту с помощью @host:port. Вы также можете комбинировать отображение хост и порт:

# lsof -i@12.136.112.55:21

Найти прослушивающие порты, которые ждут соединения:

# lsof -i -sTCP:LISTEN

Вы также можете отсеять не нужно и вывести например, только «LISTEN»:

# lsof -i | grep -i LISTEN

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

# lsof -i -sTCP:ESTABLISHED

Вы можете отгрепать мусор и найти что-то для себя, например:

# lsof -i | grep -i ESTABLISHED

Изолирование

В оставшейся части этого поста мы заложим основу для нашей программы, которую назовём . принимает команду в качестве аргументов и запускает её в новом процессе, изолированном от остальной системы и в ограниченном собственными namespaces. В следующих постах мы рассмотрим добавление поддержки отдельных namespaces для команды процесса, запускаемого .

В зависимости от области применения, мы сфокусируемся на User, Mount, PID и Network namespaces. Остальные же будут относительно тривиальны для реализации после того, как мы закончим (фактически, мы добавим поддержку UTS здесь в первичной реализации программы). А рассмотрение, например, Cgroups, выходит за рамки этой серии (изучение cgroups — другого компонента контейнеров, используемого для управления тем, сколько ресурсов может использовать процесс).

Пространства имён могут очень быстро оказаться сложными и есть много разных путей, которыми можно воспользоваться при изучении каждого namespace, но мы не можем выбрать их все разом. Мы будем обсуждать только те пути, которые имеют отношение к разрабатываемой нами программе. Каждый пост будет начинаться с некоторых экспериментов в консоли над рассматриваемым namespace с целью разобраться с действиями, требуемыми для настройки этого namespace. В результате у нас уже будет представление о том, чего мы хотим достичь, а затем последует и соответствующая реализация в .

Задание 1 (Установка ОС и настройка LVM, RAID)

  1. Создайте новую виртуальную машину, выдав ей следующие характеристики:

    • 1 gb ram
    • 1 cpu
    • 2 hdd (назвать их ssd1, ssd2 и назначить равный размер, поставить галочки hot swap и ssd)
    • SATA контроллер настроен на 4 порта:
  2. Начать установку Linux и дойдя до выбора жестких дисков сделать следующее:

    • Partitioning method: manual, после чего вы должны увидеть такую картину:
    • Настройка отдельного раздела под /boot: Выберите первый диск и создайте на нем новую таблицу разделов:
      • Partition size: 512M
      • Mount point: /boot
    • Повторите настройку для второго диска, но поскольку одновременно монтировать 2 раза /boot нельзя, то выберите mount point: none в итоге получив следующее (картинка с косяком, переделывать лень):
    • Настройка RAID:
    • Выберите свободное место на первом диске и настройте в качестве типа раздела physical volume for RAID
    • Выберите «Done setting up the partition»
    • Повторите точно такую же настройку для второго диска, в результате получив следующее:
    • Выберите пункт «Configure software RAID»
      • Create MD device
      • Software RAID device type: Выберите зеркальный массив
      • Active devices for the RAID XXXX array: Выбрать оба диска
      • Spare devices: Оставить 0 по умолчанию
      • Active devices for the RAID XX array: выбрать разделы, которые вы создавали под raid
      • Finish
    • В итоге вы должны получить такую картину:
    • Настройка LVM: Выберите Configure the Logical Volume Manager
    • Keep current partition layout and configure LVM: Yes
    • Create volume group
    • Volume group name: system
    • Devices for the new volume group: Выберите ваш созданный RAID
    • Create logical volume
      • logical volume name: root
      • logical volume size: 2\5 от размера вашего диска
    • Create logical volume
      • logical volume name: var
      • logical volume size: 2\5 от размера вашего диска
    • Create logical volume
      • logical volume name: log
      • logical volume size: 1\5 от размера вашего диска
    • Выбрав Display configuration details вы должны получить следующую картину:
    • Завершив настройку LVM вы должны увидеть следующее:
    • Разметка разделов: по-очереди выберите каждый созданный в LVM том и разметьте их, например, для root так:
      • Use as: ext4
      • mount point: /
    • Результат разметки корневого раздела должен получиться таким:
    • Повторите операцию разметки для var и log выбрав соответствующие точки монтирования (/var и /var/log вручную ввести), получив следующий результат:
    • Выберите Finish Partitioning
    • Вам зададут несколько вопросов, про то что у вас остался несмонтированный раздел и не настроен swap. Следует ответить отрицательно на оба вопроса.
    • Финальный результат должен получиться вот таким:
  3. Закончить установку ОС, поставив grub на первое устройство (sda) и загрузить систему.

  4. Выполните копирование содержимого раздела /boot с диска sda (ssd1) на диск sdb (ssd2)

  5. Выполнить установку grub на второе устройство:

    • Посмотреть диски в системе:

    • Перечислите все диски которые вам выдала предыдущая команда и опишите что это за диск.
    • Найдите диск на который не была выполнена установка grub и выполните эту установку:

    • Просмотрите информацию о текущем raid командой cat /proc/mdstat и запишите что вы увидели.
    • Посмотрите выводы команд: pvs, vgs, lvs, mount и запишите что именно вы увидели.

Опишите своими словами что вы сделали и какой результат получили в итоге проделанного задания.

После выполнения этого задания рекомендуется сохранить резервную копию папки с виртуальной машиной или сделать vagrant box.

Результат: Виртуальная машина с дисками ssd1, ssd2.

Для чего это нужно?

Абсолютно ни для чег… конечно, я просто пошутил. Одним их замечательных свойств ящиков является то, что вы можете добавлять и удалять вещи из ящика и это никак не повлияет на содержимое других ящиков. Тут та же идея с namespaces – процесс P может «сойти с ума» и выполнить , но другой процесс Q, принадлежащий другому Mount namespace, не будет затронут, поскольку они они используют отдельные копии этих файлов.

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

Таким образом, изменения, внесенные в этот файл в одном Mount namespace, фактически будут видны во всех других Mount namespaces, которые также ссылаются на него. Поэтому мы тут откажемся от нашей аналогии с ящиком, поскольку предмет не может одновременно находиться в двух разных ящиках.

Но что, например, такое контейнер?

Надеюсь, теперь у вас есть некоторое представление о том, что может делать namespace. Вы можете предположить, что контейнеры по своей сути — обыкновенные процессы с отличающимися от других процессов namespaces, и вы будете правы. Фактически это квота. Контейнер без квот не обязан принадлежать уникальному namespace каждого типа — он может совместно использовать некоторые из них.

Например, когда вы набираете , всё, что вы делаете — говорите докеру не создавать новый Network namespace для процесса redis. И, как мы видели, Linux добавит этот процесс участником дефолтного Network namespace, как и любой другой обычный процесс. Таким образом, с точи зрения сети процесс redis точно такой же, как и все остальные. Это возможность настройки не только сети, позволяет вам делать такие изменения для большей части существующих namespaces. Тут возникает вопрос, что же такое контейнер? Остаётся ли контейнером процесс, использующий все, кроме одного, общие namespace? ¯\_(ツ)_/¯ Обычно контейнеры идут вместе с понятием изоляции, достигаемой через namespaces: чем меньше количество namespaces и ресурсов, которые процесс делит с остальными, тем более он изолирован и это всё, что действительно имеет значение.

Help: I Discover an Open Port Which I Don’t Recognize At All

The file /etc/services is used to map port numbers and protocols to service names. Try matching port numbers: Sample outputs:

https		443/tcp				# http protocol over TLS/SSL
https		443/udp

Check For rootkit

I strongly recommend that you find out which processes are really running, especially servers connected to the high speed Internet access. You can look for rootkit which is a program designed to take fundamental control (in Linux / UNIX terms “root” access, in Windows terms “Administrator” access) of a computer system, without authorization by the system’s owners and legitimate managers. See how to detecting / checking rootkits under Linux.

Environment variables.

«Art, like morality, consists in drawing the line somewhere» ~ Gilbert K. Chesterton

Related linux commands:

lsof FAQ — full documentation.awk — Find and Replace text.fuser — Identify/kill the process that is accessing a file.kill — Stop a process from running.mount — Mount a file system.ps — Process status.strace — Trace system calls and signals.uname — Print system information.
access(2), crash(1), fattach(3C), ff(1), fstat(8),
gethostname(2), isprint(3), lstat(2), netstat(1), readlink(2)
Equivalent Windows command: psfile

 
Copyright 1999-2020 SS64.com
Some rights reserved

9) Find out Ports and Services Mapping

You can find out ports and their affiliated services mapping on a Linux system using lsof command. The following command will show you the mapping details for the various running services and their associated ports on IPV4 network interface:

# lsof -Pnl +M -i4
# lsof -Pnl +M -i4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 1383 70 12u IPv4 3397 0t0 UDP *:5353
avahi-dae 1383 70 13u IPv4 3398 0t0 UDP *:53376
chronyd 1393 998 1u IPv4 2712 0t0 UDP *:123
chronyd 1393 998 3u IPv4 2714 0t0 UDP 127.0.0.1:323
dhclient 1497 0 6u IPv4 4179 0t0 UDP *:68
dhclient 1497 0 20u IPv4 4151 0t0 UDP *:24561
sshd 1707 0 3u IPv4 4897 0t0 TCP *:22 (LISTEN)
sshd 25453 0 3u IPv4 1601772 0t0 TCP 45.33.24.9:22->182.188.228.74:1130 (ESTABLISHED)
sshd 25549 0 3u IPv4 1602514 0t0 TCP 45.33.24.9:22->115.230.126.149:60138 (ESTABLISHED)
sshd 25550 74 3u IPv4 1602514 0t0 TCP 45.33.24.9:22->115.230.126.149:60138 (ESTABLISHED)

The following command will show you mapping information for IPV6 network interface:

# lsof -Pnl +M -i6
# lsof -Pnl +M -i6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 1393 998 2u IPv6 2713 0t0 UDP *:123
chronyd 1393 998 5u IPv6 2715 0t0 UDP :323
dhclient 1497 0 21u IPv6 4152 0t0 UDP *:20528
sshd 1707 0 4u IPv6 4908 0t0 TCP *:22 (LISTEN)
# lsof -Pnl +M -i4

Статистика веб-сервера

Для веб-серверов можно воспользоваться служебной страницей просмотра статуса. Она может показать статистику запросов к веб-серверу.

Apache

Для Apache необходим модуль mod_status, который идет в комплекте с данным веб-сервером. Проверить подключение модуля можно в конфигурационном файле httpd.conf (в разных Linux системах может находится в различных каталогах).

По умолчанию, server-status не активен. Создаем конфигурационный файл.

Для CentOS / Red Hat:

vi /etc/httpd/conf.d/server-status.conf

Для Ubuntu / Debian:

vi /etc/apache2/sites-enabled/server-status.conf

* где 2 — используемая версия apache.

В открытый конфигурационный файл добавим:

ExtendedStatus on
<VirtualHost *:80>
  servername 111.111.111.111
  <Location /server-status>
    Sethandler server-status
  </Location>
</VirtualHost>
<Location /server-status>
    SetHandler server-status
</Location>

* где 111.111.111.111 — IP-адрес нашего веб-сервера; 80 — порт, на котором слушает apache.* в данном примере мы прописали два варианта просмотра статистики: первый — обращение в браузере к серверу по IP-адресу + /server-status; второй — обращение к любому сайту + /server-status. Разные способы оправданы для разных настроек самих сайтов и используемых CMS.

Проверим корректность внесенных данных и перезапустим веб-сервер apache:

apachectl configtest

systemctl restart httpd || systemctl restart apache2

Теперь открываем браузер и вводим название сайта + /server-status, например, http://www.dmosk.ru/server-status. Или обращаемся к серверу по IP-адресу, например, http://111.111.111.111/server-status.

NGINX + PHP-FPM

Открываем конфигурационный файл nginx:

vi /etc/nginx/nginx.conf

В секцию http добавляем:


    server {
        listen 80;
        server_name 111.111.111.111;
        location /server-status {
              stub_status on;
        }
    }

* где 111.111.111.111 — IP-адрес нашего веб-сервера.

Проверяем корректность настройки и перезапускаем nginx:

nginx -t

systemctl restart nginx

Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:

Теперь настроим статистику для php-fpm. В конфигурационном файле nginx в нашу директиву server добавим:

vi /etc/nginx/nginx.conf


    server {
        listen 80;
        server_name 78.110.63.31;
        location /server-status {
            stub_status on;
        }
        location /status {
            access_log off;
            include fastcgi_params;
            #fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }

* обратите внимание на закомментированную строку и строку под ней. В зависимости от того, как настроен php-fpm (слушает на порту или через сокетный файл) необходимо настроить nginx

В данном примере подразумевается, что php-fpm слушает на 9000 порту.

Открываем конфигурационный файл php-fpm:

vi /etc/php-fpm.d/www.conf

Снимаем комментарий со следующей строки:

pm.status_path = /status

Проверяем настройку nginx, перезапускаем его и php-fpm:

nginx -t

systemctl restart nginx

systemctl restart php-fpm

Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *