Kaip naudoti skirtojo laiko komandą „Linux“.

„Linux“ nešiojamas kompiuteris, kuriame rodomas „bash“ raginimas

Fatmawati Achmad Zaenuri / Shutterstock.com



Gerai, užtenka laiko kompiuteriui. Galite nurodyti procesams laiko limitus, nustatydami maksimalų laiką, kurį jie gali vykdyti naudodami komandą |_+_|. Štai pamoka, kaip apriboti programų vykdymą naudojant šią komandą.

Kuo jums naudingas laikas?

|_+_| komanda leidžia nustatyti laiko trukmę veiks programa. Bet kodėl tu norėtum tai daryti?





Vienas atvejis yra tada, kai tiksliai žinote, kiek laiko norite, kad procesas vyktų. Įprastas naudojimo atvejis yra |_+_| valdyti registravimo ar duomenų fiksavimo programą, kad žurnalo failai nenumaldomai neužimtų vietos standžiajame diske.

Kitas atvejis yra tada, kai nežinote, kiek laiko norite, kad procesas vyktų, bet žinote, kad nenorite, kad jis vyktų neribotą laiką. Galbūt turite įprotį nustatyti veikiančius procesus, sumažinti terminalo langą ir pamiršti apie juos.



Kai kurios programos – net paprastos komunalinės paslaugos – gali generuoti tinklo srautą tokiu lygiu, kuris gali trukdyti jūsų tinklo veikimui. Arba jie gali susieti išteklius tiksliniame įrenginyje, sulėtindami jo veikimą. (|_+_|, aš žiūriu į jus.) Tokio tipo programas palikti veikti ilgą laiką, kol nesate prie kompiuterio, yra bloga praktika.

Skelbimas

|_+_| yra dalis GNU Core Utils taigi Linux ir Unix tipo Visose operacinėse sistemose, tokiose kaip „MacOS“, skirtas laikas. Nėra ką įdiegti; galite naudoti jį iš karto išėmus iš dėžutės.

Darbo pradžia naudojant skirtąjį laiką

Štai paprastas pavyzdys. Pavyzdžiui, su numatytosiomis komandų eilutės parinktimis, |_+_| komanda veiks tol, kol ją sustabdysite paspausdami Ctrl+C. Jei jo nepertrauksite, tai tiesiog tęsis.



timeout

Naudodami |_+_| galime įsitikinti, kad |_+_| neveikia ir neveikia, kramtydamas tinklo pralaidumą ir trikdydamas bet kokį įrenginį, kuris yra pinguojamas.

Ši kita komanda naudoja |_+_| iki termino |_+_|. Leidžiame 15 sekundžių veikti |_+_|.

timeout

Po 15 sekundžių |_+_| nutraukia |_+_| sesija ir mes grįžtame į komandinės eilutės eilutę.

Skirtojo laiko naudojimas su kitais laiko vienetais

Atminkite, kad mums nereikėjo pridėti s po 15. |_+_| daro prielaidą, kad vertė yra sekundėmis. Galite pridėti s, bet tai tikrai neturi jokio skirtumo.

Skelbimas

Norėdami naudoti laiko reikšmę, išmatuotą minutėmis, valandomis arba dienomis, pridėkite m, h arba d.

Norėdami, kad ping vyktų tris minutes, naudokite šią komandą:

timeout

|_+_| veiks tris minutes prieš |_+_| įeina ir sustabdo |_+_| sesija.

ping sesija veikia terminalo našlyje

Duomenų fiksavimo apribojimas su skirtuoju laiku

Kai kurie duomenų rinkimo failai gali labai greitai išaugti. Kad tokie failai netaptų nepatogūs ar net probleminio dydžio, apribokite fiksavimo programos veikimo laiką.

Šiame pavyzdyje mes naudojame |_+_|, a tinklo srauto fiksavimas įrankis. Bandymo mašinose, apie kurias buvo tiriamas šis straipsnis, |_+_| jau buvo įdiegta Ubuntu Linux ir Fedora Linux. Jis turėjo būti įdiegtas „Manjaro Linux“ ir „Arch Linux“ su šia komanda:

ping

Galime paleisti |_+_| 10 sekundžių su numatytosiomis parinktimis ir nukreipkite išvestį į failą, pavadintą capture.txt, naudodami šią komandą:

