回答:
fuserこれにも使用できます:
~> less .vimrc
# put in background
~> fuser .vimrc
.vimrc:              28135
~> ps 28135
  PID TTY      STAT   TIME COMMAND
28135 pts/36   T      0:00 less .vimrc
              if [ フューザ "$ file" `]; その後、exit`
                    ls次のパターンと同じです。エラー(無効なオプションが指定されているなど)またはファイルが見つからない場合(および情報を正常に報告する場合は0 )に終了コード2を返します。
                    ほとんどのLinuxシステムでlsof NAMEは、次のことを行います。
fin@r2d2:~$ lsof /home/fin
COMMAND   PID USER   FD   TYPE DEVICE SIZE    NODE NAME
bash    21310  fin  cwd    DIR    8,1 4096 5054467 /home/fin
lsof    21320  fin  cwd    DIR    8,1 4096 5054467 /home/fin
lsof    21321  fin  cwd    DIR    8,1 4096 5054467 /home/fin
fin@r2d2:~$
              cwd行(プロセスの現在の作業ディレクトリとしての使用を報告する)はディレクトリのみを報告します。
                    ファイルを開くことはロックではありません。各プロセスが最初にファイルが開いているかどうかを確認し、開いている場合は続行しないか、開いていない場合は作成/開く必要がある場合、2つのプロセスが同時に十分に確認できるためです。開いていないことを確認してから、両方を作成または開きます。
ファイルをロックとして使用するには、チェックアンドロック操作を単一の中断できない操作にする必要があります。Unixファイルシステムでこれを実現するには、読み取り専用モードでファイルを作成し、それを削除してロック解除します。ファイルが存在する(読み取り専用である)場合、ファイルの作成は失敗するため、単一のアトミック操作でチェックアンドロックを取得できます。
ロックプロセスがデーモンとして実行されるシェルスクリプトである場合、umask新しいファイルが作成されるアクセス許可を設定するプロセスごとの設定を使用して、この効果を得ることができます。
oldumask = $(umask)
umask 222#所有者にも書き込めないファイルを作成
エコー$$> / var / lock / fooの場合
それから
    :ロックに成功しました
他に
    :ロックに失敗しました
fi
umask $ oldumask
これにより、所有プロセスのPIDもファイルに書き込まれ、他の問題が解決されます。 cat /var/lock/foo
/proc、rootとして尋ねることができます。
ls -l /proc/*/cwd | grep '/var/lock/foo$'
または、致命的なユーザーとして:
ls -l /proc/*/cwd 2>/dev/null | grep '/var/lock/foo$'
どの正確なプロセスのファイル記述子が、lsofまたはfuser- なしでファイルにリンクしているかを知りたい場合/proc:
$ find /proc -regex '\/proc\/[0-9]+\/fd\/.*' -type l -lname "*$1*" -printf "%p -> %l\n" 2> /dev/null
$1検索している開いているファイル名に置き換えます。-printf表示したいものを修正するか、そのプロセスの情報egrep -o '[0-9]+' | head -1で使用するためにパイプすることができます。ps -Fp <pid>
@finによって答えは明らかに、最良の答えですが、答えることJoseLSeguraさんのコメント@これが利用できない場合は、上記のソリューションは、私の回答でした。$ lsof <filename>