On dirait que cet appareil est monté. Exécutez umount /dev/sdb1
et réessayez.
En supposant que vous obtenez cela à la suite de l'automatisation (par exemple, en utilisant expect
) le fdisk
opération (et que la partition n'est pas réellement montée), essayez d'ajouter quelques secondes de délai après avoir modifié la partition et avant d'écrire la partition capable.
J'ai eu la même erreur lorsque j'essayais d'automatiser un appel à fdisk
sur Centos 7.6 à la :
# (echo "d"; echo "";
echo "n"; echo ""; echo 3; echo 2001954; echo "";
echo "w") | fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Partition number (1-3, default 3): Partition 3 is deleted
Command (m for help): Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): Using default response p
Partition number (3,4, default 3): First sector (2001954-31116287, default 2002944): Last sector, +sectors or +size{K,M,G} (2001954-31116287, default 31116287): Using default value 31116287
Partition 3 of type Linux and of size 13.9 GiB is set
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Je soupçonnais que mon flux de commande canalisé faisait surface à un problème de synchronisation dans fdisk
(qui ne serait pas déclenché par une entrée plus lente/manuelle) alors j'ai commencé à saupoudrer sleep
commandes pour retarder diverses entrées jusqu'à ce que l'erreur disparaisse. Le problème dans mon cas était que le w
se produisait trop tôt après la définition de la nouvelle partition.
Un sleep 5
avant le w
aboutit à un succès constant :
# (echo "d"; echo "";
echo "n"; echo ""; echo 3; echo 2001954; echo "";
sleep 5; echo "w") | fdisk /dev/sdb