Catégorie > High Tech

Existe-t-il un moyen de savoir sur quel périphérique se trouve un fichier?

Posté par Philip, mise à jour le 15/07/2020 à 11:14:08

Si j'ai un fichier /abc/def/ghi/jkl, existe-t-il un moyen de savoir sur quel appareil se trouve-t-il ou dois-je analyser /etc/mtabet voir ce qui correspond le /abc/def/ghi/jklmieux?


Posté par Eduardo Trápani

Si sous Linux, vous pouvez exécuter findmnt sur le chemin du fichier:

findmnt -T /abc/def/ghi/jkl
Puisque la sortie n'est pas censée être analysable, si vous voulez lire le résultat d'une colonne (dans ce cas SOURCE) dans une variable, vous pouvez faire:

source=$(findmnt -rno SOURCE -T /abc/def/ghi/jkl)
(méfiez \$source- vous peut-être pas toujours le chemin vers un fichier de périphérique de bloc comme dans le cas des systèmes de fichiers réseau ou fusible, tmpfs, etc.).

Posté par Paul

df vous indiquera le nom du périphérique et le point de montage, et ls vous indiquera la numérotation des périphériques:

paul $ pwd
/home/paul/SandBox/Toys/hSort
paul \$ ls -l ReadMe
-rw-r--r-- 1 paul paul 296 Jan 8 2020 ReadMe

paul \$ df ReadMe
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda9 103818480 3796556 94725184 4% /home

paul \$ ls -l /dev/sda9
brw-rw---- 1 root disk 8, 9 Jul 12 12:10 /dev/sda9

Posté par LSerni

Oui, il existe un moyen, mais cela dépend des outils que vous pouvez utiliser.

La stat()fonction renverra un identifiant de périphérique pour le fichier spécifié.

La stat(1)commande aussi. Vous pourriez peut-être utiliser stat -c %D filenamedans un script. Par exemple:

stat -c %D /mnt/persistent/test
donnera "0821". Cela signifie que le périphérique 8, le mineur 33 ("21" est 33 en hexadécimal). Je peux donc voir /devquel appareil a les numéros 8, 33:

ls -l /dev | grep " 8, *33 "
brw-rw---- 1 root disk 8, 33 Jun 28 19:08 sdc1
Sinon, oui, utilisez realpathet faites correspondre avec mtab. Dans le même exemple:

REALPATH="$( realpath /mnt/persistent/test )"
df | grep ^/ | tr -s " " \
| while read row; do
PREFIX=\$( echo "\$row" | cut -f 6 -d " " )
if ( echo "\$REALPATH" | grep ^\$PREFIX > /dev/null ); then
echo "\$row" | cut -f 1 -d " "
fi
done | sort | tail -n 1
Sortira:

/dev/sdc1
Bien que l'ensemble de ce script arrive dans une très mauvaise seconde après df la syntaxe propre :

df --output=source /mnt/persistent/test | tail -n1

Posté par Andreoss

Si sur un système GNU, vous pouvez utiliser dfcomme:

$ df --output=source ~/.bashrc | sed 1d
/dev/sda1

Posté par Philip

stat est ton ami ici. Le champ "appareil" vous indiquera sur quel appareil se trouve votre fichier.


Ajouter une réponse

Votre message :

:

Votre prénom:

Votre email:

:



A voir aussi :

Les dernières discussions:



Qui est Réponse Rapide?

Réponse rapide est un site internet communautaire. Son objectif premier est de permettre à ses membres et visiteurs de poser leurs questions et d’avoir des réponses en si peu de temps.

Quelques avantages de réponse rapide :

Vous n’avez pas besoins d’être inscrit pour poser ou répondre aux questions.
Les réponses et les questions des visiteurs sont vérifiées avant leurs publications.
Parmi nos membres, des experts sont là pour répondre à vos questions.
Vous posez vos questions et vous recevez des réponses en si peu de temps.

Note :

En poursuivant votre navigation, vous acceptez l'utilisation de cookies. En savoir plus