timeout

Skelbimas

(|_+_| turi savo parinktis įrašyti užfiksuotą tinklo srautą į failą. Tai greitas įsilaužimas, nes mes kalbame apie |_+_|, o ne apie |_+_|.)

|_+_| pradeda fiksuoti tinklo srautą ir laukiame 10 sekundžių. Ir 10 sekundžių ateina ir praeina ir |_+_| vis dar veikia, o Capture.txt vis didėja. Norint sustabdyti |_+_|, reikės skubiai paspausti Ctrl+C.

Capture.txt failo dydis tikrinamas naudojant |_+_| rodo, kad per kelias sekundes jis išaugo iki 209 tūkst. Tas failas sparčiai augo!

ping

Kas nutiko? Kodėl ne |_+_| sustoti |_+_|?

Viskas susiję su signalais.

Tinkamo signalo siuntimas

Kai |_+_| nori sustabdyti programą, kurią siunčia SIGTERM signalas . Tai mandagiai prašo programą nutraukti. Kai kurios programos gali nepaisyti SIGTERM signalo. Kai tai atsitiks, turime pasakyti |_+_| būti šiek tiek stipresnis.

Tai galime padaryti paklausę |_+_| vietoj to siųsti SIGKILL signalą.

SIGKILL signalo negalima sugauti, užblokuoti ar ignoruoti – jis visada perduodamas. SIGKILL mandagiai neprašo programos sustabdyti. SIGKILL slepiasi už kampo su chronometru ir cosh.

Skelbimas

Galime naudoti |_+_| (signalo) parinktis pasakyti |_+_| siųsti SIGKILL signalą.

timeout

Šį kartą, kai tik praeina 10 sekundžių, |_+_| yra sustabdytas.

Pirmiausia mandagiai paklausk

Galime paklausti |_+_| bandyti sustabdyti programą naudojant SIGTERM ir siųsti SIGKILL tik tuo atveju, jei SIGTERM neveikia.

Norėdami tai padaryti, naudojame |_+_| (nužudyti po) parinktis. |_+_| parinktis reikalauja laiko reikšmės kaip parametro.

Šioje komandoje mes klausiame |_+_| leisti |_+_| paleiskite 30 sekundžių, o tada nutraukite jį SIGTERM signalu. Jei |_+_| vis dar veikia po 40 sekundžių, tai reiškia, kad diplomatinis SIGTERM buvo ignoruojamas ir |_+_| turėtų atsiųsti SIGKILL, kad užbaigtų darbą.

|_+_| yra įrankis, kuris gali stebėti branduolio žiedo buferio pranešimus ir parodyti juos terminalo lange.

ping

Skelbimas

|_+_| veikia 30 sekundžių ir sustoja, kai gauna SIGTERM signalą.

Žinome, kad sustojo ne SIGKILL |_+_| nes SIGKILL terminalo lange visada palieka vieno žodžio nekrologą: Killed. Šiuo atveju taip neatsitiko.

Programos išėjimo kodo gavimas

Gerai veikiančios programos, pasibaigusios, perduoda vertę atgal į apvalkalą. Tai žinoma kaip išėjimo kodas. Paprastai tai naudojama norint pasakyti apvalkalui arba bet kokiam procesui, paleidusiam programą, ar programai vykdant kilo problemų.

|_+_| pateikia savo išėjimo kodą, bet mums tai gali nerūpėti. Tikriausiai mus labiau domina išėjimo iš proceso kodas, kuris |_+_| yra kontroliuojantis.

Ši komanda leidžia |_+_| paleisti penkias sekundes. Tai bando kompiuterį, pavadintą Nostromo, kuris yra bandomajame tinkle, kuris buvo naudojamas tiriant šį straipsnį.

timeout

Komanda veikia penkias sekundes ir |_+_| jį nutraukia. Tada galime patikrinti išėjimo kodą naudodami šią komandą:

ping

Skelbimas

Išėjimo kodas yra 124. Tai reikšmė |_+_| naudoja, kad nurodytų, kad programa buvo nutraukta naudojant SIGTERM. Jei SIGKILL nutraukia programą, išėjimo kodas yra 137.

Jei pertraukiame programą paspausdami Ctrl+C, išėjimo kodas iš |_+_| yra nulis.

