Linux - Locking a file

You could use the following command to lock a Linux file


#Open myfile as file descriptor 2
$ exec 2>myfile
#lock the file descriptor 2
$ flock -x 2

And release the lock with the following

$ exec 2>&-

Then, you could show file descriptor holding with the following command

lsof | grep myfile

or

lsof myfile

It could return something like

bash        132  userX    2wW   REG    8,2    0 135612 myfile

The following is the man page from lsof


FD
is the File Descriptor number of the file or:
cwd current working directory; Lnn library references (AIX); err FD information error (see NAME column); jld jail directory (FreeBSD); ltx shared library text (code and data); Mxx hex memory-mapped type number xx. m86 DOS Merge mapped file; mem memory-mapped file; mmap memory-mapped device; pd parent directory; rtd root directory; tr kernel trace file (OpenBSD); txt program text (code and data); v86 VP/ix mapped file;
FD is followed by one of these characters, describing the mode under which the file is open:
r for read access;
w for write access;
u for read and write access;
space if mode unknown and no lock
character follows;
'-' if mode unknown and lock
character follows.
The mode character is followed by one of these lock characters, describing
the type of lock applied to the file:
N for a Solaris NFS lock of unknown type;
r for read lock on part of the file;
R for a read lock on the entire file;
w for a write lock on part of the file;
W for a write lock on the entire file;
u for a read and write lock of any length;
U for a lock of unknown type;
x for an SCO OpenServer Xenix lock on part
of the file;
X for an SCO OpenServer Xenix lock on the
entire file;
space if there is no lock.

So, if the output is 2wW, it means File Descriptor 2 is open for write access and has a write lock on the entire file.

Comments

Popular Posts