Как определить процесс блокировки файла?

Я хочу знать точный процесс, который использует файл блокировки. Я не хочу исправить это, но просто чтобы знать, что делает моя система. Как я могу узнать?

Например, это сообщение:

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?

Опять же, я просто хочу определить процесс, используя его, не , как это исправить .

35
задан 19 January 2014 в 07:24

2 ответа

Существует печально известная 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

В этом случае aptitude использует файл. Вы должны использовать root, если вы не уверены, какой пользователь блокирует файл. Это также полезно для множества вещей, к сожалению, оно не устанавливается вместе с Ubuntu, поэтому вам нужно сначала установить его.

Для остальных смертных есть команда fuser. Это необычно, так как он возвращает только PID вместо имени процесса:

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

Здесь говорится, что файл и PID 4974, поэтому мы должны выяснить, кто:

➜  ~  ps 4974
  PID TTY      STAT   TIME COMMAND
 4974 pts/1    Sl+    0:06 aptitude
0
ответ дан 19 January 2014 в 07:24

lslocks - простой способ сделать это.

lslocks |grep /var/lib/dpkg/lock

Для использования оболочки для обработки идентификатора процесса:

for pid in `lslocks -rn | grep /var/lib/dpkg/lock|awk '{print $2}'`;
do 
    echo $pid; 
done
0
ответ дан 19 January 2014 в 07:24
  • 1
    Да... I' m на новой установке ubuntu 14.04 LTS, пробуя ppas выше, но мой терминал застревает при выполнении , $ sudo склонный - получают блюз установки . It' s застрявший на инструкции Устанавливающая новая версия файла конфигурации/etc/init.d/bluetooth . На самом деле это - второй раз, пробуя его, потому что на первом разе я остановил установку там и попытался перезагрузить. Система была повреждена и ubunutu wouldn' t загрузка. Таким образом, я должен был переустановить ОС снова. И I' ll должны сделать это снова как его, привычка сдвигается с места. Как Вы устанавливали это в Вашей человечности, не повреждая материал? Этот doesn' t работают над новой установкой.. – A. Vieira 7 September 2015 в 16:56

Другие вопросы по тегам:

Похожие вопросы: