Příkaz spánku Linuxu je jedním z nejjednodušších příkazů. Jak už z názvu tušíte, jeho jedinou funkcí je spát. Jinými slovy, zavádí zpoždění po určitou dobu.
Pokud tedy použijete příkaz sleep s x a další příkaz lze spustit až po x sekundách.
Příkaz Sleep má jednoduchou syntaxi:
sleep Number[Suffix]
Zde by přípona mohla být:
- s sekund. Toto je výchozí.
- m minut.
- h po dobu hodin.
- d po dobu dnů.
Podívejme se na několik příkladů příkazu sleep.
Příklady příkazu Bash sleep
Ačkoli jej můžete použít přímo v shellu, příkaz sleep se běžně používá k zavedení zpoždění při provádění bash skriptu. Ukážu použití příkazu sleep prostřednictvím ukázkových bash skriptů.
Příkaz Spánek bez přípony počítá v sekundách
Předpokládejme, že chcete pozastavit bash skript na 5 sekund, můžete použít režim spánku takto:
sleep 5
V ukázkovém bash skriptu by to mohlo vypadat takto:
!/bin/bash
echo "Sleeping for 5 seconds…"
sleep 5
echo "Completed"
Pokud jej spustíte s příkazem time, uvidíte, že bash skript skutečně běžel (o něco málo) déle než 5 sekund.
time ./sleep.sh
Sleeping for 5 seconds…
Completed
real 0m5.008s
user 0m0.000s
sys 0m0.007s
Příkaz spánku s příponou minuty, hodiny nebo dne
Dobu spánku v minutách můžete zadat následujícím způsobem:
sleep 1m
Tím se skript/shell na jednu minutu pozastaví. Pokud chcete skript zpozdit o hodiny, můžete to udělat pomocí možnosti h:
sleep 2h
I když chcete bash skript na několik dní pozastavit, můžete to udělat pomocí přípony d:
sleep 5d
To by mohlo pomoci, pokud chcete běžet každý druhý den nebo den v týdnu.
Příkaz spánku s kombinací sekund, minuty, hodiny a dne
Nejste povinni používat vždy pouze jednu příponu. Můžete použít více než jednu příponu a délka spánku je součtem všech přípon.
Pokud například použijete následující příkaz:
sleep 1h 10m 5s
Díky tomu bude skript čekat 1 hodinu, 10 minut a 5 sekund. Všimněte si, že přípona s je zde stále volitelná.
Bonusový tip:Spěte méně než sekundu
Možná jste si všimli, že nejmenší časovou jednotkou v příkazu spánku je sekunda. Ale co když váš bash skript na milisekundy usne?
Dobrá věc je, že můžete použít plovoucí desetinnou čárku s příkazem sleep.
Pokud tedy chcete zavést pauzu 5 milisekund, použijte ji takto:
sleep 0.005
Můžete také použít desetinné čárky s jinými příponami.
sleep 1.5h 7.5m
Zavede zpoždění o 1 hodinu, 37 minut a 30 sekund.
Doufám, že jste při čtení těchto příkladů příkazu spánku nespali 😉
Pokud vás zajímá skriptování shellu, možná byste si rádi přečetli také o porovnávání řetězců v bash. Máte-li dotazy nebo návrhy, neváhejte se zeptat.