Я хотел смонтировать свою карту флэш-памяти и сделал ошибку установки пути монтирования как /home/my_name
. Теперь все мои документы, загрузки, изображения, и т.д. недоступны, так как моя карта флэш-памяти заменила мою предыдущую домашнюю папку.
Когда я перехожу к терминалу и типу sudo umount /home/my_name
Я получаю сообщение об ошибке:
umount: /home/my_name: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Есть ли способ зафиксировать это, где я могу восстановить свое старое /home/my_name
папка и затем монтирует карту флэш-памяти к надлежащему местоположению?
Монтирование на непустом каталоге скрывает файлы, содержавшие в нем, который часто называют затенением. Это не заставляет сами файлы находиться под угрозой срыва. Существует несколько легких шагов, которые можно сделать, чтобы диагностировать, зафиксировать, или (когда необходимый) работают вокруг этой проблемы.
Для файловой системы, смонтированной в sudo fuser -km /home/my_name
, выполнение sudo fuser -km /home/my_name
уничтожить все процессы, получающие доступ к файловой системе, поскольку Вы сделали, обычно достаточно, чтобы позволить Вам размонтировать его. Вы сообщили, что то, когда Вы сделали этот свой терминал, было закрыто в результате.
Это произойдет, если Ваш текущий каталог, в оболочке, будет точкой монтирования, Вы пытаетесь размонтироваться или один из ее подкаталогов. (Ваша оболочка уничтожается, и затем терминальная программа, выполняющая ее, видит, что оболочка закрылась и, при большинстве установок, выходов автоматически также, как она делает, когда Вы работаете exit
команда.)
Для фиксации этого просто перейдите вне монтирования и попытки размонтировать его снова. Например, Вы могли изменить каталог на /
во-первых:
cd /
sudo umount /home/my_name
Если Вы находитесь когда-нибудь в ситуации, где не хотят уничтожать процессы с fuser
, или если Вы не можете сделать так и должны узнать, каковы те процессы, у Вас есть несколько опций для нахождения их, включая некоторые графические утилиты. Я кратко проиллюстрирую одну опцию здесь.
Можно работать lsof
на каталоге для наблюдения, какие процессы получают доступ к файлам в нем:
lsof /home/my_name
Это работает хорошо на точки монтирования. Иногда lsof
может получить лучшую информацию, если Вы выполняете ее как корень, хотя это часто не необходимо:
sudo lsof /home/my_name
Вывод от lsof
обычно выглядит примерно так:
ek@Io:~$ sudo lsof ~/mnt/old
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
flock 15529 ek cwd DIR 7,0 2048 1280 /home/ek/mnt/old
flock 15529 ek 3rW REG 7,0 21114 1311 /home/ek/mnt/old/md5sum.txt
less 15530 ek cwd DIR 7,0 2048 1280 /home/ek/mnt/old
less 15530 ek 3r REG 7,0 21114 1311 /home/ek/mnt/old/md5sum.txt
less 15530 ek 5r REG 7,0 231 1325 /home/ek/mnt/old/README.diskdefines
bash 27465 ek cwd DIR 7,0 2048 1280 /home/ek/mnt/old
Это говорит Вам файлы и процессы, которые используются. В частности, если у Вас есть ситуация, где Ваша оболочка - то, что мешает ей размонтироваться, и Вы не заметили это дело обстоит так, затем lsof
однозначно даст понять с выводом как:
ek@Io:~$ lsof ~/mnt/old
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 27465 ek cwd DIR 7,0 2048 1472 /home/ek/mnt/old/boot
В вышеупомянутом примере единственная вещь, мешающая файловой системе быть размонтированной, состоит в том, что я перешел в подкаталог точки монтирования с моей оболочкой (bash
), и был все еще там.
При необходимости в большей информации о процессе один путь состоит в том, чтобы работать ps
с его идентификатором процесса, который данный во втором столбце lsof
вывод:
ek@Io:~$ ps 27465
PID TTY STAT TIME COMMAND
27465 pts/3 Ss+ 0:04 -bash
Можно также уничтожить процесс его PID (kill 27465
, но с тем, что соответствующее число находится в Вашей ситуации). Обычно лучше попробовать это перед хождением дальше к более сильному kill -KILL 27465
. ( -9
отметьте работы на месте если -KILL
, также.)
Конечно, перед использованием kill
команда или подобные средства вообще, обычно лучше попробовать заключительные программы нормальный путь, особенно если могли бы быть важные данные под угрозой. Например, лучше сохранить документ и закрыть текстовой процессор, чем выйти из текстового процессора с kill
команда.
Как Paul говорит в действительно ли нем, возможно получить доступ к файлам, “затененным” монтированием? на SuperUser можно получить доступ к файлам, затененным монтированием путем создания связывания, монтируются и перешедший им там:
sudo mkdir /mnt/root
sudo mount --bind / /mnt/root
Те команды адаптированы немного от превосходного ответа Paul до того вопроса. (Я поощряю Вас консультироваться с той страницей для дополнительных деталей.) Вы не должны использовать /mnt/root
, но это - столь же хороший выбор как любой.
Если Вы делаете это тот путь, Ваша вся корневая файловая система доступна через /mnt/root
.
Если у Вас есть отдельное /home
раздел затем, который Вы захотите заставить связывание смонтировать, связывает с тем вместо этого:
sudo mkdir /mnt/home
sudo mount --bind /home /mnt/home
Это совпадает с для /
, только с /home
.
предложение oldfred для перезагрузки системы является разумным решением этой проблемы. Необходимо смочь закрыть и перезагрузить систему, если Вы хотите. Ваши данные затенены монтированием, но не должны подвергаться риску быть потерянными.
Перезагрузка должна быть безопасной, но Вы не должны должны быть перезагружать для решения этого, если Вы не хотите. Если Вы испытываете затруднения из-за методов, данных выше, и хотите заставить их работать, прокомментируйте или (лучшее) редактирование Ваше сообщение. (Другие люди, читающие это с подобными проблемами, должны рассмотреть регистрацию нового вопроса.)