How to identify the process locking a file?

I want to know the exact process that is using the lock file. I don't want to fix it, but just to know what is my system doing. How can I find out?

For example, this message:

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Again, I just want to identify the process using it, not how to fix it.

0

2 Answers

There is the infamous lsof:

sudo lsof /var/lib/dpkg/lock
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
aptitude 4974 root 3uW REG 8,23 0 815673 /var/lib/dpkg/lock

In this case aptitude is using the file. You should use root in case you are not sure which user is locking the file. It's useful for a bunch of things too, sadly it doesn't come installed with Ubuntu, so you have to install it first.

For the rest of mortals, there's the fuser command. This is peculiar since it only returns the PID instead of the name of the process:

➜ ~ sudo fuser /var/lib/dpkg/lock
/var/lib/dpkg/lock: 4974

Here it says that the file and PID, which is 4974, so we must investigate who is:

➜ ~ ps 4974 PID TTY STAT TIME COMMAND 4974 pts/1 Sl+ 0:06 aptitude
4

lslocks is a simple way to do that.

lslocks |grep /var/lib/dpkg/lock

For use shell to handle the process id:

for pid in `lslocks -rn | grep /var/lib/dpkg/lock|awk '{print $2}'`;
do echo $pid;
done
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like