Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako zachytíte chyby príkazu vygenerované z príkazov IncorRect a uložte ich do súboru ErrorLogtxt?

Metóda chyby zachytávania a protokolovania príkazov do veľkej miery závisí od operačného systému a obalu, ktorý používate. Tu sú príklady pre niekoľko bežných scenárov:

1. Bash (linux/macos):

Tento prístup využíva vstavanú chybu a presmerovanie chýb spoločnosti Bash:

`` `Bash

#!/bin/bash

Príkaz na vykonanie. Vymeňte svojím skutočným príkazom.

command_to_execute ="Niektorí_invalid_command arg1 arg2"

Vykonajte príkaz a presmerujte stderr do súboru denníka. 2> &1 presmeruje Stderr aj Stdout.

$ command_to_execute 2> &1> errorlog.txt

Skontrolujte stav výstupu. Stav nenulového výstupu označuje chybu.

Ak [$? -e 0]; potom

Echo "Command '$ command_to_execute' zlyhal. Podrobnosti nájdete v časti Errorlog.txt."> &2

FI

`` `

* `2> &1`:Táto presmeruje štandardnú chybu (stderr, deskriptor súboru 2) na štandardný výstup (stdout, deskriptor súboru 1). To zaisťuje chybové správy a akýkoľvek výstup z príkazu sú zachytené v `errorlog.txt`.

* `> errorlog.txt`:Toto presmeruje stdout (ktorý teraz obsahuje aj stderr) do súboru` errorlog.txt`. Akýkoľvek existujúci obsah v súbore bude prepísaný. Ak sa chcete pripojiť namiesto prepísania, použite `>> errorlog.txt`.

* `$?`:Táto premenná obsahuje stav výstupu naposledy vykonaného príkazu. 0 označuje úspech, zatiaľ čo akákoľvek iná hodnota označuje zlyhanie.

2. PowerShell (Windows):

PowerShell ponúka sofistikovanejšie spracovanie chýb:

`` `PowerShell

Príkaz na vykonanie. Vymeňte svojím skutočným príkazom.

$ command ="Niektorí_invalid_command arg1 arg2"

skús {

&$ príkaz

}

chytiť {

# Napíšte chybovú správu do súboru protokolu.

$ _. Výnimka.Message | Out -file -FilePath "errorlog.txt" -Append

Write-Eror „Príkaz“ $ príkaz 'zlyhal. Podrobnosti nájdete v časti ErrorLog.txt. “

}

`` `

* `Skúste ... Catch`:Tento blok rieši potenciálne výnimky počas vykonávania príkazu.

* `$ _. Výnimka.Message`:Toto extrahuje chybové hlásenie z objektu výnimiek.

* `Out -File -FilePath" errorlog.txt "-Append`:Toto je pripojené k chybovému hláseniu do súboru` errorlog.txt`.

3. Python (krížová platňa):

Python umožňuje viac programového riadenia a je nezávislý od platformy:

`` `Python

subproces

import

command =["some_invalid_command", "arg1", "arg2"]

skúsiť:

result =subprocess.run (príkaz, stderr =subproces.pipe, text =true, check =true)

#Ak je úspešný, výsledok.stderr bude prázdny.

Okrem subprocesu.CalledProcesserror ako e:

s Open ("errorlog.txt", "a") ako f:

f.Write (f "command '{command}' zlyhal s návratovým kódom {e.returncode}:\ n")

F.Write (E.stderr + "\ n")

print (f "command '{command}' zlyhalo.

Okrem filenotfounderror:

s Open ("errorlog.txt", "a") ako f:

f.Write (f "command '{command}' nenájde. \ n")

print (f "command '{command}' nenájde.

`` `

* `subprocess.run`:Toto vykoná príkaz.

* `stderr =subprocess.pipe`:zachytáva stderr.

* `Text =true`:Zabezpečuje, že výstup je dekódovaný ako text.

* `Check =True`:Vyvoláva výnimku, ak príkaz vráti nenulový výstupný kód.

* `FilenotFoundError` sa výslovne zaobchádza s riešením príkazov, ktoré neexistujú.

Nezabudnite nahradiť `" some_invalid_command arg1 arg2 "` s vaším skutočným príkazom. Príklady používajú `errorlog.txt`, ale môžete si vybrať akýkoľvek názov súboru, ktorý uprednostňujete. Vždy zvážte vhodné spracovanie chýb, aby ste zabránili neočakávanému zrúteniu vášho skriptu. Príklad Python demonštruje robustné spracovanie chýb; Odporúča sa prijať podobný prístup pre zložitejšie scenáre.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené