mv: cannot move "/home" to "/home-old": Device or resource busy
O único "use" [*] que consigo pensar, que contém o nome de um arquivo de alteração, é um ponto de montagem.
What else can I check?
Não tenho certeza, mas talvez isso possa acontecer se a montagem ainda existir em outro namespace de montagem. Porque não está obtendo desmontagens propagadas do namespace raiz, por algum motivo? Ou olhando o resultado no meu sistema, talvez os serviços systemd com 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
Observe que este problema - incapaz de renomear / home apesar de não mostrar como um ponto de montagem (no namespace atual) - deve ser corrigido no kernel do Linux versão 3.18 +.
como descobrir o namespace de um processo específico
lsns
pode ser útil se você puder instalá-lo. Mais comandos possíveis:
Listar namespaces de montagem:
# readlink /proc/*/task/*/ns/mnt | sort -u
Identifique o namespace de montagem raiz:
# readlink /proc/1/ns/mnt
Localizar processos com um determinado namespace de montagem
# readlink /proc/*/task/*/ns/mnt | grep 4026531840
Inspecione o namespace de um determinado processo:
# cat /proc/1/task/1/mountinfo
[*] EBUSY A renomeação falha porque oldpath ou newpath é um diretório que está em uso por algum processo (talvez como diretório de trabalho atual, ou como diretório raiz, ou porque ele estava aberto para leitura) ou é em uso pelo sistema (por exemplo, como ponto de montagem) , enquanto o sistema considera isso um erro. (Observe que não há requisitos para retornar EBUSY em tais casos - não há nada de errado com fazendo a renomeação de qualquer maneira, mas é permitido retornar EBUSY se o O sistema não pode lidar com tais situações.)