Ubuntu: Linux voor mensen/Processen/Het sleep commando

Wat doet sleep?

bewerken

De man of info pagina van sleep is waarschijnlijk een van de kortste documentaties over programma's ooit. Het enige dat sleep doet, is wachten. Standaard wordt de wachttijd uitgedrukt in seconden. Hoewel programmeurs de sleep functie beter kennen dan gewone gebruikers, kunnen we het programma toch nuttig toepassen, ook als gewone gebruiker.

Voorbeeld: lunchtijd

bewerken

Iemand belt je op om te vragen of je mee komt lunchen, en je zegt “OK, ik ben er over een half uurtje”, maar je verdrinkt zowat in het werk en zal bijna zeker de afspraak vergeten. Gebruik het volgende commando in zo'n geval:

 

Onderstaand voorbeeld kan je zelf makkelijk testen.

willy@ubuntu:~$ (sleep 1800; echo -e "\a Etenstijd..") &

Exact een half uur later (1800 seconden) zal je een belsignaal horen en een tekst in je terminal venster zien verschijnen.

Deze combinatie van commando's verdient wel wat verdere uitleg:

  • Twee commando's worden na elkaar uitgevoerd: sleep en echo. Ze worden van elkaar gescheiden door een puntkomma.
  • De twee commando's worden gezamenlijk in de achtergrond geplaatst door ze tussen ronde haken te zetten, die gevolgd worden door een ampersand.
  • Eerst wordt het sleep commando uitgevoerd. Als dat voltooid is volgt echo, waarmee je tekst op het scherm kan zetten. We zagen het gebruik van echo reeds eerder om de inhoud van variabelen te tonen.
  • Met de -e bij echo geef je aan dat speciale karakters geïnterpreteerd moeten worden, zoals bijvoorbeeld “\a”, wat staat voor een belkarakter. Zie de man pagina van echo voor meer informatie.
  • Het is een goede gewoonte om strings (series van karakters) tussen aanhalingstekens te zetten, zodat ze allemaal tezamen beschouwd worden. Doe je dat niet, dan beschouwt het systeem elke string na een spatie als een nieuwe string. Als je ooit shell programma's gaat schrijven, moet je dit weten.

Het echo commando kan natuurlijk ook vervangen worden door een ander commando, bijvoorbeeld een zware taak die je moet uitvoeren wanneer de andere gebruikers naar huis zijn, maar je moet zelf ook je trein halen en wilt niet wachten totdat iedereen weg is, en het is al 20 voor 5:

 

willy@ubuntu:~$ (sleep 5000; zwaar_programma) &

Daarna kan je uitloggen of je scherm vergrendelen.

Voorbeeld: grote afdrukopdrachten

bewerken

Stel je voor: je hebt net op het werk een drietal boeken van het Internet geplukt en je wilt ze afdrukken om ze thuis rustig te kunnen lezen. Maar als je alles in één keer afdrukt, zullen je collega's gedurende een uur of langer niets kunnen afdrukken, omdat jouw bestanden zo groot zijn. Gebruik het volgende commando om je collega's tussen elk boek 20 minuten de kans te geven om een briefje van enkele bladzijden af te drukken:

 

willy@ubuntu:~$ lp boek_1; sleep 1200; lp boek_2; sleep
1200; lp boek_3

Het lp-commando wordt gebruikt om via het terminal venster bestanden af te drukken. Het instellen van printers en afdrukken van bestanden wordt verder besproken in de paragraaf Geluid afspelen.

 

Sleep voor programmeurs

Programmeurs kennen de sleep functie zeer goed, bijvoorbeeld opdat een programma een bepaalde tijd op input van de gebruiker zou wachten alvorens verder te gaan.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.