Dòng tương đương của dòng lệnh của Safely Loại bỏ ổ đĩa là gì?


Câu trả lời:


39

Các udiskslệnh rất có thể những gì bạn đang tìm kiếm.

Trong khi sudo unmount /dev/sdXYsẽ hoạt động, udisks có thể làm điều này mà không cần quyền gốc (sudo).

Nếu bạn có một ổ đĩa /dev/sdXY, được gắn kết, trong đó X là một chữ cái đại diện cho đĩa usb của bạn và Y là số phân vùng (thường là 1), bạn có thể sử dụng các lệnh sau để xóa ổ đĩa một cách an toàn:

udisks --unmount /dev/sdXY
udisks --detach /dev/sdX

Đối với một ví dụ thực tế, nếu tôi có phân vùng /dev/sdb1được gắn kết, tôi sẽ chạy nó để ngắt kết nối và tách nó ra:

udisks --unmount /dev/sdb1
udisks --detach /dev/sdb

Ban đầu tôi đã tìm thấy điều này thông qua câu hỏi này: https://superuser.com/a/430470/176493 .

Sử dụng udisks2:

Trong các bản phân phối Ubuntu mới hơn (tôi không chắc chắn khi nào chuyển đổi xảy ra), udisks2 được cài đặt thay vì udisks.

Phản chiếu các lệnh trên, để ngắt kết nối và tách đĩa bằng udisks2:

udisksctl unmount -b /dev/sdXY
udisksctl power-off -b /dev/sdX

Ví dụ nếu ổ đĩa của tôi là /dev/sdb1:

udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb

Tôi nhận được Detach failed: Not Authorizedkhi tôi cố gắng chạy nó mà không có quyền root. (Không phải là một vấn đề nghiêm trọng, nhưng là một sự điều chỉnh nhỏ.)
Jonathan Y.

Phiên bản Ubuntu nào bạn đang chạy? Ngoài ra, làm thế nào bạn gắn ổ đĩa? Nếu bạn đã gắn kết bằng quyền root hoặc khi đăng nhập với tư cách người dùng khác (trái ngược với Nautilus hoặc udisks trong người dùng hiện tại), người dùng của bạn sẽ không có quyền ngắt kết nối bằng cách sử dụng udisks.
daboross

2
Vâng, tôi gắn kết với sudo, nhưng tôi cũng umounted trước khi cố gắng --detach. Đây là một bản phát hành đáng tin cậy của máy chủ Ubuntu.
Jonathan Y.

Ah, có thể là một sự khác biệt với máy chủ Ubuntu. Detach không hoạt động mà không có quyền root trên máy tính để bàn của tôi.
daboross

2
@morhook xem câu trả lời cập nhật với sự hỗ trợ của udisks2!
daboross

21

Thực tế tương đương với hoạt động Nautilus Mount / Unmount là gvfs-mount -m -d /dev/ice /some/directorygvfs-mount -u /some/directory. Điều này sử dụng cùng API mà Nautilus sử dụng, hệ thống tệp ảo GIO (gvfs), cung cấp các công cụ khác nhau để sử dụng một số dịch vụ như điểm gắn kết, chẳng hạn như smb, NFS, FTP, thiết bị khối, v.v.

Để xác định thiết bị nào bạn cần ngắt kết nối, chỉ cần sử dụng gvfs-mount -lthiết bị nào là đủ.

Giải pháp này có một điểm đặc biệt là nó không yêu cầu quyền nâng cao, vì mọi thứ được quản lý bởi các dịch vụ umount / gvfsd / polkit, điều này giống với hành vi của Nautilus hơn.


2
Đây dường như là câu trả lời đúng nhất. Mặc dù nhiều người trong chúng ta đã quen nghĩ udisks(được đề xuất trong các câu trả lời khác) là "cách" người dùng không root gắn kết và ngắt kết nối các đĩa di động trên máy tính để bàn, như đã nêu ở đây gvfs-mountcó thể sử dụng các cơ chế khác. (Trên hệ thống Utopic Ubuntu MATE của tôi, gói udisks thậm chí chưa được cài đặt.)
Eliah Kagan

1
Ubuntu 18.40 có giosự thay thế cho gvfs-mount.
studog

13

Khi bạn biết thiết bị, có thể sử dụng dfthông tin như trong câu trả lời @rcpao , cách tốt nhất để "đẩy" đĩa là, imho, sử dụng cùng một lệnh mà giao diện đồ họa đang sử dụng:

udisksctl unmount --block-device /dev/sdc1

Tôi có một kịch bản để làm một bản sao lưu vào một đĩa mà tôi biết sẽ gắn dưới /media/romano/movlin, và sau khi sao lưu Tôi làm:

sync
udisksctl unmount -b $(mount | grep movlin   | cut -d" "  -f1)

Ở đây, mount | grep movlin | cut -d" " -f1sẽ trích xuất thiết bị được gắn dưới nhãn "Movlin", (sẽ nằm /dev/sdc1trong trường hợp đó), và sau đó nó sẽ ngắt kết nối thiết bị.


