Puncte:0

Cum să evitați condiția de cursă atunci când montați, copiați fișiere în și demontați imagini

drapel dk

Acest script creează zece fișiere imagine și copiază peste fișiere în ele.

#!/bin/bash
# script pentru a crea mai multe imagini floppy pentru instalarea hwp30
#+pe virtualbox.

# demontați imaginea în carcasă montată
sudo umount /media/floppy

# creați zece imagini goale de 2,88 MB.
#+apoi montați fiecare imagine și copiați peste fișiere.
pentru n în {1..10}; do
    mkfs.msdos -C "hwp30-${n}.img" 2880
    sudo mount -o loop "hwp30-${n}.img" /media/floppy
    sudo cp -v "../DISK${n}" /media/floppy

    # dacă primul disc, apoi copiați peste INSTALL.EXE
    dacă [[ $n -eq 1 ]]; atunci
        sudo cp -v ../INSTALL* /media/floppy
    fi
    
    sudo umount /media/floppy
Terminat

# Terminat?
dacă [[ $? -eq 0]]; atunci
    ecou "gata!"
fi

Când rulez acest script, montarea, copierea fișierelor și demontarea sunt desincronizat; nu sunt făcute în ordinea corectă. Demontarea spune de câteva ori „dispozitivul este ocupat”.

După ce se termină scenariul, trebuie să fac umount comanda de mai multe ori pentru a le demonta pe toate (chiar dacă este același punct de montare?).

Cred că asta se numește a starea de cursă. Cum să remediez?

Soren A avatar
drapel mx
Probabil că se întâmplă pentru că încă există IO în imagine în timp ce memoria cache este golită. Încercați să adăugați `sync; sync` chiar înainte de linia cu `sudo umount /media/floppy`.. aceasta va solicita o spălare a datelor nescrise - și așteptați să se întâmple.
Logan Lee avatar
drapel dk
@SorenA, mulțumesc că am rezolvat-o!
Soren A avatar
drapel mx
Grozav, l-am adăugat ca răspuns. Va rog sa acceptati raspunsul :-)
Puncte:2
drapel mx

Problema ar putea fi că, deși copia s-a terminat, există încă IO care trece de la cache la imaginea montată.

Adăuga sincronizare; sincronizare chiar înainte de linia cu sudo umount /media/floppy.. acest lucru va solicita o spălare a datelor nescrise - și așteptați să se întâmple.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.