Alguns detalhes

Alguns detalhes

Eu sei que oejectO comando pode ser usado para ejetar quase qualquer componente de hardware conectado, mas pode ser usado para ejetar unidades USB?

É possível ejetar unidades USB e HDDs externos com oejectcomando?

Responder1

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 é a mesma coisa que ejetar.

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

Responder2

SobreLinux, ejectfuncionará, mas não "terminará o trabalho" em relação ao USBgirandounidades.

Então, primeiro, você eject /dev/sdb(ou umounttudo).

Eentão,após a desmontagem adequada, a melhor maneira de desconectar um disco rígido externo USB é:

    udisksctl power-off -b /dev/sdb

ou

    udisks --detach /dev/sdb

Isso geralmente faz com que a unidade gire normalmente.

Nota: udisksctlpode ser uma ferramenta mais "mainstream", em comparação com udisks(a primeira já está instalada no meu Debian, a última não está e foicriticadopara rotação desnecessária para cima/para baixo).

Alguns detalhes

udisksctl

Oestados de documentação(sobre a opção de desligamento):

Providencia para que a unidade seja removida e desligada com segurança. No lado do sistema operacional, isso inclui garantir que nenhum processo esteja usando a unidade e, em seguida, solicitar que os buffers e caches em andamento sejam comprometidos com armazenamento estável. As etapas exatas para desligar a unidade dependem da própria unidade e da interconexão usada. Para unidades conectadas por USB, o efeito é que o dispositivo USB será desconfigurado e, em seguida, a porta do hub upstream à qual está conectado será desativada.

Observe que, como alguns dispositivos físicos contêm várias unidades (por exemplo, dispositivos USB leitores de cartão flash 4 em 1), desligar uma unidade pode afetar outras unidades. Como tal, não existem muitas garantias associadas à execução desta ação. Normalmente, o efeito é que a unidade desaparece como se estivesse desconectada.

udisks (obsoleto?)

Precisamente, oimplementação atual(a partir de 2014):

  • envia o comando SCSI sync-cache,
  • envia comando de parada SCSI,
  • desvincula o driver do kernel de armazenamento USB,
  • suspende o dispositivo USB (energia),
  • desativa/remove logicamente de sua porta USB.

Este processo está próximo do procedimento manual sugeridoaqui. A resposta inicial foino askubuntu.

Responder3

Etapas 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. Ele não será detectado novamente até que seja desconectado e reconectado.

Responder4

Se você ler atentamenteejetar (1)página man você pode 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ê ligarejetarno HDD/SCSI ele emite ioctl(fd, SG_IO, (void *)&io_hdr);o comando (copiar das eject.cfontes).

Isso é equivalente a remover o dispositivo com segurança no MS Windows ou MaxOSX.

Para alguns dispositivos isso tem um significado especial. Por exemplo, Kindle 3 depoisejetarO comando foi movido para o modo de carregamento e permite a navegação no dispositivo, enquanto antes a tela estava bloqueada.

Outros utilitários fazem a mesma coisa, assim

scsi-spin --force --down /dev/sda

informação relacionada