스스로 종료되는 스크립트에서 직접 USB 스틱을 마운트 해제하려면 어떻게 해야 합니까?
스틱에서 스크립트를 실행하고 있기 때문에 항상 다음과 같은 오류가 발생하기 때문에 단순히 제거하는 것은 불가능합니다. 장치 또는 리소스 사용 중입니다. 그렇다면 가장 쉬운 방법은 무엇입니까? 시스템이 자살하기 전에 내 스크립트를 통해 시스템에서 스크립트를 실행해야 합니까?
어떻게 해야 하나요?
답변1
파일 시스템을 사용하는 경우 마운트 해제할 수 없습니다.
당신은 시도 할 수 있습니다
(echo fuser -ku /dev/xxx ; echo umount/dev/xxx ) |
at now +5 sec
exit
- 물론 이 코드는 USB 장치에서는 실행할 수 없습니다.
- 파이프 기호(
|
)는 줄의 마지막 문자여야 합니다. - xxx 대신 무엇을 사용해야 하는지 아시는 것 같아요.
답변2
umount
이동식 드라이브에 파일이 열려 있지 않은 프로세스에서 명령을 실행하십시오. 특히 이는 드라이브의 쉘 스크립트일 수 없습니다. 명령줄에 전달된 스크립트가 sh
트릭을 수행합니다. 드라이브에 저장된 스크립트를 종료해야 합니다. 간단한 방법은 exec
스크립트를 실행하는 셸을 제거 시퀀스를 실행하는 셸로 바꾸는 것입니다.
#!/bin/sh
mount_point=$(df -P "$0" | awk 'NR==2 {print $6}')
… # do stuff involving the files on the drive
exec sh -c 'cd /; umount "$0"' "$mount_point"