web-dev-qa-db-fra.com

Comment utiliser la commande `od` pour vérifier la mise à zéro du disque dur?

Je veux vérifier si un lecteur de disque dur a bien été mis à zéro. J'ai lu this , qui demande d'exécuter:

$ Sudo od /dev/disk2 | head

qui pour son disque dur renvoie:

0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000

J'ai lu ici ça

head renvoie les dix premières lignes de chaque nom de fichier qui lui est fourni.

  1. Ai-je raison de supposer que sans | head, od imprimera tout le contenu du disque dur sur le terminal?

  2. Quand j'ai essayé cela, j'ai obtenu la même sortie: 1 sept chiffres 0s et 8 à six chiffres 0s et 1 *, sauf qu'après le * Je reçois 7216060060000. Est-ce que tout va jusqu'au * les dix "lignes" (bien que ce ne soit pas un fichier et qu'il ne devrait pas y en avoir)?

  3. Pourquoi le premier chiffre ne comprend-il que sept chiffres?

  4. Que fait le * signifier? Cela signifie-t-il que tout le reste peut être n'importe quoi (pas nécessairement des zéros), sont tous des zéros (c'est-à-dire que mon disque dur entier est tous des zéros) ou sont tous du même motif précédent se répétant (c'est-à-dire 1 _ sept chiffres 0s et 8 à six chiffres 0s)?

  5. La page de manuel od indique que la commande od: "Ecrit une représentation non ambiguë, octets par défaut, de FILE sur la sortie standard." Qu'est-ce qu'un "octet octal"? This suggère qu'il s'agit d'une terminologie non standard mais peut être de 6 bits.

  6. Mon disque dur fait 500 Go avec des secteurs de 512 octets. Est ce que ca 7216060060000 égale cette capacité?

    7216060060000 octets octaux * (6 bits?/1 octet?) * (1 octet/8 bits) * (1 Go/1e9 octets) = 5412.045045 Go

    ce qui n'est pas ma capacité de disque dur. Quelque chose a mal tourné?

  7. Mon disque dur a-t-il été mis à zéro avec succès?

1
CodeBricks
  1. Non. head coupera la sortie après 10 lignes par défaut. Puisqu'il n'y avait que trois lignes au total dans la sortie, vous n'aurez que trois lignes avec ou sans head.
  2. En ce qui concerne les lignes, pourquoi seuls les fichiers devraient-ils avoir lignes ? Voulez-vous que toutes les sorties de commandes soient placées sur une seule ligne?
  3. Il s'agit d'un nombre octal indiquant le nombre d'octets lus depuis le début de l'entrée. Il peut s'agir de plusieurs chiffres si nécessaire.
  4. De man od :

    -v, --output-duplicates
          do not use * to mark line suppression
    

    Donc od essaie d'éviter d'imprimer des lignes en double. * Les marque.

  5. De la documentation d'origine od (qui est plus claire):

    Chaque ligne de sortie se compose du décalage dans l'entrée, suivi de groupes de données du fichier. Par défaut, od imprime le décalage en octal, et chaque groupe de données de fichier correspond à la valeur d'entrée d'un C short int imprimé sous la forme d'un nombre octal unique.

    Ainsi, chaque bloc dans son ensemble est un nombre octal. Un C short int Est généralement 2 octets . od prend deux octets de données, les traite comme un nombre, les imprime en base 8 comme un seul nombre et les répète. Chaque ligne a 8 de ces blocs, nous avons donc 16 octets par ligne. Le décalage est également imprimé en base 8, et 20 en base 8 est de 16 en base 10.

  6. Puisque le décalage est en base 8, conversion en base 10:

    $ echo $((8#7216060060000))
    500107862016
    $ echo $((8#7216060060000 / 1000 / 1000 / 1000))
    500
    

    $((N#X)) indique à bash de lire X comme un nombre de base -N. Puisque bash affiche par défaut en base 10, faire $((8#...)) convertit d'octal en décimal.

  7. Oui.

3
muru

Vous avez un tas de questions ici, cela répond # 5, la sortie octale représente les données binaires de trois bits à un chiffre, chaque chiffre aura une valeur de 0 à 7, avec 0 = binaire 000, 1 = binaire 001, 2 = binaire 010, 3 = binaire 011, 4 = binaire 100, 5 = binaire 101, 6 = 110 et 7 = 111. Octal était populaire avec les anciens systèmes informatiques, mais hexadécimal qui utilise 0-f pour représenter les valeurs 0000 à 1111 dans chaque Le chiffre est plus compact et utilisé plus fréquemment aujourd'hui.

0
Robert Dinse