Het Gebruik van de time-out Opdracht op Linux

Fatmawati Achmad Zaenuri/Shutterstock.com

OK, dat is genoeg de tijd van de computer. U kunt processen termijnen, het instellen van een maximale tijd die ze kunnen met de timeoutcommand. Hier is een handleiding tot het stellen van grenzen op het runnen van programma ‘ s met deze opdracht.

Wat Is een time-out Voor U Doen?

De time-out opdracht kunt u een limiet instellen op de tijd van een programma. Maar waarom zou je dat willen doen?

In één geval is wanneer u precies weet hoe lang u wilt een proces te voeren voor. Een common use-case is om time-out controle een log-of data-capture programma, zodat de log bestanden niet meedogenloos verslinden uw ruimte op de harde schijf.

Een ander geval is als je niet weet hoe lang u wilt een proces te voeren, maar u weet u niet wilt dat deze voor onbepaalde tijd wordt uitgevoerd. Je zou er een gewoonte van het instellen van processen, het minimaliseren van het terminal venster, en te vergeten over hen.

Sommige programma ‘s–zelfs eenvoudige hulpprogramma’ s—kan netwerkverkeer genereren op een niveau dat kan een belemmering vormen voor de prestaties van uw netwerk. Of ze kunnen binden de middelen op een doelapparaat, het vertragen van de prestaties. (ping, ik ben op zoek naar u.) Het verlaten van deze soorten programma ‘ s die voor langere tijd terwijl u weg bent van uw computer is een slechte gewoonte.

time-out is een deel van de GNU Core Utils dus Linux-en Unix-achtige operating systemen zoals macOS al zijn time-out ingebouwd. Er is niets te installeren; u kunt gebruik maken van het recht uit de doos.

Aan de Slag Met time-out

Hier is een eenvoudig voorbeeld. Bijvoorbeeld met de standaard commando-regel opties, de ping-opdracht zal uitvoeren totdat u stoppen door op Ctrl+C. Als u niet onderbreken, het zal gewoon door blijven gaan.

ping 192.168.4.28

Door het gebruik van time-out, kunnen we ervoor zorgen dat ping doet het niet op en op, kauw-up van de netwerk bandbreedte en pesten welk apparaat wordt gepingd.

Het volgende commando maakt gebruik van time-out in de tijd te beperken ping. Wij zijn waardoor u 15 seconden uitvoeren voor ping.

time-15 ping 192.168.4.28

Na 15 seconden time-out eindigt de ping-sessie en we zijn terug naar de prompt.

Met behulp van time-out Met Andere Eenheden

Merk op dat we niet moeten toevoegen van een “s” achter de 15. time-out is uitgegaan van de waarde in seconden. Je zou kunnen toevoegen een “s”, maar het maakt echt geen verschil.

Voor het gebruik van een tijd, gemeten in minuten, uren of dagen voeg een “m”, een “h” of een “d”.

Om ping drie minuten, gebruik je het volgende commando:

time-out 3m ping 192.168.4.28

ping wordt uitgevoerd voor drie minuten voor de time-out stappen in en stopt de ping-sessie.

Het beperken van het Vastleggen van Gegevens Met time-out

Sommige data capture-bestanden kunnen groeien grote zeer snel. Om te voorkomen dat dergelijke bestanden steeds onhandig of zelfs problematisch in de grootte, het beperken van de hoeveelheid tijd die de capture programma mag worden uitgevoerd.

In dit voorbeeld gebruiken we tcpdump, een netwerk verkeer capture tool. Op de test machines die in dit artikel werd onderzocht op, tcpdump werd al geïnstalleerd in Ubuntu Linux en Fedora Linux. Het moest worden geïnstalleerd op Manjaro Linux en Arch Linux, met de volgende opdracht:

sudo pacman -Syu tcpdump

Kunnen We het tcpdump voor 10 seconden met de standaard opties, en redirect de uitvoer naar een bestand met de naam capture.txt met het volgende commando:

time-out van 10 sudo tcpdump > capture.txt

(tcpdump heeft zijn eigen opties op te slaan gevangen netwerkverkeer naar een bestand. Dit is een snelle hack omdat we bespreken time-out, niet tcpdump.)

tcpdump begint het vastleggen van het netwerkverkeer, en we wachten tot 10 seconden. En 10 seconden komt en gaat en tcpdump is nog steeds actief is, en capture.txt is nog aan het groeien in omvang. Het gaat om het nemen van een overhaaste Ctrl+C om te stoppen tcpdump.

Het controleren van de grootte van capture.txt met ls toont aan dat het groeide uit tot 209K in een kwestie van seconden. Dat bestand werd groeit snel!

ls -lh capture.txt

Wat is er gebeurd? Waarom niet time-out stoppen met tcpdump?

Het heeft allemaal te maken met signalen.

Het Verzenden Van Het Signaal Van Rechts

Wanneer de time-out wil om te stoppen met een programma stuurt de SIGTERM signaal. Dit beleefd vraagt het programma te beëindigen. Sommige programma ‘ s kunnen ervoor kiezen om te negeren de SIGTERM signaal. Als dat gebeurt, moeten we vertellen time-out een beetje dringender.

We kunnen dat doen door te vragen time-out voor het verzenden van het SIGKILL signaal in plaats.

