![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!! |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| "sed" om te controleren of de grootte van het bestand & echo "" naar bestemming bestand | jockey007 | Programmeren en Shell Scripting | 7 | 04-28-2009 02:08 |
| Hoe kan ik vervangen "(", "\" "+" in een bestand | mail2sant | Programmeren en Shell Scripting | 3 | 04-22-2008 11:10 PM |
| Ontwikkeling Releases: Linux Mint 4.0 Beta "fluxbox", 4.0 Alpha "Debian" | iBot | UNIX en Linux RSS Nieuws | 0 | 01-04-2008 03:00 PM |
| Leg de lijn "mn_code \u003d" env | grep ".. mn" | awk-F "\u003d" '(print $ 2)' `" | Lokesha | UNIX voor Dummies Questions & Answers | 4 | 12-20-2007 01:52 |
| Nr. utpmx item: u moet exec "inloggen" uit laagste niveau 'shell' | peterpan | UNIX voor Dummies Questions & Answers | 0 | 01-18-2006 04:15 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
"VI"-ing een voortdurend bijgewerkte bestand
Hoi,
Een beetje hier van een domme vraag. Sorry folks. Stel ik heb dit bestand dat wordt bijgewerkt met onregelmatige tussenpozen (een paar seconden, een paar minuten, wie weet) door een achtergrond proces. Ikvi'Dit bestand met de bedoeling te bewerken, dus het opent een tijdelijke kopie als de gebruikelijke / tmp/720cwhatever Stel nu dat, terwijl ik dit bestand geopend, zijn bijgewerkt meerdere malen door de achtergrond proces. Ik maak mijn wijzigingen, save-quit. Wat gebeurt er met de updates die werden door de achtergrond proces tijdens de tijd had ik het bestand geopend? Hoe kan ik dit te verzachten? (helaas, het stoppen van de achtergrond proces is geen optie). Het bestand is vrij groot ook (ongeveer 40MB) dus het duurt vi een paar seconden te laden het op, om het te redden, enz. .... Unix is ksh. OS is SunOS. Hoop dat jullie kunnen helpen! - Met dank bij voorbaat! |
|
|||||
|
Percy, zoals sysgate opgemerkt, zal uw oplossing sterk afhangen van wat precies
u wilt bijwerken in het bestand. Is het echt nodig om "vi"Het dossier? Kan een shell worden geschreven om te doen de updates die je wilt? |
|
||||
|
OK cheers guys!
Een beetje meer info: Wat ik precies wil doen is dit: Dit is een groot bestand, vol van bestandsnamen en een hashcode voor elke bestandsnaam. elke regel in het bestand is bestandsnaam, datum, hashcode bestandsnaam, datum, hashcode ... Hoe dan ook, dus een bestand komt in een server, krijgt een hashcode die vervolgens wordt gebracht in dit grote log bestand van mij, en vervolgens het bestand is verwerkt. Indien het dossier opnieuw worden verstuurd naar de server, de hashcode wordt gecontroleerd en als het bestaat (dat wil zeggen, is mijn proces behandeld met het al) het gaat over het juiste bestand. Ik kom unstuck toen ik nodig om hetzelfde bestand opnieuw opwerken - dus ik nodig om de grote log bestand te bewerken en de vermelding te verwijderen (de hele lijn - naam, datum, hashcode), zodat ik kan voeden het door opnieuw. Schrijf een sh om te gaan met dit? - Niet zeker - zijn een van de landen waar het gebeurt vaak, maar niet vaak genoeg om een sch .... rechtvaardigen, maar zijn iets wat ik denk dat ik kon kijken. Een ander ding: Stel dat twee mensen sudos aan een gebruiker (dezelfde gebruiker), en dan de bewerkingen bestand - je krijgt niet de boodschap over het bestand veranderen bij het opslaan / quit right? - Tenminste dat is wat het lijkt te gebeuren hier in bizarro wereld ... |
|
|||||
|
Percy
Hier is een mogelijke oplossing: 1) Wijzig de naam "work_file" naar een "tmp_file" en maken dan een nieuwe "work_file" zodat nieuwe records kan blijven worden toegevoegd. Code:
mv work_file tmp_file touch work_file 2.a) Nadat je klaar bent met uw wijzigingen op de "tmp_file", doen stoppen nog niet. 2.b) Ga naar het einde van de "tmp_file" en in de opdrachtregel type: Code:
:r work_file van "tmp_file". 2.c) Schrijf en sluit de "tmp_file". Zoals u zeggen dat het bestand is zeer groot, als u probeert om het werkgebied te slaan als "work_file", kan het lang duren en gebruiken veel geheugen en schijfruimte. 3) Onmiddellijk naam "tmp_file" terug naar "work_file". Code:
mv tmp_file work_file |
|
||||
|
Dank u voor deze.
Er is nog steeds de geringe mogelijkheden van ontbrekende toevoegingen aan het logbestand tussen stappen 2c en 3 - en zijn voornamelijk te wijten aan hoe snel ik kan het type "mv file file2" - in paniek, ik waarschijnlijk meer tijd raken de backspace dan werkelijk te typen opdrachten correct. Zijn zeker een betere catcher van de inzendingen is dan de oplossing die ik in gedachten had - zo thanks very much! ![]() |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|