no.phhsnews.com


no.phhsnews.com / Hvordan kjører du en kommando i bakgrunnen uten utgang med mindre det er en feil?

Hvordan kjører du en kommando i bakgrunnen uten utgang med mindre det er en feil?


Hvis du er en travel person, så er det siste du trenger å bli plaget med en stor antall "ubrukelige" varsler, så hvordan stopper du tingene ned? Dagens SuperUser Q & A-post har noen gode svar for å hjelpe en leser til å stille ned mengden av utdata.

Dagens spørsmål og svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppe av Q & A-nettsteder.

Spørsmålet

SuperUser-leseren Xster vil vite hvordan man kjører en kommando i bakgrunnen uten utdata med mindre det er en feil:

Hvordan undertrykker du en kommandos utgang, men viser den om kommandoen er utgangskoder en feil?

Hvordan får du en kommando til å kjøre i bakgrunnen uten utdata med mindre det er en feil?

Svaret

SuperUser-bidragsytere Bob og Maximillian Laumeister har svaret for oss. Først opp, Bob:

Dessverre er antagelsen om at stderr bare brukes til feilutgang, ikke alltid korrekt. I stedet er stderr ofte brukt for alle interaktive utdata og diagnostikk (dvs. utgang som er beregnet for brukeren å lese i en interaktiv spørring). (1) wget og dd er kjente eksempler.

Noen kommandoer vil gi et flagg (dvs. -quiet eller -silent ) for å undertrykke ikke-feilutgang. Les deres mantsider for å se om en eksisterer.

En annen konvensjon som holder oftere er utgangskode , et program returnerer en utgangskode når den utgår. Vanligvis (2) indikerer en utgangskode på 0 suksess, og noen annen utgangskode indikerer en feil.

Med bash kan du få avslutningskode for den siste kommandoen fra variabelen $? . I fisk , bruk $ status variabelen. Du kan røre stderr til en midlertidig fil og bare skrive ut den hvis det oppstår en feil. For eksempel ( fisk ):

Du kan også bruke noen snarveier hvis du ikke kjeder kommandoer:

Eller:

Du kan også røre stdout til det samme buffer ved bruk av 2> & 1> / tmp / outputbuffer .

( Merk: Jeg vet egentlig ikke fisk , så jeg tilpasser konseptet til Du kan også bruke mktemp for å generere en unik midlertidig fil. Kjør den og ta opp filnavnet i en variabel.)

Hvis du må kjøre alt i bakgrunnen av et skall som du også bruker interaktivt på samme tid, da er det bedre å skrive et skript for å håndtere utdataene som skjuler og kjører det skriptet i bakgrunnen med standardteknikker ( fisk ). Heck, du kan sette noe som følgende funksjon i ~ / .config / fish / config.fish :

Ring med run-silent somecommand & (der den etterfølgende & får det til å kjøre i bakgrunnen)

Merk at dette vil svelge den opprinnelige utgangskoden, og vil dumpe både stdout og stderr i tilfelle en svikt. Du kan tilpasse det etter behov.

(1) Det er ingen garanti for at feilutgangen ikke vises på stdout , noen programmer vil dumpe alle utdataene der!

(2) Dessverre er dette fortsatt ikke alltid tilfelle. Utgangskoden er helt kontrollert av programmet, og noen vil indikere noen suksessforhold med nullutganger. Igjen, sjekk håndboken.

Etterfulgt av svaret fra Maximillian Laumeister:

Unix-verktøy sender generelle meldinger til stdout og feilmeldinger til stderr , så hvis vi bare Vil du se feilmeldinger, vil det være tilstrekkelig å undertrykke stdout slik at bare stderr får utgang til konsollen.

Måten å gjøre dette på (i begge bash og fisk ) er å legge til > / dev / null til kommandoen. Disse rørene stdout til ingenting, men stderr (med feilmeldingene dine) kommer frem til konsollen.

Så for eksempel:

Kommandoen ekko 1 > / dev / null skriver ingenting, fordi det normale Stdout -utgangen er undertrykt, og ingenting ble skrevet til stderr .

Kommandoen mannen doesnotexist> / dev / null skriver en feilmelding fordi mann skriver feilmeldingen sin til stderr .


Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Se hele diskusjonstråden her.


Slik deaktiverer du kommandoprompt og

Slik deaktiverer du kommandoprompt og "Kjør" -program i Windows

Kommandoprompt og Kjør-programmet er ganske kraftige verktøy i Windows-verdenen. Hvis du vil at bestemte brukere på en datamaskin ikke har tilgang til dem, er det ikke så vanskelig å gjøre. Windows gjør det ganske enkelt å åpne kommandoprompt, og det finnes alle slags nyttige ting du kan gjøre med det .

(how-to)

Hvorfor er de nye Google Maps Ubearbeidbart sakte på datamaskinen?

Hvorfor er de nye Google Maps Ubearbeidbart sakte på datamaskinen?

Den nye versjonen av Google Maps er bra, men hva gjør du når det fungerer jevnt for alle andre, men det er uutholdelig sakte på dine egne datamaskiner? Dagens spørreskjema for SuperUser er en enkel løsning for å hjelpe til med å øke hastigheten til en frustrert leser. Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppe av Q & A-nettsteder.

(how-to)