외장 USB 하드 드라이브, WD Elements, 자체적으로 전원이 꺼지지 않음

외장 USB 하드 드라이브, WD Elements, 자체적으로 전원이 꺼지지 않음

저는 지난 4~5년 동안 Seagate Free Agent 외장 하드 드라이브를 소유하고 있습니다. 연결하고 파일 전송을 마친 후 '안전하게 제거' 메뉴를 클릭합니다. 그런 다음 내부 디스크 회전을 중지하고 자동으로 종료됩니다. 만지면 느낄 수 있어요. 또한 전원 표시등도 꺼집니다.

최근에 저는 새로운 외장 하드 디스크인 WD Elements를 구입했습니다. 이 하드 드라이브에 대해 '안전하게 제거'를 실행하면 마운트가 해제되지만 자체적으로 전원이 꺼지지 않고 디스크가 계속 회전하며 만지면 느낄 수 있습니다. 또한 Ubuntu와 함께 제공되는 '디스크' 응용 프로그램에서 '드라이브 전원 끄기' 버튼을 사용해 보았습니다. 그런 다음 마운트 해제만 됩니다.

수동으로 플러그를 뽑기 전에 WD Elements 하드 드라이브가 자동으로 종료되는 것을 보고 싶습니다. 장치가 스스로 멈추기 전에 강제로 플러그를 뽑으면 수명이 단축될 수 있다고 가정합니다.

이를 수행하는 데 도움이 되는 다른 명령이나 프로그램이 있습니까?

답변1

WD는 기본적으로 Linux를 지원하지 않으므로 WD의 전원을 실제로 끄는 유틸리티가 포함된 추가 패키지가 필요합니다.

sudo apt-get install usdisks2
sudo udisksctl power-off --block-device /dev/XdY

디스크에 해당하는 문자는 X어디에 있습니까 ?Y

답변2

지금까지 파일 관리자에서 "안전하게 꺼내기"에 대한 간단한 대안을 찾지 못했기 때문에 이것이 여기서 명령줄을 사용하는 이유입니다.

먼저, 외부 하드 드라이브 장치 ID 또는 블록 ID를 찾아야 합니다. 그런 다음 udisks또는 를 사용하여 udisksctl장치를 마운트 해제하고 실제로 전원을 끌 수 있습니다. 나는 대답했다관련 질문얼마 전 우분투를 막 시작했을 때 참고해 보시길 권합니다. 기본적으로 udisks --unmount /dev/sdb1 && udisks --detach /dev/sdbsdb1이 마운트 지점이고 sdb가 실제 디스크인 곳을 사용합니다 .

lsblk마운트 지점과 크기로 사용하고 식별할 수 있습니다 . 반면에 를 사용할 수 있습니다 udisksctl status. 예를 들어, 지금 Sandisk Cruiser USB 드라이브가 연결되어 있습니다. 명령의 출력은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

보시다시피 내 USB 드라이브가 /dev/sdc로 식별된다는 두 가지 보고서가 있습니다. USB 장치를 사용할 때마다 sdb, sdc, sdf 등과 같은 다른 문자로 식별되지만 sda는 항상 하드 드라이브입니다.

udisks --unmount /dev/sdc1 && udisks --detach /dev/sdc그래서 내 경우에는 Fabby가 제안한 방법을 사용하거나 대안으로 USB를 꺼냈습니다 . 내가 사용하는 단일 라이너를 사용하면 장치 ID가 보존된다는 것을 알았습니다. 즉, usd를 꺼내고 다시 연결하면 여전히 장치 sdc이름이 제공됩니다.

udisksctl status | grep -i wd팁: 외장 하드 드라이브에 대한 정보만 표시하는 데 사용할 수 있습니다 .

여기 제가 순전히 재미로 한 일이 있습니다. 하지만 여러분도 이 내용이 유용하다고 생각하고 필요에 따라 조정할 수 있을 것입니다. 안전 배출을 수행하는 스크립트를 작성할 수 있다면 어떨까요?

외부 HDD 또는 USB의 블록 ID를 쉘에 알려야 합니다. 이 명령의 출력은 무엇입니까 udisksctl status | grep -i sandisk | xargs echo? 즉 SanDisk Cruzer Glide 1.27 2005425573077FA0AA67 sdd, 공백으로 구분된 usb에 대한 정보이며 장치 ID는 마지막 인수 또는 6번째 인수입니다. 여기서는 cut 명령을 사용하여 다음과 같이 추출할 수 있습니다.udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6

물론 당신 udisksctl status | grep -i wd | xargs echo의 블록 ID가 어떤 요소인지 계산하고 적절한 숫자를 사용해야 합니다.cut -d' ' -fx

다음으로, Remove-usb.sh 스크립트를 구성했습니다. 여기있어:

#!/bin/sh

DEVICE=$( udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6 )


udisks --unmount /dev/$(echo $DEVICE)1 && udisks --detach /dev/$DEVICE

다음으로 이를 내 /home/user/bin 폴더인 chmod +x /home/user/bin/remove-usb.sh에 넣습니다. 해당 bin 폴더를 추가하는 것을 잊지 마십시오.당신의 길. 이제 .데스크탑 파일또는파일 관리자에서 스크립트를 실행 가능하게 만듭니다.

다음은 실행 중인 스크립트입니다. 여기에 이미지 설명을 입력하세요

답변3

다음 쉘 스크립트가 나를 위해 작업을 수행합니다.

#!/bin/sh

DEVICE=$(udisksctl status | grep -i "WD Elements" | xargs echo | cut -d' ' -f6)

udisks --unmount /dev/$(echo $DEVICE)1
sudo udisksctl power-off --block-device /dev/$DEVICE

이는 실제로 @Serg와 @Fabby의 게시물에서 얻은 아이디어를 조합한 것입니다.

관련 정보