Het SIGKILL signaal kan niet worden “gevangen, geblokkeerd of genegeerd”—het wordt altijd door. SIGKILL niet beleefd vragen het programma te stoppen. SIGKILL verbergt om de hoek met een stopwatch en een cosh.

We kunnen gebruik maken van de -s (signaal) optie om te vertellen time-out voor het verzenden van het SIGKILL signaal.

time-out -s SIGKILL 10 sudo tcpdump > capture.txt

Deze keer, zodra er 10 seconden zijn verstreken, tcpdump is gestopt.

Vragen Beleefd Eerste

We kunnen vragen time-out om te proberen om het programma te stoppen met SIGTERM, en stuur alleen in SIGKILL als SIGTERM werkte niet.

Om dit te doen, we maken gebruik van de -k (kill na) optie. De -k optie moet een waarde als een parameter.

In dit commando, we vragen time-out dmesg te laten draaien voor 30 seconden, en vervolgens te beëindigen met de SIGTERM signaal. Als dmesg wordt nog steeds uitgevoerd na 40 seconden, betekent dit dat de diplomatieke SIGTERM is genegeerd en time-out moet sturen in SIGKILL om de taak te voltooien.

dmesg is een hulpprogramma voor het bewaken van de kernel ring buffer berichten en toont ze in een terminal venster.

time-out -k) 40 30 dmseg -w

dmesg loopt voor 30 seconden en stopt bij het ontvangen van de SIGTERM signaal.

We weten het niet SIGKILL die gestopt dmesg omdat SIGKILL laat altijd een één-woord-in memoriam in het terminal venster: “Gedood.” Dat is niet gebeurd in dit geval.

Het ophalen van de Programma ‘ s Exit-Code

Goed gedragen programma ‘ s pas een waarde terug naar de shell wanneer zij een einde. Dit staat bekend als een exit-code. Dit wordt doorgaans gebruikt bij het vertellen van de shell–of welk proces gestart met het programma of de problemen zijn gekomen door het programma liep.

time-out biedt zijn eigen exit-code, maar we kunnen niet de zorg over. We zijn waarschijnlijk meer geïnteresseerd in de exit-code van het proces dat de time-out beheersen.

Met deze opdracht kunt ping voor vijf seconden. Het is pingen een computer genaamd Nostromo, die op de test-netwerk dat is gebruikt voor het onderzoek in dit artikel.

time-5 ping Nostromo.lokale

De opdracht heeft een looptijd van vijf seconden en time-out eindigt het. We kunnen dan controleren de exit-code van het gebruik van dit commando:

echo $?

De exit-code is 124. Dit is de waarde voor time-out wordt gebruikt om aan te geven het programma werd afgesloten met SIGTERM. Als SIGKILL het programma beëindigt, de exit-code is 137.

Als we onderbreken het programma met Ctrl+C de exit-code van de time-out is nul.

time-5 ping Nostromo.lokale
echo $?

Indien de uitvoering van het programma eindigt voordat de time-out eindigt het, time-out kan de exit-code van het programma terug naar de shell.

Om dit te bereiken is het programma moet een einde gekomen uit eigen beweging (in andere woorden, het is niet beëindigd door time-out), en we moeten gebruik maken van de –preserve-optie status.

Als we gebruik maken van de -c (tellen) optie met een waarde van vijf ping zal alleen brand uit vijf verzoeken. Wanneer wij de time-out een duur van één minuut, ping zal zeker hebben beëindigd door zelf. We kunnen dan controleren de uitgang de waarde met behulp van echo.

time-out –preserve-status 1m ping -c 5 Nostromo.lokale
echo $?

ping is voltooid zijn vijf ping-aanvragen en beëindigt. De exit-code is aan nul.

Om te controleren of de exit-code is afkomstig van ping, laat de kracht van de ping voor het genereren van een andere exit-code. Als we proberen te sturen ping-aanvragen naar een niet bestaand IP-adres, ping mislukken met een fout exit-code. We kunnen dan gebruik maken van echo om te controleren dat de exit-code is aan nul.

time-out –preserve-status 1m ping -c 5 NotHere.lokale
echo $?

De ping-opdracht uiteraard niet bij de niet-bestaand apparaat, zo meldt de fout en sluit af. De exit-code is een twee. Dit is de exit-code ping gebruikt voor algemene fouten.

Instelling Van De Basisregels Van Het

time-out is het verstrekken van een aantal grenzen aan lopende programma ‘ s. Als er een gevaar dat de log bestanden kunnen overschrijding van uw harde schijf of dat u misschien vergeten dat u links een netwerk tool draaien, wikkel ze in een time-out en laat de computer zelf regelen.

LEES VERDER

  • “Google’ s Stadions Is Over het Crashen Tegen de ISP Gegevens Caps
  • “Hoe Afbeeldingen uit te Schakelen in Chrome adresbalk Zoeken Suggesties
  • “Waarom Windows 10 Zegt Uw Wi-Fi-Netwerk “niet Veilig”
  • ‘Google Chrome’ s Hover Kaarten: Mijn Nieuwe Favoriete Ding dat ik niet Wist dat ik het Wilde
  • “Hoe Bang Moet Je Zijn Over de gezondheidsrisico’ s van 5G?

Posted

in

by

Tags: