다른 파일을 이동하여 파일을 덮어쓸 수 없습니다.

다른 파일을 이동하여 파일을 덮어쓸 수 없습니다.

/some/foo일반 텍스트 파일이 있습니다 . 이를 사용하여 편집할 수도 vim있고 cat다른 작업을 수행할 수도 있습니다. 하지만 자동 편집 프로세스를 사용하려고 할 때마다 sed다음과 같은 메시지가 나타납니다.

sed: cannot move '/some/sedGl29Uj': Device or resource busy

sed출력을 임시 파일로 리디렉션 해 보았지만 cat제대로 작동했습니다. 하지만 위의 임시 파일을 이동하려고 하면 다음과 같이 표시됩니다.

root@localhost:/some # mv tmp foo
mv: Device or resource busy

파일에 쓸 vim수 있는데 왜 쓸 수 없는지 걱정됩니다 . 우분투 16.04.1 LTS. (루트 마운트 지점, ext4)의 하위 폴더 입니다 .catmv
/some/

답변1

드라이브 설치를 관리하다가 답을 찾았습니다. 설치된 드라이브를 확인해보니 이상한 줄이 나타났습니다.

~ # mount | grep /etc/hosts
/tmp/hosts on /etc/hosts type tmpfs (rw,nosuid,nodev,noexec,bind)

나는 이것이 나를 놀라게 했다. 내가 사용한 모든 스크립트를 조사한 후 호스트 수정자 스크립트에서 다음 줄을 발견했습니다.

sudo mount -o bind /tmp/hosts /etc/hosts

그런 다음 다른 것을 시도했습니다.

/tmp # echo aaa > a
/tmp # mount -o bind a b; cat b
aaa
/tmp # echo bbb > b; cat a
bbb
/tmp # echo ccc > c
/tmp # mv c b
mv: Device or resource busy

물론 해결책은 마운트 지점을 취소하는 것입니다.

sudo umount /etc/hosts

답변2

디렉터리에 대한 쓰기 권한이 없을 수 있습니다. 파일 작업: 수정된 모든 디렉터리를 생성, 삭제하고 이름을 바꿉니다.

catvim파일 내용만 수정하면 되며 파일을 수정할 필요가 없습니다. sed -i임시 파일에 쓰고 이름을 바꿉니다.

관련 정보