lt.phhsnews.com


lt.phhsnews.com / Kaip paleisti komandą fone be rezultatų, jei nėra klaidos?

Kaip paleisti komandą fone be rezultatų, jei nėra klaidos?


Jei esate užsiėmęs žmogus, paskutinis dalykas, kurio jums reikia, yra būti varginantis su didžiuliu "nenaudingų" pranešimų kiekis, taigi, kaip jūs nusiraminate dalykus? Šiandienos "SuperUser" Q & A žinutė turi keletą puikių atsakymų, kad padėtų skaitytojui užblokuoti produkcijos kiekį.

Šiandienos klausimų ir atsakymų sesija ateina su meile iš "SuperUser" - "Stack Exchange", bendruomenės pagrįstos Q & A grupės interneto svetainių, padalijimo.

Klausimas

"SuperUser" skaitytuvas "Xster" nori žinoti, kaip paleisti komandą fone be išvesties, išskyrus atvejus, kai yra klaida:

Kaip slopinti komandų išvestį, bet parodyti, ar komandų išėjimo kodai klaida?

Kaip gaunate komandą paleisti fone be rezultatų, jei nėra klaidos?

Atsakymas

SuperUser autoriai Bobas ir Maximillian Laumeister atsakė už mus. Pirma, Bob:

Deja, prielaida, kad stderr naudojama tik klaidų išvedimui, ne visada yra teisinga. Greičiausiai stderr dažnai naudojamas bet kuriam ir visiems interaktyviam išėjimui ir diagnostikai (ty išėjimui, kurį vartotojas turi perskaityti interaktyvioje eilutėje). (1) wget ir dd yra gerai žinomi pavyzdžiai.

Kai kurioms komandoms bus numatyta vėliava (ty -svydis arba -silent ), kad būtų užkirstas kelias be klaidų. Perskaitykite jų meniu puslapius, kad sužinotumėte, ar jie egzistuoja.

Kitas dažniausiai pasitaikantis susitarimas yra išėjimo kodas , programa grąžina išėjimo kodą, kai jis baigiasi. Paprastai (2) išėjimo kodas 0 rodo sėkmę, o bet koks kitas išėjimo kodas nurodo klaidą.

Naudodami bash , galite gauti paskutinės komandos išėjimo iš $? kintamojo pabaigos kodą. Į fish naudokite kintamąjį $ status . Galite pagaminti stderr į laikiną failą ir jį atspausdinti, jei atsiranda klaida. Pavyzdžiui ( fish ):

Jūs taip pat galite naudoti kai kuriuos sparčiuosius klavišus, jei nesate grandinės komandas:

Arba:

Taip pat galite pakabinti stdout į tą pačią buferis naudojant 2> & 1> / tmp / outputbuffer .

( Pastaba: Aš iš tikrųjų nežinau fish , todėl aš pritaikau šią sąvoką ką aš galiu rasti savo dokumentuose.Sinteksė gali būti šiek tiek klaidinga.Taip pat galite naudoti mktemp , kad sukurtumėte unikalų laikiną failą. Vykdyti ir įrašyti failo pavadinimą kintamuju.)

Jei jums reikia paleisti visą dalyką lukšto fone, kurį tuo pačiu metu naudojate ir interaktyviai, tada jums geriau rašyti scenarijų, kuris sugeba paleisti išvesties ir paleisti tą scenarijų fone naudojant standartines technologijas ( žuvis ). Heck, galite įdiegti kažką panašaus į šią funkciją ~ / .config / fish / config.fish :

Skambinkite naudodami paleisti tylią somecommand ir (kur baigiasi & sukelia tai paleisti fone)

Atkreipkite dėmesį, kad tai sugrąžins pradinį išvesties kodą ir, jei bus išjungtas, išmesti tiek stdout , tiek stderr nesėkmė.

(1) Nėra jokios garantijos, kad klaidų išvedimas nebus rodomas stdout , kai kurios programos išsiskleidžia visą produkciją!

(2) Deja, tai dar ne visada. Išėjimo kodas yra visiškai kontroliuojamas programos, o kai kurie nurodo tam tikras sėkmės sąlygas su nuliniais išėjimais.

Vykdydami Maximillian Laumeister atsakymą:

"Unix" komunalinės paslaugos siunčia bendruosius pranešimus į stdout ir klaidų pranešimus į stderr , taigi, jei mes tik norėsite pamatyti klaidų pranešimus, tada užtenka užblokuoti stdout , kad į konsolę patektų tik stderr .

Tai padaryti (abiem atvejais bash ir fish ) yra pridėti > / dev / null komandai. Šie vamzdžiai stdout į nieką, bet stderr (su jūsų klaidos pranešimais) vis dar patenka į konsolę.

Pavyzdžiui:

komanda echo 1 > / dev / null nerašoma, nes normalusman doesnotexist> / dev / null atspausdina klaidos pranešimą, nes žmogus

rašo klaidos pranešimą stderr . Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.


Kaip sustabdyti

Kaip sustabdyti "Aero Shake" iš jūsų "Windows" minimizavimo

"Aero Shake" - smagu mažai funkcija, leidžianti patraukti langą antraštės juostoje ir purtyti, kad būtų galima kuo labiau sumažinti visus kitus atidarytus langus. patekti į kelią. Išjunkite "Aero Shake", redaguodami registro rankiniu būdu Norėdami išjungti "Aero Shake" bet kuriame kompiuteryje, kuriame veikia "Windows 7", "8" arba " 10, jums tiesiog reikia atlikti koregavimą prie vieno nustatymo Windows registro.

(how-to)

Kaip iš naujo nustatyti bet kokią

Kaip iš naujo nustatyti bet kokią "Mac App" numatytąsias nustatymus

Jūs buvote sugadintas naudojant "Mac" programos nustatymus, o dabar ši programa nebus įkelta. Ar yra kokių nors būdų iš naujo nustatyti programą, pradėti ją iš naujo ir vėl viską tinkamai veikti? Kaip paaiškėja, taip. Jūsų "Mac" iš esmės bibliotekos aplanke saugo jūsų programų parametrus, todėl jas galima lengvai ištrinti.

(how-to)