Намиране на заключени Linux файлове

Понякога се случва приложението или да не стартира, или да е нестабилно, поради факта, че някои файлове са заключени от други процеси. Това може да се случи, когато множество клиенти споделят един и същ дял, например домашната споделена папка е монтирана на няколко компютъра.
За тези цели са ни необходими помощните програми lsof и lslk.
Помислете за пример, базиран на дистрибуцията на Ubuntu.
Инсталирайте необходимите пакети (хранилището на вселената трябва да е свързано) - # sudo apt-get update # sudo apt-get install lsof lslk
Сега всички необходими инструменти са налице.
Например, ние ще търсим и изтриваме заключени KDE сесийни файлове в споделеното хранилище, където те се съхраняват и монтират на локални машини, потребителски домашни директории (NFS)
Така че нека изпълним lslk
Интересното е, че в този списък първите четири реда са маркирани като неизвестни
Получихме доста пълна информация в този списък, знаем какви файлове се използват в нашата файлова система (в нашия случай се интересуваме от / mnt / home), имаме нужда от PID на процесите. Вижте документацията на lslk за по-подробен изход на параметрите.
Така че виждаме, че четири процеса използват някои файлове от /mnt/homes, нека се опитаме да намерим файловете, използвани от тези процеси.
За да направим това, имаме нужда от помощната програма lsof # lsof -p 1190,2294,2392,2397 Резултатът от тази команда ще бъде списък на всички файлове на изброените процеси. Вярно е, че понякога може да не постигнем желания резултат.
След това можете да опитате да намерите файла по номера на inode - # find /mnt/homes -inum 308115263 /mnt/homes/home/foo/.qt/.qtrc.lock
Намерен е заключен файл, изтрийте го # rm -f /mnt/homes/home/foo/.qt/.qtrc.lock
По този начин, ниепремахна всички блокирани файлове и можем да стартираме нашето приложение отново.