Comment puis-je savoir s'il s'agit d'un disque dur local ou d'une clé USB? Je préférerais une façon de faire cela sans privilèges root./dev/sdX
OK, udevadm
a beaucoup aidé:
Pour le disque dur local:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
Pour la clé USB:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
bash
hardware
hard-disk
administration
Marguerite
la source
la source
Réponses:
Il y a plusieurs façons de dire sans privilèges root, beaucoup d'entre elles sont difficiles / hacky:
En utilisant
/dev/disk/by-id
:Si cela répond avec quelque chose comme
/dev/disk/by-id/usb-blah-blah-blah
, alors c'est un disque USB. D' autres préfixes comprennentata
,dm
,memstick
,scsi
, etc.L'utilisation
/dev/disk/by-path
n'est pas très différente:Vous obtiendrez quelque chose comme
/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0
. Cela montre le chemin du périphérique menant au disque. Dans ce cas, un chemin approximatif est PCI → USB → disque. (noter la-usb-
).Utiliser udev (je lance Debian. Mon
udevadm
est dans/sbin
ce qui n'est pas sur mon$PATH
- le vôtre peut être ailleurs, sur ou hors de votre$PATH
):Vous obtiendrez le type de bus sur lequel l'appareil est allumé. Supprimez le
| grep ID_BUS
pour la liste complète des informations (vous devrez peut-être ajouter|less
).Si vous avez
lshw
installé, la réponse de Huygens peut également fonctionner:Et regardez la sortie de votre disque. Dans
less
, essayez /sdX et regardez lesbus info
lignes précédentes - la première va juste direscsi@…
, mais celle plusieurs lignes avant sera plus éclairante. Cependant, vous avez vraiment devriez exécuter ce que le super - utilisateur afin qu'il ne soit pas approprié. (symptômes: sur l'ordinateur portable, je l'ai essayé, il indiquait le disque SATA mais pas celui USB - fonctionnant avecsudo
les deux répertoriés)Il y en a aussi d'autres, plus ou moins directs que ceux-là.
la source
esatap
?Je connais une solution, mais, malheureusement, elle nécessite un privilège root. Quoi qu'il en soit, vous pourriez toujours le trouver utile:
Pour chaque périphérique, il affichera le nom logique (par exemple,
/dev/sda
) et les informations de bus, qui dans le cas d'un périphérique USB serait quelque chose comme «usb @ 1: 2».Exemple de sortie:
la source
Vous pouvez utiliser
lsblk
:où
-d
or--nodeps
moyens n'impriment pas les esclaves et-o name,tran
ou--output name,tran
moyens ne répertorient que le nom du périphérique et le type de transport de périphérique. Ajoutezrm
à la liste des colonnes de sortie pour voir quels périphériques sont amovibles (1
sitrue
):la source
Cela n'a pas besoin des privilèges root (mais beaucoup de ces commandes utilisent et dépendent des bashismes, donc elles ne fonctionneront pas dans tous les shells compatibles POSIX):
Il existe un moyen rapide de poser des questions sur :
sdX
Le fichier vraiment intéressant est
capability
. Sur mon Debian, j'ai ungenhd.h
fichier, donc:Pour ne savoir que si le drapeau
removable
est défini:alors
fonctionne en testant si la
capability
valeur (qui est 52 dans monsda
exemple, ci-dessus) a le1
bit défini (c'est-à-dire s'il s'agit d'un nombre impair).Mais Linux affiche tous les drapeaux
/sys
, donc demander/sys/block/sdX/removable
est beaucoup plus simple! ;-)Donc, une clé USB pourrait être
removable
, mais comme il y a beaucoup de périphériques amovibles , je préférerais m'assurer que la taille du support est supérieure à 0 (comme un plateau de CD-ROM déchargé, par exemple) et que le périphérique n'est pas en utiliser: En regardant celasdX/trace/enable
n'est pas lié:Nota: Tout cela est bien testé sur bash v4.2 +.
Sous bash , vous pouvez utiliser cette méthode très rapide et efficace:
Sur mon système, il y a 4 clés USB, mais l'une d'entre elles (
sde
) est déjà montée, donc la sortie de commande précédente:Mon script:
Il y a une petite fonction bash que j'ai écrite pour installer Debian Live mise à jour.
# La première partie rend uniquement la taille lisible par l'homme. La fonction commence là.
Cela affecte la réponse, sous forme de tableau , à la variable donnée comme premier argument ou à la variable
$REPLY
:(Le dernier champ peut contenir des espaces.)
la source
…,device/{model,type,vendor,uevent}
? (2) Pouvez-vous expliquer vos commandes GENHD et vos commandes «trace / enable»? (3) Votre[ $(( $(< $file ) & 1 )) -ne 0 ]
test peut être simplifié (raccourci) en(( $(< $file ) & 1 ))
./usr/src/*/include/linux
. Essayezsed -ne 's/#define.*GENHD_FL_\([A-Z0-9_]*\)[ \t]*\([0-9]*\) \?.*$/GENHD_FLAGS[\2]="\1"/p;' /usr/src/*/include/linux/genhd.h
. (3) Oui.Je suggère simplement d'utiliser
hdparm
oulshw
(que vous devrez peut-être installer) et d'utilisersudo
pour l'exécuter en tant que root.devraient tous vous donner des informations.
la source
hdparm -i /dev/sda /dev/sda: HDIO_DRIVE_CMD(identify) failed: Invalid exchange HDIO_GET_IDENTITY failed: Invalid argument
Il suffit de lire la valeur de
/sys/block/sdX/removable
.Par exemple:
/dev/sdc
est une clé USB (il peut s'agir d'une carte SD ou de tout autre support amovible).la source
dmesg
est la méthode la plus simple:( étant le nom de votre appareil, par exemple,
sdX
sda
)De la commande ci-dessus, vous verrez ce qui suit:
la source
dmesg
lit le tampon de messages circulaire du noyau afin que cette solution ne fonctionne que relativement récemment après un redémarrageVous pouvez utiliser les commandes ci-dessous pour obtenir des nœuds de périphérique SD, USB et SATA.
la source
/dev/sdX
Je ne sais pas comment cela répond à la question, qui est: «Pour tout particulier , comment puis-je savoir s'il s'agit d'un disque dur local ou d'une clé USB?» Veuillez expliquer comment l'OP peut utiliser vos commandes pour faire cela. détermination. (2) Nous préférons les réponses qui donnent des commandes et les expliquons aux réponses qui ne fournissent que des commandes. Veuillez expliquer ce que vous faites. Veuillez ne pas répondre dans les commentaires; modifiez votre réponse pour la rendre plus claire et plus complète. … (Suite)awk
est un outil très puissant. De nombreux débutants publient des réponses qui font ungrep
et dirigent sa sortie versawk
. Ceci est rarement nécessaire;awk
peut faire une correspondance de modèle et peut sélectionner l'entrée souhaitée sans l'aide degrep
. Vous disposez d'un pipeline de deuxgrep
commandes, redirigées versawk
, puis une deuxièmeawk
commande. Cela peut être grandement simplifié; s'il vous plaît essayez. (4) Aussi, pour plus de clarté, vous voudrez peut-être changer`…`
pour$(…)
- voir ceci , ceci et ceci .Je suis paresseux, inxi me le dit facilement:
Je crois que cela me dit également s'il s'agit de FireWire et peut-être d'un autre type, mais je devrais vérifier, je n'ai pas utilisé ces types depuis un moment.
Il me dit également d'utiliser -p si les partitions sont distantes, comme les montures samba ou nfs.
la source
Après avoir branché le périphérique USB, exécutez
dmesg
dans une fenêtre de console. Des conseils vous seront fournis.Par exemple, il indiquera quelque chose du type "Appareil branché, stockage de masse / dev / sdd".
la source