Úvod
at
command je nástroj příkazového řádku Linuxu používaný k naplánování úlohy pro pozdější spuštění. Nástroj čte příkazy ze standardního vstupu a seskupuje je do at
úloha, která se provede pouze jednou.
Alternativa pro at
je cron práce. Když však at
úlohy se provádějí pouze jednou, úlohy cron jsou opakující se události.
V tomto tutoriálu se naučíte používat at
příkaz a podívejte se na užitečné příklady plánování příkazů.
Předpoklady
- Systém se systémem Linux.
- Uživatelský účet s právy sudo.
Nainstalujte at Command
V závislosti na tom, kterou distribuci Linuxu používáte, at
příkaz nemusí být předem nainstalován.
Zkontrolujte, zda at
se instaluje zadáním názvu příkazu do terminálu:
Pokud nástroj není předinstalován, výstupní zpráva uvádí Příkaz 'at' nebyl nalezen .
Instalujte na na Ubuntu a Debian
Při instalaci at
postupujte podle níže uvedených kroků na Ubuntu nebo Debianu:
1. Aktualizujte úložiště balíčků:
sudo apt update
2. Nainstalujte at
příkaz spuštěním:
sudo apt install at
Instalujte na na CentOS a Fedora
Při instalaci at
postupujte podle níže uvedených kroků na CentOS nebo Fedoře:
1. Aktualizujte úložiště balíčků:
sudo yum -y update
2. Spuštěním následujícího příkazu nainstalujte at
:
sudo yum install at
Povolit plánovacího démona
Plánovací démon běží na pozadí a provádí naplánované úlohy včas.
Po instalaci at
spusťte následující příkaz balíček pro aktivaci atd
plánovacího démona a nastavte jej tak, aby se spouštěl při spouštění systému.
sudo systemctl enable --now atd
Linux na příkaz Syntaxe a možnosti
Syntaxe pro at
příkaz je:
at [option] runtime
Možnosti vám umožňují zobrazit nebo odstranit naplánované úlohy a přizpůsobit at
příkaz plánování úloh. Dostupné možnosti jsou:
Možnost | Popis |
---|---|
-V | Vytiskne číslo verze programu na standardní výstup. |
-q [queue] | Používá zadanou [queue] skládající se z jednoho písmene v rozsahu od a -z a A -Z . a fronta je výchozí pro at a b fronta je výchozí pro batch . Fronty s vyššími písmeny běží se zvýšenou laskavostí. Odeslání úlohy do fronty s velkým písmenem považuje úlohu za odeslanou do batch . batch pravidla zatížení průměrného se použijí, jakmile nastane čas na provedení úlohy. Určení fronty pro atq způsobí, že zobrazí pouze úlohy čekající v této frontě. |
-m | Po dokončení úlohy odešle uživateli e-mail, i když nedošlo k žádnému výstupu. Vyžaduje nakonfigurovanou e-mailovou adresu pro uživatele, který úlohu naplánoval. |
-f [file] | Přečte úlohu ze zadaného [file] spíše než ze standardního vstupu. |
-b | Alias pro batch . Plánuje úlohy a provádí je v batch fronta, když je průměrná úroveň zatížení systému nižší než 1,5. |
-l | Alias pro atq . Uvádí seznam nevyřízených úloh uživatele. Pokud je uživatel superuživatel, zobrazí seznam všech čekajících úloh uživatelů. |
-d | Alias pro atrm . Odstraní naplánované úlohy identifikované podle čísla úlohy. |
-v | Zobrazuje čas provedení úlohy před přečtením úlohy. Formát času je Thu Feb 20 14:50:00 1997 . |
-c | Catuje zadanou úlohu a zobrazuje její obsah ve standardním výstupu příkazového řádku. |
-t [time_arg] | Naplánuje úlohu na dobu určenou parametrem [time_arg] argument. Přijímaný formát času je [[CC]YY]MMDDhhmm . |
[runtime]
Časové výrazy
Naplánujte úlohu pomocí výrazů absolutního času nebo výrazů času vzhledem k času nastavení úlohy.
Dostupné výrazy absolutního času jsou:
YYMMDDhhmm[.ss]
. Zadejte zkrácený rok, měsíc, den, hodinu, minutu a volitelně sekundy.CCYYMMDDhhmm[.ss]
. Zadejte celý rok, měsíc, den, hodinu, minutu a volitelně sekundy.now
. Označuje aktuální den a čas a okamžité provedení.midnight
. Označuje 00:00 AM.noon
. Indikace 12:00.teatime
. Interpretováno jako 16:00.AM
. Označuje čas před 12:00.PM
. Označuje čas po 12:00.today
. Aktuální den.tomorrow
. Den po aktuálním dni.
Například následující příkaz naplánuje vyvolání příkazu echo na 17:00:
echo "hello" | at 5PM
Zadejte výraz relativního času přidáním znaménka plus (+
), částku a jednu z následujících:
minutes
hours
days
weeks
months
years
Použití časových výrazů jako tomorrow
nebo tuesday
, naplánuje úlohy na tyto dny v aktuálním čase. Dále zadejte čas pomocí +
postava.
Například následující příkaz naplánuje echo
vyvolání příkazu pět minut po naplánování úlohy:
echo "hello" | at now +5 minutes
Prostředí
SHELL
hodnota proměnné prostředí určuje, který shell (bash, zsh atd.) bude at
příkaz používá k provedení úlohy. Při plánování úlohy příkaz varuje uživatele, který shell během provádění použije.
Příklady Linuxu
Následující část ukazuje užitečné at
příklady příkazů.
Interaktivně naplánujte úlohu
at
umožňuje naplánovat úlohu pomocí interaktivního at
výzva. Otevřete interaktivní výzvu pomocí následující syntaxe:
at [runtime]
Interaktivní výzva vám umožňuje zadat, které příkazy se mají spustit v určený čas. Příkaz také vypíše varování, které shell příkaz použije.
Ukončete interaktivní výzvu a uložte naplánovanou úlohu stisknutím Ctrl + D . Zrušte úlohu pomocí Ctrl + C .
Například:
Ve výše uvedeném příkladu jsme naplánovali úlohu na 17:00, což otevře interaktivní výzvu. Naplánovaná úloha má provést echo
a nástroj používá standardní bash shell.
Nasměrujte úlohu na
Naplánujte si úlohu bez interaktivního at
vyžádejte pomocí potrubních příkazů na at
a určení doby běhu. Použijte echo
nebo printf pro předání příkazů do at
.
Například:
echo "command_to_run" | at [runtime]
Chcete-li naplánovat at
úloha, která odesílá echo
výstup příkazu do souboru, použijte:
echo "hello" >> example.txt | at now
Pomocí příkazu cat zkontrolujte, zda soubor existuje, abyste se ujistili, že byla úloha provedena:
cat example.txt
Zobrazit naplánovanou úlohu
-c
zobrazí obsah dříve naplánované úlohy. Tato možnost je užitečná, pokud zapomenete, jaká byla úloha, nebo chcete zkontrolovat naplánovaný čas.
Podívejte se na obsah naplánovaného at
job pomocí následující syntaxe:
at -c [job_number]
Číslo úlohy získáte spuštěním atq
nejprve příkazem k zobrazení seznamu všech čekajících úloh.
Například:
Ve výše uvedeném příkladu jsme nejprve požadovali seznam všech čekajících úloh, abychom získali čísla úloh, a poté jsme obsah úlohy 14 zobrazili ve standardním výstupu.
Seznam naplánovaných úloh
at
vám umožňuje zkontrolovat, které úlohy jsou stále ve frontě a čekají na provedení. Existují dva způsoby, jak zobrazit čekající úlohy:
- Spusťte
atq
příkaz. - Použijte
-l
možnost.
Například:
at -l
Výstup zobrazuje číslo čekající úlohy, datum, čas, rok a frontu aktuálního uživatele. Chcete-li zobrazit čekající úlohy všech uživatelů, spusťte příkaz pomocí sudo
.
sudo atq
Ve výše uvedeném příkladu spuštění atq
zobrazuje čekající úlohy pouze pro aktuálního uživatele. Spuštění atq
pomocí sudo
zobrazuje čekající úlohy pro všechny uživatele.
Odeslat e-mailové oznámení o provedení
at
nástroj ve výchozím nastavení odesílá e-mailová upozornění o dokončených úlohách. E-mailová upozornění vyžadují funkční e-mailovou adresu nakonfigurovanou pro váš uživatelský účet a systém musí být schopen odesílat e-maily.
Pokyn at
chcete-li posílat e-mailová upozornění na dokončení úlohy, i když není žádný výstup, zadejte -m
možnost.
Například:
rm example.txt | at -m tomorrow
Výše uvedený příkaz naplánuje úlohu na zítřejší aktuální čas. Po dokončení at
nástroj upozorní uživatele pomocí nakonfigurované e-mailové adresy pro uživatele bosko .
Provádět úlohy bez upozornění
Chcete-li se vyhnout přijímání e-mailových upozornění na dokončené úlohy, zadejte -M
možnost při plánování at
práce.
Například:
echo "shutdown -h now" | at -M 00:00
Ve výše uvedeném příkladu jsme naplánovali vypnutí systému na půlnoc a použili jsme -M
možnost zabránit nástroji v odesílání e-mailových upozornění.
Odstranění naplánované úlohy
Chcete-li odstranit naplánované at
úlohy, zadejte -r
nebo spusťte atrm
příkaz spolu s ID úlohy. Získejte ID úlohy spuštěním atq
nebo pomocí -l
možnost.
V následujícím příkladu jsme odstranili úlohu 12:
Omezit uživatele
at
balíček využívá dva soubory k omezení at
a batch
příkazový přístup:
/etc/at.allow
/etc/at.deny
Upravte soubory tak, aby je mohli vytvářet, odstraňovat nebo zobrazovat čekající at
pouze určitým uživatelům pracovní místa. Soubory jsou seznamem uživatelských jmen, která mají nebo nemají přístup k at
příkazy. Uživatelská jména odděluje znak nového řádku a mezery nejsou povoleny.
Důležité :Pokud /etc/at.allow
soubor existuje, pouze uživatelé v něm uvedení mohou používat at
nebo batch
a /etc/at.deny
soubor je ignorován. Pokud /etc/at.allow
soubor neexistuje, uživatelé uvedení v /etc/at.deny
nemají povoleno používat at
nebo batch
. Uživatel root může vždy spustit at
bez ohledu na soubory řízení přístupu.
Upravte /etc/at.deny
soubor s právy sudo k odepření přístupu uživatele k at
příkazy. V následujícím příkladu jsme soubor upravili pomocí editoru vi:
sudo vi /etc/at.deny
Po přidání uživatelského jména do seznamu spusťte at
pomocí uživatelského účtu s omezeným přístupem se zobrazí následující zpráva:
Provádět úlohy, když to zatížení systému dovolí
batch
příkaz (-b
možnost) naplánuje at
úloha pro provedení, když průměrné zatížení systému klesne pod 1,5. Provádění úloh při nízkém zatížení systému zabraňuje spotřebě všech systémových prostředků a zajišťuje optimální provoz systému.
Například následující úloha se spustí, jakmile zatížení systému klesne pod 1,5:
batch
echo "Hello world!" >> hello.txt