Ejete drives USB / comando de ejeção

44

Eu sei que o comando eject pode ser usado para ejetar quase qualquer componente de hardware conectado, mas ele pode ser usado para ejetar drives USB?

É possível ejetar drives USB e HDDs externos com o comando eject ?

    
por Joe Barr 02.04.2012 / 02:32

9 respostas

15

Não. Nem precisam ser; eject é usado para abrir unidades ópticas, onde não é possível extrair a mídia diretamente.

A desmontagem é suficiente para USB / eSATA / etc. dispositivos de armazenamento.

    
por 02.04.2012 / 02:40
61

Sim. Por exemplo:

sudo eject /dev/sda

Outras respostas aqui que indicam que você precisa de hardware de ejeção mecânica estão incorretas.

Desmontar não é o mesmo que ejetar.

  1. Se você desmontar um volume, poderá montá-lo imediatamente, porque o dispositivo subjacente ainda está disponível. Em algumas situações, isso pode representar um risco de segurança. Ao ejetar o dispositivo, somente uma reinicialização do subsistema USB (por exemplo, uma reinicialização) recarregará o dispositivo.
  2. Ao ejetar o dispositivo, você efetivamente desabilita qualquer acesso adicional ao dispositivo. Somente uma reinicialização do subsistema USB (por exemplo, uma reinicialização) recarregará o dispositivo. Caso contrário, você deve desconectar fisicamente o dispositivo USB e reconectá-lo para acessá-lo novamente.
  3. Antes de ejetar, este comando desmontará todos os volumes no dispositivo que foram montados.
  4. Se os volumes estiverem em uso, esse comando falhará com a desmontagem, exceto que alguns volumes podem ser desmontados e alguns volumes podem permanecer montados.
por 19.07.2013 / 02:24
32

eject funcionará, mas não irá realmente "terminar o trabalho" em relação às unidades USB rotação .

A melhor maneira de desconectar um disco rígido externo USB, após a desmontagem correta , é:

udisks --detach /dev/sdb

Isso geralmente faz com que a unidade desacelere normalmente.

Precisamente, a implementação atual :

  • envia o comando SCSI sync-cache,
  • envia um comando de parada SCSI,
  • desassocia o driver do kernel de armazenamento usb,
  • suspende o dispositivo USB (energia),
  • logicamente a desativa / remove da porta USB.

Este processo está próximo do procedimento manual sugerido aqui . A resposta inicial foi em askubuntu .

EDIT: Além disso, como g.rocket aponta, este comando pode ser equivalente:

udisksctl power-off -b /dev/sdb
    
por 14.05.2014 / 01:29
6

Passos manuais para desmontar o disco / dev / sdb (Requer sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

Isso desligará completamente o dispositivo e o desconectará do sistema. Não será detectado novamente até que seja desconectado e reconectado.

    
por 05.08.2017 / 07:21
5

Se você ler atentamente a página de manual ejetar (1) , poderá ver que existem 4 métodos de ejeção:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

Quando você chama eject no HDD / SCSI, emite o comando ioctl(fd, SG_IO, (void *)&io_hdr); (copie de eject.c sources).

Isto é equivalente à remoção segura do dispositivo no MS Windows ou no MaxOSX.

Para alguns dispositivos, isso tem um significado especial. Por exemplo, o Kindle 3 após o comando eject ser movido para o modo de carregamento e permitir a navegação no dispositivo, enquanto a tela estava bloqueada.

Outros utilitários fazem a mesma coisa, assim

scsi-spin --force --down /dev/sda
    
por 16.07.2013 / 00:22
4

"Ejetar" não tem significado para o hardware sem uma bandeja ou outro mecanismo de carregamento (suponho que também funcione com unidades de fita).

No entanto, o teste com uma unidade flash USB externa informa que eject funciona muito como umount - com o efeito colateral de fazer com que os nós do dispositivo desapareçam, por exemplo,

% ls  /dev/sdc*
/dev/sdc  /dev/sdc1
% sudo eject /dev/sdc
% ls  /dev/sdc*
/dev/sdc

Observe que /dev/sdc1 desapareceu.

    
por 02.04.2012 / 02:41
3

Na linha de comando osx, você deve usar diskutil onde LABEL é o rótulo do seu drive USB.

diskutil eject /Volumes/<LABEL>
    
por 21.07.2014 / 19:21
2

udisks --detach /dev/sdX em que (X) é a última letra do seu dispositivo usb. Funciona bem em qualquer sistema linux.

    
por 04.10.2015 / 02:33
0

OK, vou tentar explicar isso melhor:

O comando

udisks remove e desliga completamente qualquer dispositivo usb montado ou conectado ao sistema desmonte o comando apenas desmonte a partição ie: dev / sdb1 ou qualquer outra coisa, mas o usb ainda está presente no sistema.

Portanto, não é o mesmo desmontar, ejetar e separar

udisks = desligar o usb

umount = apenas desmonte a partição e não o pendrive inteiro

eject = o mesmo ou muito perto do comando umount

    
por 11.10.2015 / 20:13