Как я узнаю, какие процессы, предотвращающие, размонтировались устройства?

Я использую обоих, хотя, если бы я должен был выбрать один, я знаю, какой я выбрал бы. Однако, я попытаюсь сделать объективное сравнение по нескольким проблемам.

  • Доступный везде? Если Вы - профессиональный системный администратор, который работает с системами Unix или продвинутым пользователем на встроенных устройствах (маршрутизаторы, смартфоны с Busybox, …), необходимо знать vi (не Vim), потому что это доступно во всех системах Unix и большинстве подобных Unix систем, ли рабочий стол, сервер или встроенный. Для обычного пользователя этот аргумент не важен: Emacs легко доступен для каждого рабочего стола/сервера ОС, и так как он поддерживает удаленное редактирование, достаточно иметь его на Вашей настольной машине так или иначе.

  • Чрезмерно увеличенный в размерах? Emacs однажды поддержал шутливо “Восемь мегабайтов И Постоянно Свопинг”. Прямо сейчас, на моей машине, Google Chrome нужно почти столько RAM на вкладку, сколько Emacs делает для 100 открытых файлов, и я даже не упомяну Firefox. В 21-м веке чрезмерное увеличение размера Emacs является просто мифом.

    Чрезмерное увеличение размера функции не является проблемой также. Если Вы не используете его, Вы не должны знать, что это там. Функции Emacs держатся в стороне от пути, когда Вы не используете их, и документация очень хорошо организована.

  • Время запуска: Vi (m) сторонники жалуется на время запуска Emacs. Да, Emacs не спешит запускать, но это не грандиозное предприятие: Вы запускаете Emacs однажды на сессию, затем соединяетесь с рабочим процессом с emacsclient. Таким образом, медленный запуск Emacs является главным образом мифом.

    Существует одно исключение, которое является, когда Вы входите в систему удаленной машины и хотите отредактировать файл там. Запуск удаленного Emacs (обычно) медленнее, чем запуск удаленного Vim. В некоторых ситуациях можно сохранить Emacs, работающий в Экране. Можно также отредактировать удаленные файлы из Emacs, но он действительно повреждает поток, если Вы находитесь на ssh сессии в терминале. (Так как XEmacs 21 или GNU Emacs 23, можно открыть окно Emacs от выполнения X экземпляров в терминале.)

    Взятие реванш, я наблюдал, что Vim, берущий заметно дольше, загружается, чем Emacs (vim -u /dev/null по сравнению с. emacs -q). По общему признанию это было на странной платформе (Cygwin).

  • Начальная кривая обучения: Это варьируется от человека человеку. График Michael Mrozek заставил меня хихикать. Серьезно, я соглашаюсь, что кривая обучения Vim запускается крутой, более крутой, чем какой-либо другой редактор, хотя это может быть уменьшено при помощи gvim.

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

  • Асимптотическая кривая обучения: И Vim и Emacs имеют много функций, и Вы будете продолжать обнаруживать новые после лет использования.

  • Производительность: Это - чрезвычайно твердая тема. Сторонники vi (m) утверждают, что можно сделать в значительной степени все, не покидая домашнюю строку, и это делает Вас более эффективными при необходимости в нем больше всего. Сторонники Emacs парируют, что Emacs имеет много команд, которые не часто используются, не гарантируйте привязку клавиш, но чертовски удобны, когда Вам нужны они (обязательная xkcd ссылка).
    Мое личное мнение - то, что Emacs в конечном счете побеждает, если у Вас нет нетрудоспособности ввода (и даже затем можно настроить Emacs для требования только сочетаний клавиш и не комбинаций как Ctrl+letter). Домашние ключи строки хороши, но они часто не так большая часть победы, потому что необходимо переключить режимы. Я не думаю, что существует что-либо, что Vim может сделать значительно более эффективно, чем Emacs, тогда как обратное верно.

  • Настраиваемость: Оба редактора программируемы, и существует обширное тело доступных пакетов для обоих. Однако Vim является редактором с макроязыком; Emacs является редактором, записанным в Lisp с некоторыми специальными примитивами. Emacs побеждает эффектно, когда Вы пытаетесь сделать что-то, о чем просто не думали авторы. Этого не происходит каждый день, но это действительно накапливается за эти годы.

  • Больше, чем редактор: Vim является редактором. Emacs не является просто редактором: это - также IDE, файловый менеджер, эмулятор терминала, веб-браузер, почтовый клиент, клиент новостей... Является ли это хорошей вещью, или плохой вещью является вопрос для дебатов. Но можно использовать Emacs в качестве простого редактора (см., “что функция чрезмерно увеличивается в размерах” выше).

  • Как IDE: И Vim и Emacs имеют поддержку большого количества языков программирования и других текстовых форматов. Вне основ, таких как синтаксическая окраска и автоматическое добавление отступа, оба усовершенствовали функции IDE, такие как код и поиски перекрестной ссылки документации, помогли вставкам и рефакторингу, управлению интегрированной версией и способности инициировать компиляцию и переход к первой ошибке.

    Один домен, где Emacs прост лучше, чем Vim, является взаимодействием с асинхронными подпроцессами. Именно тогда Вы запускаете долгую компиляцию и хотите сделать что-то еще в том же экземпляре редактора, в то время как компилятор крутится. Или когда Вы хотите взаимодействовать с циклом Read-eval-print — Emacs действительно сияет в этом, Vim только имеет неуклюжие взломы для предложения. Тем не менее, новое ветвление энергии, Неоэнергия, оказалось, зафиксировала это и реализовала другие различные исправления ошибок, не реализованные в энергии запаса.

