GNU/Linux >> Tutoriels Linux >  >> Linux

mv :impossible de déplacer la maison vers la maison - ancien :appareil ou ressource occupé

mv :impossible de déplacer "/home" vers "/home-old" :appareil ou ressource occupé

La seule "utilisation"[*] à laquelle je peux penser, qui empêche le nom d'un fichier de changer, est un point de montage.

Que puis-je vérifier d'autre ?

Je ne suis pas certain, mais cela pourrait peut-être arriver si le montage existe toujours dans un autre espace de noms de montage. Parce que les démontages ne sont pas propagés à partir de l'espace de noms racine, pour une raison quelconque? Ou en regardant le résultat sur mon système, peut-être des services systemd avec 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

Notez que ce problème - impossible de renommer /home bien qu'il ne s'affiche pas comme point de montage (dans l'espace de noms actuel) - devrait être résolu dans la version 3.18+ du noyau Linux.

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

comment trouver l'espace de noms d'un processus particulier ?

lsns pourrait être utile si vous pouvez l'installer. Plus de commandes possibles :

Répertorier les espaces de noms de montage :

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

Identifiez l'espace de noms de montage racine :

# readlink /proc/1/ns/mnt

Trouver des processus avec un espace de noms de montage donné

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

Inspecter l'espace de noms d'un processus donné :

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

[*] EBUSY Le changement de nom échoue car oldpath ou newpath est un répertoire utilisé par un processus (peut-être comme répertoire de travail actuel, ou comme répertoire racine, ou parce qu'il était ouvert en lecture) ou est utilisé par le système ( par exemple comme point de montage) , tandis que le système considère qu'il s'agit d'une erreur. (Notez qu'il n'y a aucune obligation de renvoyer EBUSY dans de tels cas - il n'y a rien de mal à renommer de toute façon - mais il est permis de renvoyer EBUSY si le système ne peut pas gérer de telles situations autrement.)


C'était NetworkManager.

Exécution de systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd n'a pas aidé, mais a rendu la table de processus très petite.

Après le systemctl stop NetworkManager , j'ai pu renommer /home.


Linux
  1. Xemacs :charger tous les fichiers dans /home/barry/.emacs_barry ?

  2. Monter /tmp et /home sur un disque dur séparé ?

  3. mdadm :impossible d'ouvrir /dev/sda1 :périphérique ou ressource occupé

  4. rmdir a échoué en raison d'un périphérique ou d'une ressource occupés

  5. cp :ne peut pas créer de répertoire :aucun fichier ou répertoire de ce type

Authentification SSH Ansible et escalade des privilèges

Le point de montage n'existe pas, malgré sa création

Pourquoi mettre des choses autres que /home sur une partition séparée ?

Comment changer /tmp par défaut en /home/user/tmp

mount :impossible de remonter le périphérique de bloc /dev/sda5 en lecture-écriture, est protégé en écriture

mdadm mdadm :impossible d'ouvrir /dev/sda1 :périphérique ou ressource occupé