Случайно удаленные /etc/rc0.d и /etc/rc1.d и не могут загружаться

Самый полезный инструмент - lsof. Он показывает, какие файлы используются в каких процессах. Если /media/KINGSTON является точкой монтирования (имя устройства также будет работать), следующая команда показывает все файлы, которые используются в этой точке монтирования:

lsof /media/KINGSTON

Если вы запустите эту команду как обычную пользователь, он будет показывать только ваши собственные процессы¹. Запустите sudo lsof /media/KINGSTON, чтобы просмотреть все процессы пользователей.

Результат из lsof выглядит так:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh4    31421 gilles  cwd    DIR    8,1     4096 130498 /var/tmp
zsh4    31421 gilles  txt    REG    8,1   550804 821292 /bin/zsh4
zsh4    31421 gilles  mem    REG    8,1    55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4    31421 gilles   12r   REG    8,1   175224 822276 /usr/share/zsh/functions/Completion.zwc

Столбец COMMAND показывает имя исполняемого файла программы и столбец PID показывает идентификатор процесса. В столбце NAME указано имя файла; вы можете увидеть (deleted), если файл был удален при открытии (когда файл был удален, он больше не имеет имени, но он все еще существует до тех пор, пока последний процесс с его закрытием не закрывает файл). USER должен быть понятным. Остальные столбцы здесь не важны, кроме, возможно, FD, который показывает, как файл используется процессом:

cwd: текущий рабочий каталог txt: исполняемый файл программы² mem: файл с отображением памяти (здесь, подумайте об этом как открытый файл) число: фактический открытый файл; в следующей букве указывается режим открытия, например r для чтения, и w для записи

Нет механического способа найти окно, в котором файл открыт (это на самом деле не имеет технического смысла : если процесс имеет несколько окон, файл не связан конкретно ни с одним окном, ни даже с простым способом идентификации окна процесса (и, конечно, процесс не должен иметь никаких окон). Но обычно имени команды и имени файла достаточно, чтобы найти нарушителя и закрыть файл должным образом.

Если вы не можете закрыть файл и просто хотите закончить все это, вы можете убить процесс с помощью [ f17] (где 31421 - идентификатор процесса) или kill -HUP 31421 («зависание»). Если обычное убийство не делает трюк, убейте его с крайним предрассудком: kill -KILL 31421.

Существует GUI для lsof, lsof , но он не совсем готов к прайм-тайм но пока не упакован для Ubuntu.

¹ Lsof может перечислить некоторую информацию о процессах других пользователей, но не обнаруживает точку монтирования, поэтому не будет перечислять их, если вы укажете mount точка. ² Исполняемый код часто называют текстом при обсуждении исполняемых форматов.

1
задан 31 October 2012 в 11:54

0 ответов

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

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