fuser
Кто занял 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Кто занял звук?
Некоторые программы все еще работают со звуком через OSS блокируя доступ к /dev/dsp, не давая другим программам работать со звуком. Глобальное решение проблемы сводится к использованию правильно настроенному ALSA и/или аудио серверов.
Но иногда и использующая ALSA программа может занять необходимые ресурсы и не давать
проигрывать звук другим программам. В обоих случаях можно опять воспользоваться
fuser что бы найти процесс занявший звук и убить его.
У меня иногда из-за такого в firefox пропадает звук. Проблему можно
решить так же как и в примере ниже проверив кто занял файлы в /dev/snd/*
В приведенном примере делается попытка проиграть .mp3 в mplayer, но xmms занял все.
xmms я не пользуюсь обычно, но он незаметно вызвался из firefox когда случайно
клацнул на линке звукового файла. Что и было выяснено Ж:-)
Как бороться с "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 ~/
