Одиночная скобка [
на самом деле псевдоним для test
команда, это не синтаксис.
Одна из оборотных сторон (многих) одиночной скобки - то, что, если один или несколько операндов она пытается оценить, возвращают пустую строку, она будет жаловаться, что ожидала два операнда (двоичный файл). Поэтому Вы видите, что люди делают [ x$foo = x$blah ]
, x
гарантии, что операнд никогда не будет оценивать к пустой строке.
Двойная скобка [[ ]]
, с другой стороны, синтаксис и намного более способен, чем [ ]
. Как Вы узнали, это не имеет единственной проблемы операнда, и это также допускает более подобный синтаксису C с >, <, >=, <=, !=, ==, &&, ||
операторы.
Моя рекомендация следующая: Если Ваш интерпретатор #!/bin/bash
, затем всегда используйте [[ ]]
Важно отметить это [[ ]]
не поддерживается всеми оболочками POSIX, однако много оболочек действительно поддерживают его такой как zsh
и ksh
в дополнение к bash
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
Если Вы ищете записанный файл, ищете следующий флаг
# - 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 в файловой системе
Можно найти полные детали в странице справочника.
Информация о значениях столбцов может быть найдена в lsof (8) страница справочника. Я обращусь к тем, Вы спрашиваете о конкретно.
cwd => current working directory
3r => file descriptor 3 opened for reading
DIR => directory
REG => regular file
Для размонтирования диска необходимо будет, вероятно, остановить веб-сервер и уничтожить процесс webalizer (так как это обычно - пакетное задание, работал от крона).
В этом сценарии я обычно использую 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 на устройстве, таким образом, в этой точке я мог или закрыть или уничтожить тот терминал, таким образом, устройство будет свободно снова.
Обновление я не думаю, что ответил на вопрос, но возможно это могло быть полезно для кого-то еще так, что я оставляю его так или иначе.