GNU/Linux >> Linux Esercitazione >  >> Linux

mv:impossibile spostarsi da casa a casa-old:dispositivo o risorsa occupati

mv:cannot move "/home" to "/home-old":Dispositivo o risorsa occupati

L'unico "uso" [*] a cui riesco a pensare, che impedisce al nome di un file di cambiare, è un punto di montaggio.

Cos'altro posso controllare?

Non ne sono sicuro, ma forse questo potrebbe accadere se il montaggio esiste ancora in un altro spazio dei nomi di montaggio. Perché per qualche motivo non viene propagato lo smontaggio dallo spazio dei nomi root? O guardando il risultato sul mio sistema, forse systemd services 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

Nota che questo problema - impossibile rinominare /home nonostante non venga visualizzato come punto di montaggio (nello spazio dei nomi corrente) - dovrebbe essere risolto nel kernel Linux versione 3.18+.

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

come scoprire lo spazio dei nomi di un particolare processo?

lsns potrebbe essere utile se puoi installarlo. Altri comandi possibili:

Elenca gli spazi dei nomi di montaggio:

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

Identifica lo spazio dei nomi di montaggio root:

# readlink /proc/1/ns/mnt

Trova i processi con un dato spazio dei nomi di montaggio

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

Ispeziona lo spazio dei nomi di un determinato processo:

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

[*] EBUSY La ridenominazione fallisce perché oldpath o newpath è una directory che è in uso da qualche processo (forse come directory di lavoro corrente, o come directory root, o perché era aperta per la lettura) o è in uso dal sistema ( ad esempio come punto di montaggio) , mentre il sistema lo considera un errore. (Si noti che non è necessario restituire EBUSY in questi casi, non c'è niente di sbagliato nel rinominare comunque, ma è consentito restituire EBUSY se il sistema non è in grado di gestire tali situazioni.)


Era NetworkManager.

Esecuzione di systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd non ha aiutato, ma ha reso la tabella dei processi molto piccola.

Dopo systemctl stop NetworkManager , sono riuscito a rinominare /home.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Debian:accesso ai contenuti originali di Mount Point?

  3. Debian – Spostare /var, /home in una partizione separata?

  4. mdadm:impossibile aprire /dev/sda1:dispositivo o risorsa occupata

  5. rmdir non riuscito a causa del dispositivo o della risorsa occupata

Autenticazione SSH Ansible ed escalation dei privilegi

Il punto di montaggio non esiste, nonostante lo abbia creato

Come determinare se il montaggio NFS è montato come v3 o v4?

Autorizzazioni di scrittura dell'utente SFTP con chroot

Come modificare /tmp predefinito in /home/user/tmp

mdadm mdadm:impossibile aprire /dev/sda1:dispositivo o risorsa occupata