Có thực sự cần thiết để tự chạy synctrước udisksctl unmount?
Eliah Kagan

Chắc là không. Nhưng tôi không chắc chắn về hành vi chính xác của bộ đệm nói chung; Thỉnh thoảng tôi cảm thấy rằng ổ USB vẫn nhấp nháy sau khi ... trong vài giây. Hãy nói rằng đó là tàn dư của cái cũ sync; sync; sync && poweroff...
Rmano

@Rmano Tôi đã thấy đèn flash trên một ổ đĩa flash được cho là đã tháo dỡ (thường được thực hiện thông qua một gui theo KDE) nhiều lần. Tôi cố gắng đợi nó ra trước khi rút nó ra. Điều này trông (đối với mắt chưa được huấn luyện của tôi) giống như một cái gì đó không hoàn toàn đúng. Nó sẽ còn tồi tệ hơn với một ổ đĩa flash không có đèn báo hoạt động.
Joe

1
Rmano, do udiskskhông còn xuất hiện theo mặc định trong Ubuntu udisksctlcó thể là một giải pháp ưa thích. udisksctl power-off --block-device /dev/sdctắt đèn trên ổ USB Flash ngoài để nó có thể phù hợp làm lệnh tiếp theo để theo dõi bạn.
H2ONaCl

8
  1. df để tìm điểm gắn kết của ổ đĩa flash của bạn.

    rcpao@bun:~$ df
    Filesystem                   1K-blocks       Used  Available Use% Mounted on
    /dev/mapper/ubuntu--vg-root 1916153032  658404668 1160390336  37% /
    none                                 4          0          4   0% /sys/fs/cgroup
    udev                          16438692          4   16438688   1% /dev
    tmpfs                          3289976       2156    3287820   1% /run
    none                              5120          0       5120   0% /run/lock
    none                          16449860      18768   16431092   1% /run/shm
    none                            102400         48     102352   1% /run/user
    /dev/sda1                       240972      98990     129541  44% /boot
    /dev/sdc1                     60915712      20992   60894720   1% /media/rcpao/SD024-64GB
    
  2. Ngắt kết nối bằng cách sử dụng / dev / sdc1 hoặc / media / rcpao / SD024-64GB.

    rcpao@bun:~$ sudo umount /dev/sdc1
    [sudo] password for rcpao: 
    rcpao@bun:~$
    

    hoặc là

    rcpao@bun:~$ sudo umount /media/rcpao/SD024-64GB
    [sudo] password for rcpao: 
    rcpao@bun:~$
    
  3. Bạn sẽ có thể thấy biểu tượng đẩy của ổ flash biến mất trong nautilus ngay sau khi kết thúc.


2
dftrông rất hữu ích để xác định vị trí của thiết bị.
H2ONaCl

2
Đối với một ổ đĩa flash, điều này là hợp lý. Đối với ổ đĩa, "Loại bỏ an toàn" cũng quay nó xuống, điều mà giải pháp này không làm được (xem câu trả lời của DaboRoss cho điều đó).
Nate Eldredge

3
Vâng, udisks --detachrất hữu ích cho việc tách ổ đĩa hoàn toàn sau khi ngắt kết nối.
daboross

1
dfumountlà các tiện ích UNIX tiêu chuẩn. Luôn luôn là tốt để biết họ, bởi vì những điều này sẽ luôn hoạt động, trong khi udisksphụ thuộc vào dbus và một udisksd đang chạy .
Simon Richter

1
@NateEldredge: "Đối với một ổ đĩa flash, điều này là hợp lý ..." - thực tế, không phải vậy và tôi đã bỏ phiếu vì lý do này: năm ngoái tôi đã phải thực hiện một ứng dụng qa triển khai và sử dụng một lệnh nhanh chóng dọc theo các dòng của cp /path/to /drive && umount drive. Điều này khiến 2 ổ flash (tạm thời) không thể nhận ra cho đến khi tôi nhận ra đó là lệnh gây ra nó. Chạy "Quét & sửa chữa" trên máy Windows đã sửa các ổ đĩa. Câu trả lời của DaboRoss dưới đây an toàn hơn nhiều.
Andy E

2

ejecttừ gói đẩy :

sudo eject /dev/sdX

xuất hiện cho umounttất cả các phân vùng và đặt thiết bị ở trạng thái mà bạn phải xóa và gắn lại thiết bị để kết nối lại.


Đối với một vài ứng dụng, lệnh đẩy này là cách tốt nhất để làm điều đó. Hầu hết các câu trả lời khác là "đủ tốt" nhưng về mặt kỹ thuật, Biểu tượng Eject trên Nautalis không làm những việc như tắt nguồn thiết bị. Theo kinh nghiệm của tôi, đẩy ra gần hơn với chức năng của nút usb đẩy ra. Nếu bạn muốn tránh sudo, bạn có thể tự thêm mình vào nhóm đĩa (yêu cầu đăng xuất và đăng nhập). Lệnh cho việc này là "đĩa người dùng sudo adduser"
SpiRail
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.