Mikäköhän idea tällaisessa käyttäytymisessä on?
Mulla pyörii Linuxissa jokin binääri, esim "control".
Jos yritän päivittää sitä silloin kun se toimii, esim näin:
cp control /user/bin/control
niin saan virheilmoituksen:
cp: cannot create regular file `/user/bin/control': Text file busy
Siis en voi ylikirjoittaa sitä sen käydessä, mutta voin deletoida tai uudelleen nimetä sen, ja sen jälkeen tehdä kopioinnin, eli päivittää sen.
Mikä idea siinä on? Miksi tiedosto ei ole enää "busy" deletoidessa tai uudelleen nimettäessä?
(Tuon jipon jälkeen vanha versio pyörii tietenkin edelleenkin, kunnes se käynnistetään uudelleen.)
Jos joku kyselee miksi haluan päivittää binääreitä niiden käydessä, niin vastaan:
Jos joudun pysäyttämään binäärit ennen niiden päivitystä, niin se on varsin hidasta joidenkin binäärien kohdalla.
On paljon nopeampaa päivittää ne lennossa ja sitten bootata koko laite. (Laite on saulautettu Linux, jossa esiintyy muutenkin virtakatkoksia, joten ei seuraa mitään pahaa, vaikka ohjelmia ei aja oikaoppisesti alas ennen niiden automaattista päivitystä, kun kumminkin laite bootataan uusien asennusten jälkeen.)
Mulla pyörii Linuxissa jokin binääri, esim "control".
Jos yritän päivittää sitä silloin kun se toimii, esim näin:
cp control /user/bin/control
niin saan virheilmoituksen:
cp: cannot create regular file `/user/bin/control': Text file busy
Siis en voi ylikirjoittaa sitä sen käydessä, mutta voin deletoida tai uudelleen nimetä sen, ja sen jälkeen tehdä kopioinnin, eli päivittää sen.
Mikä idea siinä on? Miksi tiedosto ei ole enää "busy" deletoidessa tai uudelleen nimettäessä?
(Tuon jipon jälkeen vanha versio pyörii tietenkin edelleenkin, kunnes se käynnistetään uudelleen.)
Jos joku kyselee miksi haluan päivittää binääreitä niiden käydessä, niin vastaan:
Jos joudun pysäyttämään binäärit ennen niiden päivitystä, niin se on varsin hidasta joidenkin binäärien kohdalla.
On paljon nopeampaa päivittää ne lennossa ja sitten bootata koko laite. (Laite on saulautettu Linux, jossa esiintyy muutenkin virtakatkoksia, joten ei seuraa mitään pahaa, vaikka ohjelmia ei aja oikaoppisesti alas ennen niiden automaattista päivitystä, kun kumminkin laite bootataan uusien asennusten jälkeen.)
Vastaukset 7
Vanhimmat
tuolla mainittu joitain syitä
http://stackoverflow.com/questions/16764946/what-generates-the-text-file-busy-message-in-unix
En minä kysynyt että mikä aiheuttaa sen, vaan kysyin että miksi text file on busy ylikirjoittamisen kannalta, mutta ei deletoinnin tai uudelleen nimeämisen kannalta.
Se joko on busy tai ei ole busy. Nyt se näyttää olevan lukittu muutoksilta ja ei ole lukittu muutoksilta samaan aikaan. Äärimmäisen epäloogista.
Eli onko sille jokin järkevä selitys, vai onko kyse siitä että Linux kehittäjät eivät ole osanneet tehdä hommia kunnolla?
Ketä sinä tarkoitat Linux kehittäjillä?
Niitä jotka kehittävät kerneliä vai niitä jotka kehittävät jotain yksittäisiä ei välttämättä Linuxonly tekstinkäsittely juttuja.
Halooo... mieti itse. Vastaus on pääteltävissä kysymyksestäni - eikä se vaadi edes Einsteinin aivoja.
Jos et osaa kirjoittaa selvästi ole hiljaa.
Arvuuttaja oli jossain elokuvassa.
>> Siis en voi ylikirjoittaa sitä sen käydessä, mutta voin deletoida tai uudelleen nimetä sen, ja sen jälkeen tehdä kopioinnin, eli
a) päivittää
sen.
Mikä idea siinä on? Miksi tiedosto ei ole enää "busy"
b) deletoidessa tai
c) uudelleen nimettäessä?
Miksi välttämättä haluaisit korruptoida järjestelmän työmuistin?
a) korupptoi
b) ei korruptoi
c) ei korruptoi
Kiitos vastauksesta. En tiennyt että a-tapaus korruptoi työmuistin. Enkä tosin tiedä edelleenkään miksi työmuisti korruptoituu ylikirjoitettaessa mutta ei esim. deletoitaessa. Deletoinnissahan se vanha versio jää kumminkin pyörimään ja käyttänee edelleenkin jotain työmuistia. Mutta tuo vastaus riittää minulle. Eli voin turvallisesti ensin deletoida ja sitten kopioida.
Mähän voin tehdä vaikka skriptin pyörivien binääreiden päälle kopioimiseen:
Esim. rivin
cp control /user/bin/
tilalle vaikka
bincp control /user/bin/
jossa bincp on
rm $2$1
cp $1 $2