How to detect whether a file is being written by any other process in Linux?
Posted on In QAHow to detect whether a file is being written by any other process in Linux?
Before a program open a file to processes it, it wants to ensure no other processes are writing to it. Here, we are sure after the files are written and closed, they will not be written any more. Hence, one-time checking will be good enough.
You may not know whether the file is being written. However, you may use lsof
to check whether the file is opened by any other processes. Programs like cp
will close the file after the work is done. So you may bet on it for most situations.
For a file without any other process opening it:
$ lsof -f -- ~/.bashrc
With one process openning for reading:
$ lsof -f -- ~/.bashrc
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
less 14558 zma 4r REG 253,3 1356 27787271 /home/zma/.bashrc
With one process openning for writing:
$ lsof -f -- ~/.bashrc
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 14840 zma 10w REG 253,3 1355 27787271 /home/zma/.bashrc