Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Terminal onduidelijk  (gelezen 824 keer)

Offline LennyOO

  • Lid
Terminal onduidelijk
« Gepost op: 2011/10/11, 14:24:58 »
Hallo mensen!

Ik moet de laatste tijd erg veel met de terminal van Linux werken. Het gaat daarbij om commando's zoals sed en tr (analyse van bigrammen etc). Aangezien er heel veel lange teksten moeten worden doorzocht, kan dit een tijdje duren per commando. Dit is normaal, neem ik aan?
Ik heb echter een vraag: Wanneer het erg lang duurt, kan ik niet goed zien of de computer nog bezig is om het commando te verwerken of niet. Er komt dan een newline in de terminal met alleen maar zo'n knipperlichtje. Met een Ctrl+C krijg ik de bewerkbare commandline wel weer terug maar dan weet ik niet of ik het commando ergens in het proces heb afgebroken. Hoe kun je zien wanneer iets klaar is, of is het de pijnlijke waarheid dat je echt moet wachten tot je de commandline weer kunt gebruiken zonder Ctrl+C?

Alvast bedankt!

Lennart.

Offline Bloom

  • Lid
Re: Terminal onduidelijk
« Reactie #1 Gepost op: 2011/10/11, 14:29:42 »
Als je een lopend bevel afbreekt met ctrl+C, breek je het effectief af en is het dus niet voltooid.
Je moet dus wachten tot het uit zichzelf eindigt als je zeker wil zijn dat het bevel ook volledig uitgevoerd werd.
Bij een bevel dat extreem lang zal duren, zijn er wel mogelijkheden om dat in de achtergrond te laten uitvoeren. Dat kan natuurlijk alleen als de verdere bevelen niet afhankelijk zijn van de voltooiing van dat langdurige.
Je kunt een bevel 'forken' (in de achtergrond laten uitvoeren) door op het einde van de regel een & toe te voegen.
bevel parameters &

Re: Terminal onduidelijk
« Reactie #2 Gepost op: 2011/10/11, 14:34:25 »
Het is klaar als je de "$" weer terug krijgt voor een nieuw commando, en daarvoor is hij nog aan het werk. Ctrl+C breekt de actieve taak af. Het knipperende ding betekent dat het programma bezig is. Wil je meerdere commando's naast elkaar draaien tegelijkertijd (zonder dat ze met elkaar interactie hebben) dan kun je "&" gebruiken, bijvoorbeeld lspci & lsusb . Gebruik je "&&" dan draaien de taken achter elkaar, bijvoorbeeld lspci && lsusb .

Offline LennyOO

  • Lid
Re: Terminal onduidelijk
« Reactie #3 Gepost op: 2011/10/11, 14:46:09 »
Verhelderend, bedankt mensen!
De commando's kan ik niet gebruiken want ik moet echt elk commando na de andere starten. Maar ik weet dus dat ik "even" geduld nodig heb.
Er is geen commando dat iets laat zien hoe lang het nog duurt? (een percentage of iets dergelijks?)

Danku!

Re: Terminal onduidelijk
« Reactie #4 Gepost op: 2011/10/11, 14:47:52 »
Niet voor zo ver ik weet...

Offline Bloom

  • Lid
Re: Terminal onduidelijk
« Reactie #5 Gepost op: 2011/10/11, 15:35:28 »
Jawel, er bestaat een terminalprogramma genaamd pv waarmee dat gaat. Het is niet standaard geïnstalleerd in Ubuntu en de meeste andere Linux'en, dus moet je het eerst installeren:
sudo apt-get install pv
En daarna kun je het zetten tussen twee dingen in:
prog1 | prog2wordt dan:
prog1 | pv | prog2en het geeft je dan iets om naar te kijken terwijl de code loopt. pv werkt via piping. Invoer en uitvoer worden gewoon doorgelust, maar zijn progressiebalkje stuurt hij naar standard-error (en dat is in een terminalsessie normaal het scherm).

Offline vanadium

  • Lid
Re: Terminal onduidelijk
« Reactie #6 Gepost op: 2011/10/11, 17:36:35 »
Als je een langdurig proces in de terminal lopen hebt, dan kan je het ook naar de "achtergrond" verplaatsen. Dan komt de terminal vrij voor een ander commando: unix/linux is een multitasking systeem.

Je drukt Ctrl+z in. Hierdoor "bevriest" het lopende proces en komt de commandolijn vrij.

Nu geef je het commando "bg" (background). Het proces loopt nu terug verder, maar op de achtergrond.

Wil je het proces terug op de voorgrond, gebruik dan "fg".

Offline OrangeTux

  • Lid
Re: Terminal onduidelijk
« Reactie #7 Gepost op: 2011/10/11, 18:58:39 »
Offtopic:

Je kunt een bevel 'forken' (in de achtergrond laten uitvoeren) door op het einde van de regel een & toe te voegen.
bevel parameters &

Dit is toch niet forken? Forken is een proces dupliceren.

Re: Terminal onduidelijk
« Reactie #8 Gepost op: 2011/10/11, 19:19:14 »
Verhelderend, bedankt mensen!
De commando's kan ik niet gebruiken want ik moet echt elk commando na de andere starten. Maar ik weet dus dat ik "even" geduld nodig heb.
Er is geen commando dat iets laat zien hoe lang het nog duurt? (een percentage of iets dergelijks?)
Danku!

Als je steeds dezelfde programma's achter elkaar moet starten loont het gauw de moeite om dat te gaan scripten en dat scriptje uit te voeren.

Je kunt ook een tweede terminal open en daar bijv top runnen om te zien of er nog cpu wordt gebruikt (of iotop voor IO, mytop voor mysql queries, vnstat voor netwerk etc etc).

En idd naar de achtergrond stueren is ook goed mogelijk.

als je veel met pipes werkt prog1 | prog2 zou je tee kunnen gebruiken om de output ook ergens anders heen te sturen, dan kun je een indruk krijgen van hoe ver ie is.
dus prog1 | tee /tmp/foo | prog2

Met time kun je zien hoelang iets duurt maar dat is slechts achteraf.
URD - http://www.urdland.com - Usenet Resource Downloader