GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen:Gerät oder Ressource ausgelastet

Sieht so aus, als wäre dieses Gerät gemountet. Führen Sie umount /dev/sdb1 aus und versuchen Sie es erneut.


Angenommen, Sie erhalten dies als Ergebnis der Automatisierung (z. B. mit expect ) die fdisk Vorgang (und dass die Partition nicht tatsächlich gemountet ist), versuchen Sie, ein paar Sekunden Verzögerung hinzuzufügen, nachdem Sie die Partition geändert haben und bevor Sie die Partitionsdatei schreiben.

Ich habe den gleichen Fehler erhalten, als ich versuchte, einen Anruf an fdisk zu automatisieren auf Centos 7.6 a 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.


Mein Verdacht war, dass mein eingepflegter Befehlsstrom ein Timing-Problem in fdisk auftauchte (das würde nicht durch langsamere/manuelle Eingabe ausgelöst werden), also fing ich an, sleep zu streuen Befehle, um verschiedene Eingaben zu verzögern, bis der Fehler behoben ist. Das Problem in meinem Fall war, dass die w geschah zu früh, nachdem die neue Partition definiert wurde.

Ein sleep 5 vor dem w führt zu anhaltendem Erfolg:

# (echo "d"; echo "";
        echo "n"; echo ""; echo 3; echo 2001954; echo "";
        sleep 5; echo "w") | fdisk /dev/sdb

Linux
  1. So verschlüsseln Sie eine Partition mit DM-Crypt LUKS unter Linux

  2. ConfigParser-Installationsfehler – python setup.py egg_info fehlgeschlagen mit Fehlercode 1 [Gelöst]

  3. Linux – Bestimmen Sie die Größe eines Blockgeräts?

  4. Linux – Wie finde ich den Treiber (Modul), der mit einem Gerät unter Linux verbunden ist?

  5. Ein fehlerhaftes Blockgerät mit Lesefehlern simulieren?

Steuern einer USB-Stromversorgung (ein/aus) mit Linux

Fehler:Befehl „gcc“ ist mit Exit-Status 1 auf CentOS fehlgeschlagen

Docker-Job für docker.service ist fehlgeschlagen, da der Steuerungsprozess mit einem Fehlercode beendet wurde

Listen Sie Partitionsbezeichnungen über die Befehlszeile auf

Wie finde ich den Treiber (Modul), der einem Gerät unter Linux zugeordnet ist?

Wie kann ich einen Befehl verzögert im Hintergrund ausführen?