Opdrachten, configuratie en fouten · oefening
Vind welke laag misging
De snelste vraag bij probleemoplossing is niet “wat zal ik proberen?”, maar “hoe ver kwam het verzoek?” Een foutmelding is bewijs over de laatste laag die nog werkte. Zo gelezen verandert een muur van rode tekst in een locatie.
Lees fouten op volgorde
Loop voor de startvoorbeelden in deze cursus vier vragen langs:
Opdracht opzoeken: heeft de shell het genoemde programma gevonden en gestart?
Pad opzoeken: heeft dat programma het opgegeven doel gevonden?
Toestemming: stond het besturingssysteem de handeling toe?
Programma: heeft het programma zijn eigen werk afgemaakt?
Begin bij de eerste fout die het bewijs aanwijst. Dit zijn categorieën voor diagnose, geen vier fasen die elk programma precies één keer doorloopt. Rechten kunnen verhinderen dat een programma start, en een draaiend programma kan later mislukken bij het openen van een ander bestand. Lees de volledige melding om de mislukte handeling te vinden. Het schema stelt dezelfde vragen: COMMAND FOUND? (opdracht gevonden?), PATH FOUND? (pad gevonden?), ALLOWED? (toegestaan?) en PROGRAM COMPLETED? (programma voltooid?). Een ja leidt verder (YES → next), tot het klaar is (DONE); de onderste vakken koppelen de mislukte laag aan de Engelse foutmelding.

| Aanwijzing | Mislukte laag | Eerste nuttige stap |
|---|---|---|
pythno: command not found | Opdracht opzoeken | Controleer de spelling en vraag de shell daarna waarnaar die naam verwijst. |
can't open file '/workspace/data/report.py' | Pad opzoeken | Vergelijk het geprobeerde pad met je huidige locatie en de werkelijke structuur. |
permission denied | Toestemming | Bekijk het exacte doel en de handeling. Begin niet met het verruimen van rechten. |
| Een traceback met een bestandsnaam en regelnummer | Programma | Lees de laatste regel van de traceback en bekijk daarna die programmaregel. |
Elke melding vertelt je ook wat al is gelukt. Een traceback bewijst dat de shell Python heeft gevonden en dat Python het bestand heeft gevonden. Een melding dat Python zijn bronbestand niet kan openen laat zien dat Python is gestart, maar het bestand op het geprobeerde pad niet kon bereiken. Het pad kan verkeerd zijn of het bestand kan ontbreken. Een melding dat de opdracht niet is gevonden bewijst dat geen van beide zo ver kwam.
Een traceback somt op waar een fout optrad terwijl Python draaide. De laatste regel noemt de fout en geeft een melding. Een traceback die eindigt met PermissionError: ... Permission denied betekent bijvoorbeeld dat Python is gestart en dat daarna een handeling binnen het programma werd geweigerd. Een traceback die eindigt met FileNotFoundError wijst op een bestand dat het draaiende programma niet kon vinden. Installeer Python niet opnieuw alleen omdat een latere bestandsbewerking mislukte.
Oefenen met diagnose
Reset de werkruimte van hoofdstuk 7 en begin in /workspace. Die bevat een werkende report.py, een bewust defecte broken-report.py en een map data.
Veroorzaak drie van de vier fouten zelf en lees de vierde in een weergave van terminaluitvoer.
python ./missing-report.py
python ./broken-report.py
pythno ./report.py
De laatste melding van PowerShell zegt dat de term pythno niet wordt herkend. Die melding komt van de shell. Voor die regel is Python nooit gestart.
python missing-report.py
python broken-report.py
pythno report.py
De laatste melding van Bash zegt pythno: command not found. Die melding komt van de shell. Voor die regel is Python nooit gestart.
python missing-report.py
python broken-report.py
pythno report.py
De laatste melding van Bash zegt pythno: command not found. Die melding komt van de shell. Voor die regel is Python nooit gestart.
Voor een rechtenfout is een bestand nodig waarvan de rechten verkeerd staan. Deze cursus vraagt je niet om dat te maken. Lees in plaats daarvan deze terminaluitvoer en deel de fout alleen op basis van de formulering in:
PS /workspace> & ./locked-tool
ResourceUnavailable: Program 'locked-tool' failed to run: Permission denied
bash: ./locked-tool: Permission denied
bash: ./locked-tool: Permission denied
Let erop dat de shell ./locked-tool goed genoeg vond om het te proberen. Er was niets verkeerd gespeld en er ontbrak geen pad. Het besturingssysteem weigerde de geprobeerde handeling. Rechteninstellingen inspecteren en wijzigen valt hier bewust buiten de les. De nuttige beginnersstap is het bewijs indelen zonder blindelings rechten te verruimen.
Oefening: deel alle vier in
Schrijf nadat je alle vier de gevallen hebt gezien op bij welke laag elk geval misging. Maak destination/diagnosis.txt met vier regels, één per geval, in deze volgorde:
pythno report.pypython missing-report.py./locked-toolgeweigerdpython broken-report.py
Gebruik voor elk geval exact één van deze labels: command-lookup, path-lookup, permission of program. Het bewijsbestand moet precies vier niet-lege regels hebben in deze vorm:
case1=<layer>
case2=<layer>
case3=<layer>
case4=<layer>
Schrijf de eerste regel met Set-Content in PowerShell of > in Bash. Voeg de andere drie daarna toe met Add-Content of >>. Lees het resultaat met Get-Content of cat en controleer de volgorde voordat je je werk indient. Laat beide meegeleverde programma’s exact zoals ze zijn.
De controle kan de vier labels en de meegeleverde oefenbestanden beoordelen, maar kan je terminal niet opnieuw afspelen. Veroorzaak de fouten en lees wie er spreekt. Anders zijn die vier overgeschreven woorden vooral een bewijsbestand aan het spelen.
Twijfel je tussen twee lagen, ga dan terug naar de fouttekst en vraag welk programma die heeft gemaakt. Het antwoord zit bijna altijd in wie er spreekt: de shell, de starter, het besturingssysteem of het programma zelf.
Je voert python report.py uit. De terminal toont een traceback die regel 12 van report.py noemt. Welke conclusie wordt ondersteund voordat je iets verandert?
Een teamgenoot meldt alleen: "Het project start niet." Wat kun je het beste als eerste vragen?
Je hebt nu een werkwijze in plaats van een lijst gokjes. Het laatste hoofdstuk opent met een vage melding over iets dat ontbreekt en vraagt je te bewijzen wat er werkelijk mis is.