Найти текущий процесс в определенном каталоге [duplicate]

Ответ Бруно только наполовину правильный.

После установки dconf вы должны перейти к приложениям> индикатор-сессия

Поставьте галочку для элемента «подавлять-выходить из системы»,

Это будет работать для Unity в Ubuntu 11.10, но не для Gnome 3 или Gnome Classic.

22
задан 6 November 2010 в 23:05

36 ответов

Также это может помочь:

  lsof |  grep \ / media \ / KINGSTON  
2
ответ дан 8 August 2018 в 23:16

Между тем команда фьюзера значительно улучшилась. Вы можете выполнить полную работу с помощью одной команды:

  sudo fuser -ickv / "mountpoint"  

Где:

  • k убивает процесс нарушения
  • , а v заранее показывает процесс и его пользователя
  • и i просит вас подтвердить.

Если какой-то процесс сопротивляется, попробуйте еще раз с fuser -ickv -9 (или, в более общем смысле, с -SIGNAL ), который убивает самые упрямые. Но вы всегда найдете какой-то «бессмертный» процесс ...!

2
ответ дан 8 August 2018 в 23:16

Наиболее полезным инструментом является 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 показывает имя файла; вы можете увидеть (удалено) , если файл был удален при открытии (когда файл удален, он больше не имеет имени, но он все еще существует до тех пор, пока последний процесс с его закрытием не закрывает файл). ПОЛЬЗОВАТЕЛЬ должен быть понятным. Остальные столбцы здесь не имеют значения, кроме, возможно, FD , который показывает, как файл используется процессом:

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

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

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

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

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

7
ответ дан 8 August 2018 в 23:16

Между тем команда фьюзера значительно улучшилась. Вы можете выполнить полную работу с помощью одной команды:

  sudo fuser -ickv / "mountpoint"  

Где:

  • k убивает процесс нарушения
  • , а v заранее показывает процесс и его пользователя
  • и i просит вас подтвердить.

Если какой-то процесс сопротивляется, попробуйте еще раз с fuser -ickv -9 (или, в более общем смысле, с -SIGNAL ), который убивает самые упрямые. Но вы всегда найдете какой-то «бессмертный» процесс ...!

2
ответ дан 14 August 2018 в 13:15
  • 1
    Я нашел бессмертный процесс, моя неудачная попытка использовать vboxmanage . -_- – sudo 8 September 2017 в 03:04

Наиболее полезным инструментом является 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 показывает имя файла; вы можете увидеть (удалено) , если файл был удален при открытии (когда файл удален, он больше не имеет имени, но он все еще существует до тех пор, пока последний процесс с его закрытием не закрывает файл). ПОЛЬЗОВАТЕЛЬ должен быть понятным. Остальные столбцы здесь не имеют значения, кроме, возможно, FD , который показывает, как файл используется процессом:

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

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

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

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

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

7
ответ дан 14 August 2018 в 13:15

Также это может помочь:

  lsof |  grep \ / media \ / KINGSTON  
2
ответ дан 14 August 2018 в 13:15
  • 1
    Нет необходимости скрывать косые черты. – Marius Gedminas 6 November 2010 в 18:56
  • 2
    Когда вы не уверены, grep с кавычками, например. grep "media / KINGSTON" – Adam Matan 16 December 2010 в 17:55

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

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