Αντιμετώπιση προβλημάτων

Γνώση Υπολογιστών >> Αντιμετώπιση προβλημάτων >  >> Αντιμετώπιση προβλημάτων Σφάλματα υπολογιστή σας

Πώς καταγράφετε τα σφάλματα εντολών που δημιουργούνται από τις εντολές Incorrrect και αποθηκεύστε τα στο αρχείο errorlogtxt;

Η μέθοδος για τη λήψη και καταγραφή σφαλμάτων εντολών εξαρτάται σε μεγάλο βαθμό από το λειτουργικό σύστημα και το κέλυφος που χρησιμοποιείτε. Ακολουθούν παραδείγματα για μερικά κοινά σενάρια:

1. Bash (Linux/MacOS):

Αυτή η προσέγγιση χρησιμοποιεί τον ενσωματωμένο χειρισμό σφαλμάτων και την ανακατεύθυνση του Bash:

`` `bash

#!/bin/bash

εντολή για εκτέλεση. Αντικαταστήστε με την πραγματική σας εντολή.

command_to_execute ="some_invalid_command arg1 arg2"

Εκτελέστε την εντολή και την ανακατεύθυνση stderr σε ένα αρχείο καταγραφής. 2> &1 ανακατευθύνει τόσο το Stderr όσο και το stdout

$ command_to_execute 2> &1> errorlog.txt

Ελέγξτε την κατάσταση εξόδου. Μια μη μηδενική κατάσταση εξόδου υποδεικνύει ένα σφάλμα.

Εάν [$? -ne 0]; τότε

echo "Command" $ command_to_execute "απέτυχε. Δείτε το errorlog.txt για λεπτομέρειες."> &2

fi

`` `

* `2> &1`:Αυτό ανακατευθύνει το τυπικό σφάλμα (stderr, περιγραφέας αρχείων 2) στην τυπική έξοδο (stdout, περιγραφέας αρχείων 1). Αυτό εξασφαλίζει τόσο τα μηνύματα σφάλματος όσο και οποιαδήποτε έξοδο από την εντολή καταγράφονται στο `errorlog.txt`.

* `> errorlog.txt`:Αυτό ανακατευθύνει το stdout (το οποίο τώρα περιλαμβάνει επίσης stderr) στο αρχείο` errorlog.txt`. Οποιοδήποτε υπάρχον περιεχόμενο στο αρχείο θα αντικατασταθεί. Για να προσθέσετε αντί για αντικειμενικά, χρησιμοποιήστε `>> errorlog.txt`.

* `$?`:Αυτή η μεταβλητή διατηρεί την κατάσταση εξόδου της πιο πρόσφατα εκτελεσμένης εντολής. Το 0 υποδεικνύει την επιτυχία, ενώ οποιαδήποτε άλλη τιμή υποδεικνύει την αποτυχία.

2. PowerShell (Windows):

Το PowerShell προσφέρει πιο εξελιγμένο χειρισμό σφαλμάτων:

`` `PowerShell

εντολή για εκτέλεση. Αντικαταστήστε με την πραγματική σας εντολή.

$ command ="some_invalid_command arg1 arg2"

Δοκιμάστε {

&$

}

αλίευση {

# Γράψτε το μήνυμα σφάλματος στο αρχείο καταγραφής.

$ _. Εξαίρεση.Message | Out -file -filepath "errorlog.txt"

Η εγγραφή-σφάλμα "Command '$ command' απέτυχε. Δείτε το errorlog.txt για λεπτομέρειες."

}

`` `

* Δοκιμάστε ... Catch`:Αυτό το μπλοκ χειρίζεται πιθανές εξαιρέσεις κατά την εκτέλεση εντολών.

* `$ _. Εξαίρεση.Message`:Αυτό εξάγει το μήνυμα σφάλματος από το αντικείμενο εξαίρεσης.

* `Out -file -filepath" errorlog.txt "-append`:Αυτό προσθέτει το μήνυμα σφάλματος στο αρχείο` errorlog.txt`.

3. Python (cross-platform):

Η Python επιτρέπει περισσότερο προγραμματικό έλεγχο και είναι ανεξάρτητη από την πλατφόρμα:

`` `Python

υπο -επεξεργασία εισαγωγής

Εισαγωγή sys

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

δοκιμή:

αποτέλεσμα =subprocess.run (εντολή, stderr =subprocess.pipe, text =true, check =true)

#Εάν είναι επιτυχής, το αποτέλεσμα θα είναι άδειο.

εκτός από το subprocess.calledProcessError ως e:

με ανοιχτό ("errorlog.txt", "a") ως f:

F.Write (F "Command '{Command}' απέτυχε με τον κωδικό επιστροφής {e.ReturnCode}:\ n")

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

εκτύπωση (F "Command '{Command}' απέτυχε. Δείτε το errorLog.txt για λεπτομέρειες.", File =Sys.stderr)

Εκτός από το FileNotFounderRor:

με ανοιχτό ("errorlog.txt", "a") ως f:

F.Write (F "Command '{Command}" δεν βρέθηκε. \ n ")

Εκτύπωση (F "Command '{Command}' Δεν βρέθηκε. Δείτε το errorLog.txt για λεπτομέρειες.", File =sys.stderr)

`` `

* `subprocess.run`:Αυτό εκτελεί την εντολή.

* `stderr =subprocess.pipe`:καταγράφει stderr.

* `text =true`:Εξασφαλίζει ότι η έξοδος αποκωδικοποιείται ως κείμενο.

* `check =true`:δημιουργεί μια εξαίρεση εάν η εντολή επιστρέψει έναν κωδικό εξόδου μη μηδέν.

* Το `filenotfounderror 'αντιμετωπίζεται ρητά για την αντιμετώπιση εντολών που δεν υπάρχουν.

Θυμηθείτε να αντικαταστήσετε το `" some_invalid_command arg1 arg2 "με την πραγματική σας εντολή. Τα παραδείγματα χρησιμοποιούν `errorlog.txt`, αλλά μπορείτε να επιλέξετε οποιοδήποτε όνομα αρχείου προτιμάτε. Πάντα να εξετάζετε τον κατάλληλο χειρισμό σφαλμάτων για να αποτρέψετε την κατάρρευση του σεναρίου σας απροσδόκητα. Το παράδειγμα Python καταδεικνύει ισχυρό χειρισμό σφαλμάτων. Συνιστάται να υιοθετήσετε μια παρόμοια προσέγγιση για πιο σύνθετα σενάρια.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα