processes unix process control
Procesbeheer in Unix:
In Unix worden alle instructies buiten de kernel uitgevoerd in de context van een proces.
Een proces is een reeks instructies en aan elk proces is een blok gecontroleerde gegevens gekoppeld. Processen kunnen op dezelfde manier worden gemanipuleerd als bestanden kunnen worden gemanipuleerd.
Bijvoorbeeld, zoals ‘ls’ kan worden gebruikt om de lijst met bestanden te zien, kan ‘ps’ worden gebruikt om de lijst met processen te zien.
Unix-video # 23:
In deze zelfstudie bespreken we welke procesgerelateerde informatie is opgeslagen en beschrijven we ook enkele opdrachten die worden gebruikt om processen te beheren. We zullen ook een korte beschrijving geven van hoe opdrachtscripts kunnen worden opgespoord.
Wat je leert:
Unix-procesinformatie
De procestabel bevat informatie over alle processen die momenteel worden uitgevoerd. Het belangrijkste doel van deze tabel is om alle lopende processen effectief te beheren.
ik heb een vals e-mailadres nodig
Notitie: Als multitasking- en multi-user besturingssysteem zal Unix veel processen tegelijk laten draaien.
De tabel bevat informatie zoals:
- Proces-id
- Bovenliggende proces-ID
- Staat van de processen
- CPU gebruik
Processen in Unix doorlopen verschillende toestanden, afhankelijk van verschillende omstandigheden. De statuswijzigingen kunnen worden geactiveerd door of een proces moet wachten totdat een lees- of schrijfbewerking is voltooid, of wanneer een ander, meer urgent proces de kans moet krijgen om te worden uitgevoerd.
Procesbesturingsopdrachten
Er zijn een aantal commando's die beschikbaar zijn om processen te herzien en te manipuleren. Het ‘ps’ commando kan worden gebruikt om de processtatusinformatie te bekijken.
Opdracht | ps - geeft informatie over alle processen die momenteel worden uitgevoerd. |
---|---|
Veel voorkomende Syntax | $ ps (OPTIES) |
Voorbeeld 1 | $ ps Geeft informatie over het proces, inclusief de PID, de naam van de terminal, het tijdstip van aanmaken en de naam van de processen. |
Zoals besproken in een eerdere tutorial, kunnen processen worden geclassificeerd als voorgrond, achtergrond of daemon. Wanneer een commando vanaf de terminal wordt uitgevoerd, werkt het normaal op de voorgrond. Om een proces op de achtergrond uit te voeren, kan de ‘&’ -knop aan het einde van de opdracht worden gebruikt.
Voorbeeld:
Dit commando zoekt naar de regels met het patroon 'hoe' en slaat de uitvoer op in bestand2. Als bestand1 redelijk groot is, willen we misschien doorgaan met andere acties en deze opdracht op de achtergrond uitvoeren. Met de ‘&’ aan het einde, wordt deze opdracht als een proces op de achtergrond uitgevoerd.
Het is mogelijk om een voorgrondproces op te schorten door het ‘^ Z’ commando te gebruiken. Met deze opdracht wordt het huidige voorgrondproces op de achtergrond onderbroken. Van daaruit kan het proces worden gepusht om het op de achtergrond te hervatten met het ‘bg’ commando, of het kan terug naar de voorgrond worden gebracht met het ‘fg’ commando.
Aan elk proces is ook een prioriteit gekoppeld. Dit wordt gebruikt om ervoor te zorgen dat het besturingssysteem redelijk tijd kan besteden aan verschillende verwerkingstaken. Het ‘nice’ commando kan worden gebruikt om de prioriteit van een proces te verlagen en dus ‘aardig’ te zijn voor de andere processen, d.w.z.
$ leuk
Deze regel zal het gespecificeerde commando met een lagere prioriteit uitvoeren - standaard wordt de prioriteit verminderd met 10. Het commando heeft ook een parameter die kan worden gebruikt om een ander niveau van ‘aardigheid’ te gebruiken.
Voorbeeld:
Dit commando voert ‘ls’ uit met de prioriteit verminderd met 20.
Het is ook mogelijk om de prioriteit te verhogen met een negatieve ‘aardigheid’. Hiervoor is echter toestemming van de superuser vereist.
Wanneer een terminal of inlogsessie wordt gesloten, stuurt deze het SIGHUP-signaal naar de onderliggende processen. Dit signaal zorgt er standaard voor dat de onderliggende processen worden beëindigd. Het ‘nohup’ -commando kan worden gebruikt om commando's te laten doorgaan, zelfs wanneer de inlogsessie is beëindigd.
Voorbeeld:
Met deze opdracht gaat het sorteren van bestand1 en opslaan in het proces van bestand2 door, zelfs als we zijn uitgelogd van het systeem.
Het ‘kill’ -commando kan worden gebruikt om elk van de processen te beëindigen, afhankelijk van de machtigingen.
Voorbeeld:
Deze opdracht beëindigt een proces met de proces-ID. De PID van een proces kan worden verkregen met het ‘ps’ commando.
Dit ‘at’ -commando wordt gebruikt om commando's uit te voeren op een bepaalde datum en tijd in de toekomst.
Voorbeeld:
Unix-foutopsporing
Unix biedt een aantal mechanismen om bugs in uw opdrachtscripts te vinden. Deze mechanismen kunnen worden gebruikt om een spoor te zien van wat er wordt uitgevoerd, d.w.z. de volgorde waarin opdrachten worden uitgevoerd. De trace kan worden gebruikt om de logica en controlestroom van het script te begrijpen en te verifiëren.
=> set -v
uitgebreide modus: Als u deze optie instelt voordat u een commando uitvoert, zorgt u ervoor dat het commando dat wordt uitgevoerd, wordt afgedrukt naar stdout voordat het daadwerkelijk wordt uitgevoerd.
=> set -x
uitvoering trace-modus: Als u deze optie instelt, wordt elke opdracht weergegeven terwijl deze wordt uitgevoerd, samen met de bijbehorende argumenten.
=> set -n
no-exec-modus: Als u deze optie instelt, worden eventuele fouten weergegeven zonder dat er daadwerkelijk opdrachten worden uitgevoerd.
Bekijk onze aanstaande tutorial voor meer informatie Geavanceerde shell-scripting.
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Unix verwerkt besturingsopdrachten zoals Ps en Top (Deel C)
- Unix-opdrachten: basis- en geavanceerde Unix-opdrachten met voorbeelden
- Unix-tekstverwerkingsopdrachten: Unix-filters met voorbeelden
- Unix Pipes-zelfstudie: Pipes in Unix-programmering
- Meer Unix-filter en Awk, Sed-opdrachten bij tekstverwerking
- Opdrachtregelargumenten in Unix Shell-script met voorbeeld
- UNIX-zelfstudie voor beginners (20+ diepgaande Unix-trainingsvideo's)
- Hoe twee bestanden in Unix te vergelijken: opdrachten voor bestandsvergelijking