스크립트에서 설치된 /mnt를 제거할 수 없습니다.

스크립트에서 설치된 /mnt를 제거할 수 없습니다.

다음 명령을 실행하는 시작 스크립트가 있습니다.

sudo cryptsetup open /dev/sda3 dm_crypt && sudo mount -t btrfs /dev/mapper/dm_crypt /mnt && cd /mnt && ls -la && sudo -s

이것은 기본적으로 내 LUKS 장치를 열고 BTRFS 루트 파티션을 마운트하고 추가 작업을 위해 루트 셸을 시작합니다.

모두 훌륭하지만 이렇게 하려고 하면 다음과 같습니다.

umount -f /mnt

루트 쉘에서는 다음을 얻습니다.

umount: /mnt: target is busy.

왜 이런 일이 일어나는지 말해 줄 수 있는 사람이 있나요?

내가 맞나요?시작 스크립트의 모든 명령이 상호 프로세스로 실행되면 어떻게 되나요?그래서 당신은 무엇 때문에 바쁘나요 /mnt?

이것은 다음의 출력입니다 lsof | grep /mnt.

bash      1890                       liveuser  cwd       DIR               0,45        42        256 /mnt
sudo      2168                           root  cwd       DIR               0,45        42        256 /mnt

루트 쉘이 스크립트의 하위 프로세스이기 때문입니까?

이것은 나에게 아무런 의미가 없습니다.

제한cryptsetup close:하위 루트 쉘에서 호출하겠습니다.

답변1

/mntsudo스크립트를 실행하는 셸과 자체 라는 두 가지 프로세스에 의해 계속 사용됩니다 . 루트 쉘에서는 작업 디렉토리를 변경할 수 없습니다.

cd마운트 지점에 들어가지 않도록 스크립트를 변경하거나 umount -l루트 쉘을 종료하기 전에 사용할 수 있습니다. 후자는 마운트 해제를 지연시키며, 쉘을 종료하면 sudo상위 쉘도 종료되어 마운트 지점이 해제됩니다.

LUKS 볼륨도 종료할 수 있기를 원하는 경우 가장 좋은 방법은 다음을 스크립트에 추가하는 것입니다.

sudo cryptsetup open /dev/sda3 dm_crypt && sudo mount -t btrfs /dev/mapper/dm_crypt /mnt && cd /mnt && ls -la && sudo -s
cd - && sudo umount /mnt && sudo cryptsetup close dm_crypt

관련 정보