GNU/Linux >> Znalost Linux >  >> Linux

Naplánujte si úlohy v Linuxu pomocí příkazu 'at'

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.


Linux
  1. Naplánujte si úlohu pomocí příkazu Linux at

  2. Linux Tee Command s příklady

  3. Jak naplánovat úlohy pomocí příkazu „at“ v systému Linux

  1. JQ Command v Linuxu s příklady

  2. Jak naplánovat úlohy pomocí at v Linuxu

  3. Vypište soubor pomocí příkazu ls v Linuxu s úplnou cestou

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Echo Command v Linuxu (s příklady)