Как интерпретировать этот вывод команды lsof?

Одиночная скобка [ на самом деле псевдоним для test команда, это не синтаксис.

Одна из оборотных сторон (многих) одиночной скобки - то, что, если один или несколько операндов она пытается оценить, возвращают пустую строку, она будет жаловаться, что ожидала два операнда (двоичный файл). Поэтому Вы видите, что люди делают [ x$foo = x$blah ], x гарантии, что операнд никогда не будет оценивать к пустой строке.

Двойная скобка [[ ]], с другой стороны, синтаксис и намного более способен, чем [ ]. Как Вы узнали, это не имеет единственной проблемы операнда, и это также допускает более подобный синтаксису C с >, <, >=, <=, !=, ==, &&, || операторы.

Моя рекомендация следующая: Если Ваш интерпретатор #!/bin/bash, затем всегда используйте [[ ]]

Важно отметить это [[ ]] не поддерживается всеми оболочками POSIX, однако много оболочек действительно поддерживают его такой как zsh и ksh в дополнение к bash

33
06.01.2013, 10:33
3 ответа
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
webalizer 32342 ctxmortg    5uW  REG   8,17    12288 32890954 /home2/ctxmortg/tmp/webalizer/eyebestdatedotcomauph.ctxmortgagemortgagerefi.com/dns_cache.db

FD - Дескриптор файла

Если Вы ищете записанный файл, ищете следующий флаг

# - The number in front of flag(s) is the file descriptor number of used by the process to associated with the file
u - File open with Read and Write permission
r - File open with Read permission
w - File open with Write permission
W - File open with Write permission and with Write Lock on entire file
mem - Memory mapped file, usually for share library

Так 3r средству webalizer связали дескриптор номер 3 с ...dns_cache.db, с разрешением чтения.

ВВЕДИТЕ - тип файла

В Linux почти все - файлы, но с другим типом.

REG - REGgular file, file that show up in directory
DIR - Directory

УЗЕЛ

число inode в файловой системе

Можно найти полные детали в странице справочника.

43
27.01.2020, 19:37

Информация о значениях столбцов может быть найдена в lsof (8) страница справочника. Я обращусь к тем, Вы спрашиваете о конкретно.

cwd => current working directory
3r  => file descriptor 3 opened for reading
DIR => directory
REG => regular file 

Для размонтирования диска необходимо будет, вероятно, остановить веб-сервер и уничтожить процесс webalizer (так как это обычно - пакетное задание, работал от крона).

6
27.01.2020, 19:37

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

Давайте возьмем пример с палкой usb, которая была смонтирована как/media/disk-1

$> sudo umount /media/disk-1 
[sudo] password for cj: 
umount: /media/disk-1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

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

$> lsof | grep disk-1
bash       7822         cj  cwd       DIR       8,33      16384          1 /media/disk-1

И так как столбец 2 является содержанием pid, мы можем получить название того процесса с PS.

$> ps -A | grep 7822
7822 pts/1    00:00:00 bash

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


Обновление я не думаю, что ответил на вопрос, но возможно это могло быть полезно для кого-то еще так, что я оставляю его так или иначе.

4
27.01.2020, 19:37

Теги

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