ping timeout

Jei programos vykdymas baigiasi prieš |_+_| jį nutraukia, |_+_| gali perduoti išėjimo kodą iš programos atgal į apvalkalą.

Kad tai įvyktų, programa turi sustoti savaime (kitaip tariant, ji yra ne nutraukė |_+_|), ir mes turime naudoti |_+_| variantas.

Jei naudosime |_+_| (skaičiuoti) parinktis, kurios reikšmė yra penki |_+_| atleis tik penkis prašymus. Jei duosime |_+_| vienos minutės trukmė, |_+_| tikrai bus nutrauktas savaime. Tada galime patikrinti išėjimo reikšmę naudodami |_+_|.

ping timeout

|_+_| užbaigia penkias ping užklausas ir nutraukia. Išėjimo kodas yra nulis.

Skelbimas

Norėdami patikrinti, ar išėjimo kodas yra iš |_+_|, priverskime |_+_| Norėdami sugeneruoti kitą išėjimo kodą. Jei bandome siųsti ping užklausas neegzistuojančiu IP adresu, |_+_| nepavyks su klaidos išėjimo kodu. Tada galime naudoti |_+_| patikrinti, ar išėjimo kodas nėra nulis.

ping timeout

|_+_| komanda akivaizdžiai negali pasiekti neegzistuojančio įrenginio, todėl praneša apie klaidą ir užsidaro. Išėjimo kodas yra du. Tai yra išėjimo kodas |_+_| naudoja bendroms klaidoms.

Pagrindinių taisyklių nustatymas

|_+_| kalba apie tam tikrų ribų nustatymą vykdomoms programoms. Jei kyla pavojus, kad žurnalo failai gali perkrauti standųjį diską arba galite pamiršti, kad palikote veikti tinklo įrankį, suvyniokite juos į |_+_| ir leiskite kompiuteriui savarankiškai reguliuotis.

Linux komandos
Failai deguto · pv · katė · tac · chmod · sukibimas · skirt · sed · Su · vyras · pastūmėtas · popd · fsck · testinis diskas · sek · fd · pandoc · CD · $PATH · awk · prisijungti · jq · sulankstyti · unikalus · Journalctl · uodega · valstybė · ls · fstab · išmetė · mažiau · chgrp · chown · rev · žiūrėk · stygos · tipo · pervadinti · užtrauktukas · išpakuokite · kalnas · umount · diegti · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mes · nano · mkdir · · ln · pleistras · Paversti · rclone · susmulkinti · SRM
Procesai slapyvardis · ekranas · viršuje · malonu · renicija · progresas · trasa · sistema · tmux · chsh · istorija · adresu · partija · Laisvas · kurios · dmesg · usermod · ps · chroot · xargs · tty · rausvas · lsof · vmstat · laikas baigėsi · siena · taip · nužudyti · miegoti · sudo · jo · laikas · sugrupuoti · usermod · grupėse · lshw · išjungti · paleisti iš naujo · sustabdyti · išjungti · passwd · lscpu · crontab · data · bg · fg
Tinklo kūrimas netstat · ping · traceroute · ip · ss · Kas yra · fail2ban · bmon · tu · pirštu · nmap · ftp · garbanoti · wget · PSO · kas aš esu · Į · iptables · ssh-keygen · ufw

SUSIJĘS: Geriausi Linux nešiojamieji kompiuteriai kūrėjams ir entuziastams

SKAITYTI KITAS Dave Dave'as McKay'us
Dave'as McKay'us pirmą kartą naudojo kompiuterius, kai buvo madinga perforuoto popieriaus juosta, ir nuo tada jis programuoja. Daugiau nei 30 metų IT pramonėje jis dabar yra visą darbo dieną dirbantis technologijų žurnalistas. Per savo karjerą jis dirbo laisvai samdomu programuotoju, tarptautinės programinės įrangos kūrimo komandos vadovu, IT paslaugų projektų vadovu, o pastaruoju metu – duomenų apsaugos pareigūnu. Jo raštą paskelbė howtogeek.com, cloudsavvyit.com, itenterpriser.com ir opensource.com. Dave'as yra Linux evangelistas ir atvirojo kodo advokatas.
Skaityti visą biografiją

Įdomios Straipsniai