64
25.07.2019, 10:10
6 ответов

Использовать lsof | grep /media/whatever узнать, что использует монтирование.

Кроме того, рассмотрите umount -l (ленивый umount), чтобы препятствовать тому, чтобы новые процессы использовали диск, в то время как Вы моетесь.

63
27.01.2020, 19:32
  • 1
    fuser -mv /path/to/mountpoint могла бы быть более читаемая альтернатива для обнаружения процессов с помощью mointpoint. –  Riccardo Murri 14.10.2010, 20:59
  • 2
    @RiccardoMurri lsof | grep работы лучше для меня. fuser -mv кажется, просто выводит 80 + несвязанных процессов. Я использую, монтируют связанные каталоги. –  Ricky Boyce 26.08.2017, 13:27
  • 3
    umount -l опасно. mount -o bind режим 000 пустой каталог на вершине вместо этого, и моется через lsof +f -- /dev/device. –  Tom Hale 03.09.2017, 12:19

Большую часть времени лучшая команда для использования является lsof (“список открытые файлы”).

lsof +f -- /media/usb0

где /media/usb0 точка монтирования Карты памяти или другой файловой системы для размонтирования. +f -- говорит lsof рассматривать последующий аргумент как точку монтирования; это обычно, но не всегда, справляется самостоятельно, так, чтобы lsof /media/usb0 также работы. Это находит открытые файлы (даже несвязанные), файлы с отображенной памятью, текущие каталоги и некоторое более неясное использование. Необходимо будет выполнить команду как корень для получения информации о процессах других пользователей (и я думаю, что существуют нельды где lsof должен быть выполнен как корень).

Существует использование, которое не найдет lsof; они являются редкими на съемных носителях. Они включают:

  • точки монтирования: Вы не можете размонтироваться /foo если /foo/bar точка монтирования.
  • смонтируйте устройства: Вы не можете размонтироваться /foo если /foo/bar смонтированное блочное устройство или смонтированный циклом регулярный файл, или если это - источник Linux, связывают, монтируются.
  • Экспорт NFS: lsof не обнаружит, что дерево экспортируется ядром сервер NFS.

Другая команда, которая может служить в повышении, является термофиксатором, который только перечисляет PIDs процессов с открытыми файлами на устройстве:

fuser -m /media/usb0
36
27.01.2020, 19:32

Можно использовать lsof как Peter, сказанный, или если Вы уверены, Вы просто хотите уничтожить все те вещи и размонтировать его, можно, вероятно, сделать что-то как:

fuser -Mk /mnt/path
umount /mnt/path
8
27.01.2020, 19:32
  • 1
    Если Вы собираетесь сделать это, изучите использование -M для безопасности. –  Tom Hale 18.08.2017, 11:41

Если Вы будете использовать GNOME, то размонтировавшийся через Наутилус отобразит сообщение, указывающее, какой процесс все еще использует диск и файл, который это использует.

alt text

5
27.01.2020, 19:32

Это распространенная ошибка: вы переходите к другому пользователю (root или любому другому пользователю), переходите в каталог подключенного устройства, а затем выйдите из системы как этот пользователь. Когда вы забываете, что оставили в этом каталоге, вы можете пытаться найти, пока не ослепнете. lsof действительно показывает оболочке, какой текущий каталог использует это устройство. Возможно, вы захотите снова выполнить su от имени этого пользователя, чтобы сменить каталог.

-2
27.01.2020, 19:32

Для (не менее )OpenBSD:

$ fstat /mnt/mountpoint

Например, (использование doasдля выполнения fstatот имени пользователя root, поскольку в противном случае мы видели бы только наши собственные процессы):

$ doas fstat /usr/ports
USER     CMD          PID   FD MOUNT        INUM MODE         R/W    SZ|DV NAME
_pbuild  make       15172   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/
_pbuild  make       40034   wd /usr/ports  3923598  drwxrwxr-x     r     1536 /usr/ports/

В этом случае я не смогу размонтировать /usr/ports, пока пользователь _pbuildне завершит выполнение этих двух makeпроцессов.

1
27.01.2020, 19:32

Теги

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