Articles

Bash Sleep parancs: gyors útmutató a szkriptek használatához

általában azt akarjuk, hogy a szkript gyorsan futjon, de ez nem mindig így van. Néha van értelme, hogy a Bash szkriptünk az alvó parancsot használja a következő parancs végrehajtása előtt. Derítsük ki, mikor …

mi a Bash sleep parancs?

a Bash sleep parancs egy adott ideig késlelteti a parancs végrehajtását. Az alvási idő másodpercben fejeződik ki. Az alvó parancs használata gyakori, amikor egy feladatot x másodpercenként ütemez, vagy amikor egy szkript egy másik szkriptre támaszkodik a végrehajtás befejezéséhez.,

nézzük meg a három forgatókönyvet, amelyben az alvó parancsot használná:

  1. a parancs azonnali futtatása helyett a végrehajtást X másodpercre szeretné ütemezni a jövőben.
  2. EGY program hosszú időt vesz igénybe egy fájlkészlet feldolgozásához, majd amikor a feldolgozás befejeződött, létrehoz egy fájlt, amely ezt jelzi. Írhat egy szkriptet, amely ellenőrzi, hogy a fájl létezik-e és alszik-e egy bizonyos ideig, ha nem. ellenkező esetben végrehajtja a folyamat következő lépését az első program által generált fájlok alapján.,
  3. programozottan hív egy harmadik fél API-t, és tudja, hogy az API nem tesz lehetővé több mint 60 kérést percenként. Sleeping X másodperc lehetővé teszi, hogy megbizonyosodjon arról, hogy nem megy át a kérelmek száma percenként által engedélyezett API szolgáltató.

kezdjük!,

A bash Sleep parancs alapvető szintaxisa

az sleep parancs alapvető szintaxisa a Bash-ban nagyon egyszerű:

sleep <SECONDS>

itt történik, ha a parancssorban futtatja:

$ sleep 5$ 

ebben az esetben az sleep 5 parancs végrehajtása után a Linux 5 másodperc után visszaadja a héjat.

és most lépjünk át három gyakorlati példára, hogy hogyan kell neked a Bash sleep parancsot.,

1. forgatókönyv: Sleep parancs, amely késlelteti egy másik parancs végrehajtását egy bash szkriptben

írok egy egyszerű bash shell szkriptet, hogy megmutassam az sleep parancs pontos viselkedését …

… figyelembe véve, hogy az előző példa nem tudta igazán megmutatni, hogy az sleep parancs 5 másodperc után visszaküldte a héjat.

írjunk egy szkriptet, amely elvégzi azt, amit az 1. forgatókönyvben kifejtettem, késlelteti a parancs végrehajtását X másodperccel (ebben az esetben 5 másodperc).

Ez majdnem olyan, mint egy parancs végrehajtása egy adott időpontban, a job schedulers ugyanazon elve alapján.,

tehát hozzon létre egy nagyon egyszerű bash shell szkriptet, melynek neve delay_cmd.sh:

#!/bin/bash datesleep 5dateuptime 

a dátum parancs az aktuális dátum nyomtatására szolgál az alvó parancs előtt és után, így láthatja, hogy a szkript 5 másodpercre van felfüggesztve.

5 másodperc elteltével az uptime parancs végrehajtásra kerül.

van értelme?

elméletben ugyanazt a szkriptet írhatjuk egyetlen sorba:

#!/bin/bash date; sleep 5; date; uptime 

Ez azért van, mert a pontosvesszőt Linuxban használják különböző parancsok elválasztására és egymás után történő végrehajtására.,

más szóval, a Linux gondoskodik arról, hogy minden parancs befejeződjön, mielőtt végrehajtja a következőt.

2. forgatókönyv: Bash szkript, amely az alvó parancsot használja, hogy várjon egy másik szkriptet a

