Ubuntu: Linux voor mensen/Processen/Het sleep commando
Wat doet sleep?
bewerkenDe 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
bewerkenIemand 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
bewerkenStel 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. |