По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В этой статье мы объясним, как узнать, кто использует тот или иной файл в Linux. Это поможет вам узнать системного пользователя или процесс, который использует открытый файл.
Как узнать, кто использует файл в Linux?
Мы можем использовать команду lsof (которая является аббревиатурой от List Of Opened Files), чтобы узнать, использует ли кто-то файл, и если да, то кто. Он читает память ядра в поиске открытых файлов и перечисляет все открытые файлы. В этом случае открытый файл может быть обычным файлом, каталогом, специальным файлом блока, специальным файлом символов, потоком, сетевым файлом и многими другими, поскольку в Linux все является файлом.
Lsof используется в файловой системе, чтобы определить, кто использует какие-либо файлы в этой файловой системе. Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах для процессов, использующих файл, как показано в следующих выходных данных.
$ lsof /dev/null
Список всех открытых файлов в Linux
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 merionet 0r CHR 1,3 0t0 6 /dev/null
sh 1501 merionet 0r CHR 1,3 0t0 6 /dev/null
sh 1501 merionet 1w CHR 1,3 0t0 6 /dev/null
dbus-daem 1530 merionet 0u CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 merionet 0r CHR 1,3 0t0 6 /dev/null
xfce4-ses 1603 merionet 1w CHR 1,3 0t0 6 /dev/null
at-spi-bu 1604 merionet 0r CHR 1,3 0t0 6 /dev/null
dbus-daem 1609 merionet 0u CHR 1,3 0t0 6 /dev/null
at-spi2-r 1611 merionet 0u CHR 1,3 0t0 6 /dev/null
xfconfd 1615 merionet 0u CHR 1,3 0t0 6 /dev/null
xfwm4 1624 merionet 0r CHR 1,3 0t0 6 /dev/null
xfwm4 1624 merionet 1w CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 merionet 0r CHR 1,3 0t0 6 /dev/null
xfce4-pan 1628 merionet 1w CHR 1,3 0t0 6 /dev/null
Thunar 1630 merionet 0r CHR 1,3 0t0 6 /dev/null
Thunar 1630 merionet 1w CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 merionet 0r CHR 1,3 0t0 6 /dev/null
xfdesktop 1632 merionet 1w CHR 1,3 0t0 6 /dev/null
....
Чтобы вывести список файлов, открытых для конкретного пользователя, выполните следующую команду: замените merionet вашим именем пользователя.
$ lsof -u merionet
Список файлов, открытых пользователем:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1480 merionet cwd DIR 8,3 4096 2 /
systemd 1480 merionet rtd DIR 8,3 4096 2 /
systemd 1480 merionet txt REG 8,3 1595792 3147496 /lib/systemd/systemd
systemd 1480 merionet mem REG 8,3 1700792 3150525 /lib/x86_64-linux-gnu/libm-2.27.so
systemd 1480 merionet mem REG 8,3 121016 3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9
systemd 1480 merionet mem REG 8,3 84032 3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
systemd 1480 merionet mem REG 8,3 43304 3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1
systemd 1480 merionet mem REG 8,3 34872 2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0
systemd 1480 merionet mem REG 8,3 432640 3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd 1480 merionet mem REG 8,3 18680 3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0
systemd 1480 merionet mem REG 8,3 18712 3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd 1480 merionet mem REG 8,3 27112 3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd 1480 merionet mem REG 8,3 14560 3150485 /lib/x86_64-linux-gnu/libdl-2.27.so
...
Еще одно важное использование lsof - выяснение процесса прослушивания определенного порта. Например, определите процесс, прослушивающий порт 80, с помощью следующей команды.
$ sudo lsof -i TCP:80
Процессы, прослушивающие порт:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 903 root 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1320 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1481 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1482 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1493 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 1763 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2027 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2029 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 2044 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3199 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
httpd 3201 apache 4u IPv6 20222 0t0 TCP *:http (LISTEN)
Примечание: поскольку lsof читает память ядра при поиске открытых файлов, быстрые изменения в памяти ядра могут привести к непредсказуемым результатам. Это один из основных недостатков использования команды lsof.
Для получения дополнительной информации, смотрите справку lsof:
$ man lsof
На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux.
Предыдущая статья из цикла про протоколы TCP/IP 4 уровня: TCP и UDP тут.
Вы должны хотя бы знать о некоторых приложениях, которые можно использовать для управления и контроля сети.
Приложение World Wide Web (WWW) используется через веб-браузеры, обращаясь к содержимому, доступному на веб-серверах. Хотя его часто называют приложением для конечного пользователя, вы можете использовать WWW для управления маршрутизатором или коммутатором. Вы включаете функцию веб-сервера в маршрутизаторе или коммутаторе и используете браузер для доступа к маршрутизатору или коммутатору.
Система доменных имен (DNS) позволяет пользователям использовать имена для обозначения компьютеров, при этом DNS используется для поиска соответствующих IP-адресов. DNS также использует модель клиент / сервер, при этом DNS-серверы контролируются сетевым персоналом, а клиентские функции DNS являются частью большинства устройств, использующих TCP / IP сегодня. Клиент просто просит DNS-сервер предоставить IP-адрес, соответствующий заданному имени.
Простой протокол управления сетью (SNMP) - это протокол прикладного уровня, используемый специально для управления сетевыми устройствами. Например, Cisco поставляет широкий спектр продуктов для управления сетью, многие из которых входят в семейство программного обеспечения для управления сетью Cisco Prime. Их можно использовать для запроса, компиляции, хранения и отображения информации о работе сети. Для запроса сетевых устройств программное обеспечение Cisco Prime в основном использует протоколы SNMP.
Традиционно для перемещения файлов на маршрутизатор или коммутатор и обратно Cisco использовала упрощенный протокол передачи файлов (TFTP). TFTP определяет протокол для базовой передачи файлов - отсюда и слово "тривиальный". В качестве альтернативы маршрутизаторы и коммутаторы могут использовать протокол передачи файлов (FTP), который является гораздо более функциональным протоколом для передачи файлов. Оба хорошо работают для перемещения файлов на устройства Cisco и из них. FTP предоставляет гораздо больше функций, что делает его хорошим выбором для конечных пользователей. Клиентские и серверные приложения TFTP очень просты, что делает их хорошими инструментами в качестве встроенных частей сетевых устройств.
Некоторые из этих приложений используют TCP, а некоторые - UDP. Например, Simple Mail Transfer Protocol (SMTP) и Post Office Protocol version 3 (POP3), которые используются для передачи почты, требуют гарантированной доставки, поэтому они используют TCP.
Независимо от того, какой протокол транспортного уровня используется, приложения используют хорошо известный номер порта, чтобы клиенты знали, к какому порту пытаться подключиться. В таблице 2 перечислены несколько популярных приложений и их известные номера портов.
Таблица № 2 Популярные приложения и их известные номера портов
Теперь почитайте о том, как происходит полный процесс установления и прекращения TCP соединения.
Оболочка bash предлагает широкий выбор сочетаний клавиш, которые вы можете использовать. Они будут работать в bash в любой операционной системе.
Работа с процессами
Используйте следующие сочетания клавиш для управления запущенными процессами:
Ctrl + C: прервать (убить) текущий процесс, запущенный в терминале на переднем плане. Это посылает процессу сигнал SIGINT, который технически является просто запросом - большинство процессов его учтут, но некоторые могут и проигнорировать.
Ctrl + Z: приостановить текущий процесс, запущенный в bash на переднем плане. Это отправляет процессу сигнал SIGTSTP. Чтобы позже вернуть процесс на передний план, используйте команду fg имя_процесса.
Ctrl + D: закрыть оболочку bash. Это отправляет маркер EOF (End of file - конец файла) в bash, и bash завершает работу, когда получает этот маркер. Это похоже на команду exit.
Перемещение курсора
Используйте следующие сочетания клавиш, чтобы быстро перемещать курсор по текущей строке при вводе команды.
Ctrl + A или Home: перейти к началу строки.
Ctrl + E или End: перейти в конец строки.
Alt + B: перейти на одно слово влево (назад).
Ctrl + B: перейти на один символ влево (назад).
Alt + F: перейти вправо (вперед) на одно слово.
Ctrl + F: перейти вправо (вперед) на один символ.
Ctrl + XX: перемещение между началом строки и текущей позицией курсора. То есть можно нажать Ctrl + XX, чтобы вернуться в начало строки, что-то изменить, а затем нажать Ctrl + XX, чтобы вернуться в исходную позицию
курсора. Чтобы использовать этот шорткат, удерживайте клавишу Ctrl и дважды нажмите X.
Исправление опечаток
Эти сочетания позволяют исправлять опечатки и отменять нажатия клавиш.
Alt + T: заменить текущее слово предыдущим.
Ctrl + T: поменять местами два последних символа перед курсором. Можно использовать, чтобы быстро исправить опечатки, когда вы вводите два символа в неправильном порядке.
Ctrl + _: отменить последнее нажатие клавиши. Можно использовать несколько раз подряд.
Вырезка и склейка
Bash включает в себя несколько основных функций вырезания и вставки.
Ctrl + W: вырезать слово перед курсором и добавить его в буфер обмена.
Ctrl + K: вырезать часть строки после курсора, добавив ее в буфер обмена.
Ctrl + U: вырезать часть строки перед курсором, добавив ее в буфер обмена.
Ctrl + Y: вставить последнее вырезанное из буфера обмена.
Заглавные буквы
Оболочка bash может быстро преобразовывать символы в верхний или нижний регистр:
Alt + U: вводить каждый символ от курсора до конца текущего слова с заглавной буквы, переводя символы в верхний регистр.
Alt + L: убирает заглавные буквы с каждого символа от курсора до конца текущего слова, переводя символы в нижний регистр.
Alt + C: ввести заглавную букву под курсором. Ваш курсор переместится в конец текущего слова.
Табуляция
Завершение при помощи табуляции - очень полезная функция bash. При вводе имени файла, каталога или команды нажмите Tab, и bash автоматически завершит ввод, если это возможно. Если нет, bash покажет вам различные возможные совпадения, и вы
можете продолжить вводить и нажимать Tab, чтобы закончить ввод.
Tab: автоматическое заполнение файла, каталога или команды, которую вы вводите.
Например, если у вас есть файл с длинным именем really_long_file_name в /home/alex/ и это единственное имя файла, начинающееся с r в этом каталоге, вы можете ввести /home/alex/r, нажать Tab,
и bash автоматически заполнит /home/alex/really_long_file_name для вас. Если у вас есть несколько файлов или каталогов, начинающихся с r, bash проинформирует вас о доступных вариантах. Вы можете начать вводить один из них
и нажать Tab, чтобы продолжить.
Работа с историей команд
Вы можете быстро просмотреть свои недавние команды, которые хранятся в файле истории bash вашей учетной записи:
Ctrl + P или стрелка вверх: переход к предыдущей команде в истории команд. Нажмите ярлык несколько раз, чтобы вернуться к истории.
Ctrl + N или стрелка вниз: переход к следующей команде в истории команд. Нажмите ярлык несколько раз, чтобы перейти вперед по истории.
Alt + R: отменить любые изменения команды, извлеченной из истории, если вы ее редактировали.
В Bash также есть специальный режим поиска, который вы можете использовать для поиска ранее выполненных команд:
Ctrl + R: вспомнить последнюю команду, соответствующую указанным вами символам. Нажмите это сочетание и начните вводить символы для поиска команды в истории bash.
Ctrl + O: запустите найденную команду с помощью Ctrl + R.
Ctrl + G: выйти из режима поиска в истории без выполнения команды.