Slik bruker du tee- og skriptkommandoer for å fange utdata og feil å arkivere

Hvordan bruke tee- og skriptkommandoer for å fange utdata og feil å arkivere Trenger du hjelp til å feilsøke bash-skriptene? Gi tee og manus.

Hva skjer når du har skrevet et skript for å håndtere en avgjørende oppgave på Linux-serverne dine, og du trenger output fra det skriptet, slik at du enten kan logge hva som skjer eller feilsøke det som kanskje ikke har skjedd under kjøringen? Hvis skriptet bruker bestemte tjenester, kan du alltid se de bestemte loggfilene, men det er litt tungvint. Og hvis skriptet mislykkes, kan det hende at disse serviceloggene ikke hjelper.

Det beste alternativet ditt er å bruke kommandoer som alltid er nyttige tee eller skript. T-kommandoen leser fra standardutdata og skriver til standardutgang eller til filer, mens skriptkommandoen lager et typeskript for en terminalsession og kan sendes ut til fil. For alle som gjør mye bash scripting, bør disse kommandoene betraktes som må-ha verktøy. Dette gjelder spesielt når skriptet gir en god mengde informasjon.

Jeg vil introdusere deg for tee- og skriptkommandoene, slik at du kan feilsøke og logge basskriptene dine mer effektivt.

10 gratis alternativer til Microsoft Word og Excel (TechRepublic nedlasting)

Hva du trenger

Det eneste du trenger å bruke tee eller script er en Linux-server (eller desktop). Både tee og script bør installeres som standard, så det er ikke nødvendig å installere en enkelt pakke.

Slik bruker du tee-kommandoen

For enkelhets skyld, la oss skrive det alltid herlige "Hello World" -skriptet. Dette skriptet vil bare bestå av følgende:

 #! / bin / bash echo Hello World 

Navngi filtesten og gi den kjørbare tillatelser med kommandoen:

 chmod u + x test 

Hvis du kjører det skriptet med kommandoen ./test, bør du se lignende utdata som vist i figur A.

Figur A

A working Hello World script.

" data-credit="" rel="noopener noreferrer nofollow">

Et fungerende Hello World-manus.

Du stiller deg kanskje dette spørsmålet: "Hvorfor sender jeg ikke bare utdataene fra skriptet direkte til en fil?" Du kan gjøre det med kommandoen:

 ./test>test.log 

Du vil ikke se noen utdata returnert til terminalen da alt blir dumpet i filen test.log. For å både se output i sanntid, og ha en loggfil for output, bruker du tee-kommandoen slik:

 ./test | tee test.log 

Ikke bare vil du se Hello World skrevet ut til standardutdata (terminalen-- figur B ), du vil også ha test.log-filen som inneholder samme utdata.

Figur B

The tee command in action.

" data-credit="" rel="noopener noreferrer nofollow">

T-stykkommandoen i aksjon.

Hvordan bruke skriptkommandoen

Det neste verktøyet kalles skript. Med skript får du en interaktiv økt, som alle både skrives ut til standardutdata og skrives til en fil. For å bruke skript med Hello World-eksemplet, vil kommandoen være:

 script -c ./test test.log 

Alternativet -c forteller skript at vi kjører en kommando. Utgangen fra skriptkommandoen er vist i figur C.

Figur C

The script output.

" data-credit="" rel="noopener noreferrer nofollow">

Skriptet blir utgitt.

Forskjellen mellom utdataene til filen med tee- og skriptskommandoer er at skriptutgangen vil gi deg litt mer informasjon, for eksempel exitkoder ( figur D ).

Figur D

Exit codes are included in the script output.

" data-credit="" rel="noopener noreferrer nofollow">

Utgangskoder er inkludert i skriptutgangen.

Når du har et mer komplisert bash-skript, ser du naturlig nok mer fortellende utdata fra kommandoen. La oss for eksempel si at du skriver et basskript som krever inntasting av filnavn og at filen blir slettet. Det bash skriptet kan se slik ut:

 #! / bin / bash echo "Skriv inn filnavn for å fjerne" les fn rm -i $ fn 

Når du kjører filen med skriptkommandoen:

 script -c ./test test.log 

Du blir bedt om at filnavnet blir slettet ( figur E ). Når filen er slettet, kan du deretter se test.log-filen for å se hele sesjonen.

Figur E

A slightly more complicated bash file in the running.

" data-credit="" rel="noopener noreferrer nofollow">

En litt mer komplisert bash-fil i løpet.

Når du har et veldig komplekst basskript, vil du se ganske mye mer (og nyttig) output skrevet til loggfilen.

Og der har du det, to måter å fange ut fra bash-skript både til standardutdata og til fil. Nyt dette nye nivået av feilsøking og logging av bash script.

Ukens nyhetsbrev med åpen kildekode

Du vil ikke gå glipp av våre tips, opplæringsprogrammer og kommentarer til Linux OS og open source applikasjoner. Leveres tirsdager

Registrer deg i dag

© Copyright 2021 | pepebotifarra.com