befejezéséhez ebben a példában két szkriptet fogok létrehozni:

  1. program_1.sh: 30 másodpercig alszik, majd létrehoz egy stage1 nevű fájlt.teljes. Ez alapvetően szimulál egy programot, amely hosszú időt vesz igénybe egy adott feladat elvégzéséhez, és megerősíti a végrehajtás befejezését a stage1 létrehozásával.teljes fájl.
  2. program_2.sh: egy while ciklust használ, és minden iterációban ellenőrzi, hogy a stage1.,teljes fájl létezik. Ha nem alszik 6 másodpercig,ha a fájl létezik, kiírja a “fájl stage1.teljes létezik. 1. szakasz teljes, 2. Kezdő szakasz…”.

itt van program_1.sh:

#!/bin/bash sleep 30touch stage1.complete 

a touch parancsot az első program használja a stage1 létrehozásához.töltse ki a fájlt a szkript végrehajtásától számított 30 másodperc után.

és program_2.sh a következő, mi lesz a Bash, ha mást nyilatkozatot annak végrehajtására:

a második Bash shell script van egy végtelen hurok., Minden iterációban a szkript:

  • ellenőrzi, hogy a fájl stage1.Teljes van jelen.
  • Ha a fájl nem létezik, akkor 6 másodpercig alszik
  • ha a fájl létezik, eltávolítja a stage1-et.töltse ki a fájlt, majd állítsa le a végrehajtást a Bash exit paranccsal.,

a két szkript végrehajtása előtt ellenőrizze, hogy mindkettő végrehajtható-e a chmod +x paranccsal:

chmod +x program_*.sh

tehát futtassuk a szkripteket…

program_1.sh először futtatjuk a háttérben, hogy futtathassuk a program_2.sh közvetlenül ezt követően ugyanabban a terminálon:

ahogy az várható volt, a második szkript 6 másodpercig alszik, amíg meg nem találja a fájl Stage1.töltse ki a fájlt, majd leállítja a végrehajtást.,

3. forgatókönyv: Sleep parancs egy harmadik fél API-jának hívásainak számának vezérléséhez

ha API-t szeretne hívni egy bash szkript segítségével, használhatja a curl parancsot.

a curl használata az API hívásához egyszerű, vegyük például a következő API végpontot:

https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22 

írunk egy bash szkriptet, amely a curl-t használja a GET kérés ellen, és az sleep paranccsal korlátozza az API hívások számát egy bizonyos idő alatt.

Ez azért van így, hogy elkerüljük az API-szolgáltató által előírt esetleges határértékek túllépését.,

Ez a szkript, amit írtam:

néhány dolog erről a szkriptről:

  • a számláló változó a végrehajtandó API-hívások számának kiszámítására szolgál, mielőtt kilépne a while hurokból.
  • a cURL az API végpontjával szembeni kérések lekérésére szolgál.
  • a while hurok minden iterációjánál 10 másodpercig felfüggesztjük a szkriptet az sleep paranccsal, hogy az API-hívások számát 10 másodpercenként korlátozzuk.
  • a számláló változót a $ ((()) számtani operátor segítségével növeljük.,

tehát hajtsa végre a szkriptet:

a várt módon két API-hívás kerül végrehajtásra, majd a while hurok végrehajtása leáll, mert a változó számláló értéke 3.

következtetés

megmutattam neked az alvás parancs különböző módjait egy Bash szkriptben.

a folyamat során sok különböző dolgot fedtem le:

  • szkriptek futtatása a háttérben.
  • az aritmetikai operátor használatával.
  • végtelen hurkok közben.
  • számláló változók.
  • API hívása a curl használatával.
  • fájlok létrehozása és eltávolítása.,
  • a Bash szkriptek futtatható engedélyeinek beállítása.
  • a pontosvessző használatával parancsokat futtathat egymás után.

remélem, hogy minden értelme!

és te? Máskülönben hogyan használnád a sleep parancsot Bash-ben? Related

kapcsolódó ingyenes tanfolyam: megfejteni Bash Scripting