Eu sei que oeject
O 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 oeject
comando?
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.
- 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.
- 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.
- Antes de ejetar, este comando desmontará todos os volumes do dispositivo que foram montados.
- 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, eject
funcionará, mas não "terminará o trabalho" em relação ao USBgirandounidades.
Então, primeiro, você eject /dev/sdb
(ou umount
tudo).
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: udisksctl
pode 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.c
fontes).
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