Использование этих двух отличается.
Для lsof
, для показа открытых файлов для определенного пути только поместить --
перед каждым путем
lsof -- /home4
lsof -- /home4 -- /home2
lsof
покажет весь открытый файл, содержащий путь.
Для fuser
, с другой стороны, покажите процесс, открывающий файл, который Вы указали
fuser -uv <filename>
Для показа процессов, получающих доступ к конкретному пути, использовать -m
fuser -uvm /home3
fuser
более полезно в идентификации идентификатора процесса, открывающего конкретный файл.
lsof
полезно для обнаружения всего файла (файлов), открытого конкретным процессом.
ssh user@1.2.3.4 "ls /home/somefile" || { echo "File does not exist"; exit 1; }
Это называют составной командой. От man bash
:
Compound Commands
A compound command is one of the following:
(list) list is executed in a subshell environment (see COMMAND EXECU‐
TION ENVIRONMENT below). Variable assignments and builtin com‐
mands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
{ list; }
list is simply executed in the current shell environment. list
must be terminated with a newline or semicolon. This is known
as a group command. The return status is the exit status of
list. Note that unlike the metacharacters ( and ), { and } are
reserved words and must occur where a reserved word is permitted
to be recognized. Since they do not cause a word break, they
must be separated from list by whitespace or another shell
metacharacter.
()
синтаксис, вероятно, не работал бы в Вашей ситуации, потому что команды будут выполняться в подоболочке, и затем exit
просто закрыл бы подоболочку.
Править: объяснить различие между круглыми скобками ()
и фигурные скобки {}
:
Круглые скобки заставляют содержавшие команды выполняться в подоболочке. Это означает, что другой процесс оболочки порожден, который оценивает команды, и exit
в вопросе OP уничтожил бы эту подоболочку.
Фигурные скобки вместо этого заставляют команды быть оцененными в текущей оболочке. Теперь exit
уничтожает текущую оболочку, которая была бы, например, предпочтительна, если Вы используете эту строку сценарий оболочки.