Příkaz at v Linuxu lze použít k plánování úloh, které se nespouštějí podle pravidelného plánu.
At lze srovnat s konceptem Crontab v Linuxu, což je lepší způsob automatizace opakujících se úloh.
V tomto tutoriálu ukážu, jak můžete použít příkaz „at command“ k naplánování spuštěných úloh a příkazů na určitou dobu v budoucnu.
Instalace at command v Linuxu
Než začnete, měli byste zkontrolovat, zda je ve vašem systému nainstalován „at“. Ve výchozím nastavení není nainstalován na všech operačních systémech.
Můžete to zkontrolovat zadáním:
at -V
Pokud je software již nainstalován, vrátí se číslo verze. Pokud ne, můžete jej nainstalovat na systémy založené na Debianu zadáním:
sudo apt install at
Pokud používáte jinou distribuci Linuxu, možná budete muset tento příkaz upravit tak, aby odrážel správce balíčků používaného vaší distribucí.
Začínáme
Nástroj „at utility“ je ve skutečnosti řada příkazů, které spolupracují při plánování úloh. Jak jsem již zmínil, zavináč je upřednostňován pro situace, kdy je váš úkol spíše „jednorázový“ než opakující se událost.
Vytvořil jsem tabulku s některými základními příkazy spojenými s at .
Příkaz | Funkce |
---|---|
at | umožňuje uživateli naplánovat úlohu |
atq | uvádí seznam úloh ve frontě pro přihlášeného uživatele nebo všechny uživatele, pokud jsou spuštěny jako sudo |
atrm | odstraní úlohy podle zadaného čísla úlohy |
dávka | instruuje systém, aby spustil úlohu pouze v určený čas, pokud je zatížení systému na určité úrovni (průměr zatížení <1,5) |
Všechny klávesové zkratky | [ ctrl + a ] + ? |
Použití příkazu at v Linuxu pro plánování úloh
Pomocí at má svůj jedinečný formát. Když chcete naplánovat úlohu, napíšete do terminálu:
at [time] [date/day]
Čas je povinný, ale datum je nepovinné. Pokud nic nezadáte, provede se předpoklad na základě aktuálního data a systémového času.
Když stisknete enter, budete vyzváni k zadání příkazů. Můžete jich zadat kolik chcete. Pro uložení a ukončení zadejte „ctrl + d“.
Dovolte mi, abych vám to ukázal na příkladech.
Příklad 1:Zadejte čas/datum pomocí přirozeného jazyka
Máte mnoho různých možností pro zadání času. Na rozdíl od crontabu s poněkud komplikovaným systémem založeným na hvězdičkách, „at“ rozpoznává „lidský“ vstup efektivněji.
Existuje mnoho výrazů podobných lidem, kterým může software porozumět. Mnoho z nich je specifických pro místní prostředí. Dokáže rozpoznat běžné výrazy jako „půlnoc“ nebo „poledne“. Může také rozlišovat mezi AM a PM. Stejně tak dokáže rozpoznat různé formáty dnů a dat, včetně zkratek.
Může také použít výraz „nyní“. Můžete jednoduše zadat příkaz jako níže a příkaz spustí za 5 minut.
at now + 1 minutes
[email protected]:~$ at now + 1 min
warning: commands will be executed using /bin/sh
at> echo "Look at you, using at like a champ!" > message.txt
at> <EOT>
job 8 at Mon Jan 6 02:59:00 2020
Varování o bin/sh můžete s největší pravděpodobností ignorovat . Pokud používáte jinou skořápku, může to způsobit bolest hlavy. Naprostá většina linuxových distribucí přichází s bash, protože systémový shell symbolizuje „sh“… Je to dlouhý příběh.
Takže je to asi minuta, že? Zkontrolujte, zda adresář neobsahuje nový soubor.
Měli byste mít soubor s názvem ‚message.txt‘ obsahující náš text.
[email protected]:~$ ls m*
message.txt
Vypadá to dobře, ale zachytilo to naše sdělení správně? Podívejme se na obsah souboru:
[email protected]:~$ cat message.txt
Look at you, using at like a champ!
Příklad 2:Použití zadaného času/data
Pro svou první práci jste použili „relativní“ čas „nyní + [čas]“. Je to skvělý a snadný způsob, jak naplánovat práci, ale možná budete chtít být konkrétnější.
Tentokrát si naplánujme 2 úlohy na různé časy.
Pro ukázku můžete použít soubor message.txt (vytvořený v předchozím příkladu). Každá úloha nahradí obsah souboru.
Aktuální čas na vašem systému Linux můžete zkontrolovat pomocí příkazu date.
Nastavte první úlohu na určitou dobu (za 5 minut):
[email protected]:~$ at 3:45
warning: commands will be executed using /bin/sh
at> echo "5 minutes later..." > message.txt
at> <EOT>
job 11 at Mon Jan 6 03:45:00 2020
Nastavte druhou úlohu na určitou dobu (za 10 minut):
[email protected]:~$ at 3:50
warning: commands will be executed using /bin/sh
at> echo "10 minutes later..." > message.txt
at> <EOT>
job 12 at Mon Jan 6 03:50:00 2020
Ověřte ve 3:45:
[email protected]:~$ cat message.txt
5 minutes later...
Ověřte ve 3:50:
[email protected]:~$ cat message.txt
10 minutes later...
Příklad 3:Zobrazení všech úloh ve frontě pomocí atq
Naplánované úlohy můžete kdykoli zkontrolovat pomocí příkazu atq. Zobrazí seznam všech aktuálně naplánovaných úloh pro přihlášeného uživatele. Chcete-li zobrazit všechny úlohy v systému, možná budete muset použít zvýšená oprávnění.
[email protected]:~$ atq
11 Mon Jan 6 03:45:00 2020 a christopher
12 Mon Jan 6 03:50:00 2020 a christopher
Každá úloha je identifikována ID úlohy, jejím naplánovaným časem a přidruženým uživatelem.
Obsah naplánované úlohy můžete také zobrazit pomocí volby -c:
at -c jobnumber
Příklad 4:Odebrání naplánované úlohy pomocí atrm
Pokud se rozhodnete zrušit úlohu před jejím provedením, lze to provést zadáním příkazu následovaného jeho odpovídajícím ID úlohy (které můžete získat příkazem atq).
[email protected]:~$ atrm 11
[email protected]:~$ atq
12 Mon Jan 6 03:50:00 2020 a christopher
Jak můžete vidět, úloha 11 byla odstraněna z fronty.
Příklad 5:Použití souboru pro příkaz at
Možná máte sadu skriptů, které chcete spouštět nepravidelně, a cron se nehodí. Můžete zadat více úloh bez použití standardního vstupu.
Představme si scénář, kdy HR požaduje dokumentaci k počítačové činnosti zaměstnance, o kterém se domnívá, že porušuje pracovní politiku. Možná budete chtít, aby pro vás určité protokoly aktivit nebo jiné informace o historii vygenerovaly zprávu v určených časech.
Můžete si ušetřit čas uvedením potřebných skriptů do textového souboru a jejich spouštěním pomocí at.
[email protected]:~$ cat problem_employee_logs.txt
path/to/get_browsing_history.sh
/whatever/path/get_activity_logs.sh
Dostanete nápad. Nyní tedy můžete k příkazu ‚at‘ přidat -f a zahrnout název souboru za takto:
[email protected]:~$ at now + 2 minutes -f problem_employee_logs.txt
warning: commands will be executed using /bin/sh
job 16 at Mon Jan 6 05:42:00 2020
Příklad 6:Spuštění úlohy, když zatížení CPU klesne pod prahovou hodnotu
Dávkové úlohy budou spuštěny, když průměrná zátěž CPU klesne ve výchozím nastavení pod 1,5.
batch
Metoda zadávání dávkových úloh je identická s metodou „at ‘, kromě toho, že nepotřebuje specifikovat čas.
Pokud chcete změnit práh zatížení, můžete tak učinit pomocí následujícího příkazu:
atd -l [n]
Kde n je práh zatížení, který chcete vybrat. Manuálová stránka doporučuje, abyste ji změnili na vyšší než n-1, kde n je počet CPU ve vašem systému.
Závěr
Děkuji za přečtení. Doufám, že se vaše porozumění příkazu at zlepšilo. Pokud máte nějaké dotazy nebo se chcete podělit o to, jak tento příkaz používáte, řekněte nám! Zanechte komentář níže.