GNU/Linux >> Tutoriales Linux >  >> Linux

mv:no se puede mover de casa a casa-antiguo:Dispositivo o recurso ocupado

mv:no se puede mover "/home" a "/home-old":Dispositivo o recurso ocupado

El único "uso"[*] que se me ocurre, que evita que cambie el nombre de un archivo, es un punto de montaje.

¿Qué más puedo comprobar?

No estoy seguro, pero tal vez esto podría suceder si el montaje aún existe en otro espacio de nombres de montaje. ¿Porque no se propagan los desmontajes desde el espacio de nombres raíz, por alguna razón? O mirando el resultado en mi sistema, tal vez servicios systemd con ProtectHome ?

$ grep -h home /proc/*/task/*/mountinfo | sort -u
121 89 0:22 /systemd/inaccessible/dir /home ro,nosuid,nodev shared:142 master:24 - tmpfs tmpfs rw,seclabel,mode=755
275 243 253:2 / /home ro,relatime shared:218 master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
321 288 253:2 / /home rw,relatime shared:262 master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
84 64 253:2 / /home rw,relatime shared:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
85 46 253:2 / /home rw,relatime master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered

Tenga en cuenta este problema:no se puede cambiar el nombre de /home a pesar de que no se muestra como un punto de montaje (en el espacio de nombres actual), debe solucionarse en la versión 3.18+ del kernel de Linux.

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe

¿Cómo averiguar el espacio de nombres de un proceso en particular?

lsns podría ser útil si puede instalarlo. Más comandos posibles:

Lista de espacios de nombres de montaje:

# readlink /proc/*/task/*/ns/mnt | sort -u

Identifique el espacio de nombres del montaje raíz:

# readlink /proc/1/ns/mnt

Encuentra procesos con un espacio de nombres de montaje determinado

# readlink /proc/*/task/*/ns/mnt | grep 4026531840

Inspeccione el espacio de nombres de un proceso determinado:

# cat /proc/1/task/1/mountinfo

[*] EBUSY El cambio de nombre falla porque oldpath o newpath es un directorio que está en uso por algún proceso (tal vez como directorio de trabajo actual, o como directorio raíz, o porque estaba abierto para lectura) o está en uso por el sistema ( por ejemplo como punto de montaje) , mientras que el sistema lo considera un error. (Tenga en cuenta que no hay ningún requisito para devolver EBUSY en tales casos; de todos modos, no hay nada de malo en cambiar el nombre, pero está permitido devolver EBUSY si el sistema no puede manejar tales situaciones).


Era NetworkManager.

Ejecutando systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd no ayudó, pero hizo que la tabla de procesos fuera muy pequeña.

Después de systemctl stop NetworkManager , pude cambiar el nombre de /home.


Linux
  1. Debian – ¿Mover /var, /home a una partición separada?

  2. ¿Cómo cambiar los puntos de montaje?

  3. ¿Montar /tmp y /home en un disco duro separado?

  4. mdadm:no se puede abrir /dev/sda1:dispositivo o recurso ocupado

  5. ¿Cómo deshabilitar a Gnome para que no haga Documentos/Video/en CASA?

Autenticación SSH de Ansible y escalada de privilegios

Xemacs:¿Cargar todos los archivos en /home/barry/.emacs_barry?

rmdir falló debido a dispositivo o recurso ocupado

cp:no se puede crear el directorio:no existe tal archivo o directorio

¿Por qué poner otras cosas que no sean /home en una partición separada?

Permisos de escritura de usuario SFTP chrooted