
/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) 의 하위 폴더입니다 .cat
mv
/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
디렉토리에 대한 쓰기 권한이 없을 가능성이 높습니다. 파일 작업: 생성, 삭제 및 이름 바꾸기는 모두 디렉토리를 수정합니다.
cat
vim
파일 내용만 수정하면 되며 파일을 수정할 필요가 없습니다 . sed -i
임시 파일을 작성하고 이름을 바꿉니다.