fuser


ramok аватар

Кто занял apt базу?

Иногда при попытке использования apt случается такое:

ramok ~/ sudo apt-get update
E: Не могу получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11 Ресурс временно недоступен)
E: Невозможно заблокировать каталог со списками пакетов

Это обозначает что где то есть процесс который закрыл базу apt для использования. Это могло произойти в случае сбоя программы, которая закрыла базу и забыла ее открыть, или когда где то среди десятков открытых терминалов затерялось окно в котором запущена такая программа.

Посмотрим PID процесса занявший базу apt по лок-файлу

ramok [100]~/ sudo fuser /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069

Если есть желание, то можно посмотреть что за программа залочила базу apt

ramok ~/ ps aux | grep 22069
root     22069  2.3  2.2  28704 22792 pts/27   S+   11:22   0:01 apt-get upgrade

Убиваем процесс который занял базу:

ramok ~/ sudo fuser -k -TERM /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069
ramok ~/

или не мудрствуя лукаво

ramok ~/ sudo kill -TERM 22069
0
Ваша оценка: Ничего
ramok аватар

Кто занял звук?

Некоторые программы все еще работают со звуком через OSS блокируя доступ к /dev/dsp, не давая другим программам работать со звуком. Глобальное решение проблемы сводится к использованию правильно настроенному ALSA и/или аудио серверов.

Но иногда и использующая ALSA программа может занять необходимые ресурсы и не давать
проигрывать звук другим программам. В обоих случаях можно опять воспользоваться
fuser что бы найти процесс занявший звук и убить его.

У меня иногда из-за такого в firefox пропадает звук. Проблему можно
решить так же как и в примере ниже проверив кто занял файлы в /dev/snd/*

В приведенном примере делается попытка проиграть .mp3 в mplayer, но xmms занял все.
xmms я не пользуюсь обычно, но он незаметно вызвался из firefox когда случайно
клацнул на линке звукового файла. Что и было выяснено Ж:-)

0
Ваша оценка: Ничего
ramok аватар

Как бороться с "umount: ... device is busy"

Часто бывает так, что примантировав любимую флешку или телефон или цифровую камеру к системе, возникает проблема ее размонтирования. Знакомая картина?

ramok ~/ sudo umount /var/autofs/removable/usbdrive/
umount: /var/autofs/removable/usbdrive: device is busy
umount: /var/autofs/removable/usbdrive: device is busy

Это обозначает, что какой-то процесс открыл файл или директорию
в подмантированном диске, и пока процесс не закроет все открытое, система не даст размонтировать это устройство. Задача - найти этот нехороший процесс (или процессы Ж:-). Можно воспользоваться утилиткой fuser:

ramok [1]~/ sudo fuser -m /var/autofs/removable/usbdrive/
/var/autofs/removable/usbdrive/:            20637c

Вот мы и узнали PID виновника и можем закрыть его.
Можно просто убить его с помощью kill зная его PID. А можно и воспользоваться и самой fuser:

ramok ~/ sudo fuser -m -k TERM /var/autofs/removable/usbdrive/
/var/autofs/removable/usbdrive/:            20637c

Этим мы отослали процессу с PID 20637 сигнал SIGTERM. Если не поможет, то можно отослать на крайний случай SIGKILL.
Вот теперь можно безопасно размонтировать:

ramok ~/ sudo umount /var/autofs/removable/usbdrive/
ramok ~/
0
Ваша оценка: Ничего