GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit nebo opakovat příkaz Linuxu každých X sekund navždy

Správce systému často potřebuje spouštět příkaz opakovaně v určitých časových obdobích. Tyto úkoly lze často snadno dokončit pomocí jednoduchých příkazů cron. Ve většině případů by to mělo fungovat, ale nejkratší doba, po kterou můžete příkaz cron spustit, je každou 1 minutu. Věřte tomu nebo ne, v mnoha případech je to příliš pomalé.

V tomto tutoriálu se naučíte jednoduché skriptovací techniky pro sledování nebo sledování konkrétního příkazu v nepřetržitě spuštěném stavu podobném top příkazu (nepřetržitě sledovat proces a využití paměti) ve výchozím nastavení každé 3 sekundy.

Nebudeme se zastavovat diskutovat o důvodech, proč byste museli spouštět příkazy tak často. Věřím, že každý k tomu má jiné důvody ve své každodenní práci nebo dokonce doma u počítačů a notebooků.

1. Použijte příkaz hodinek

Sledujte je linuxový příkaz, který vám umožňuje pravidelně spouštět příkaz nebo program a také zobrazuje výstup na obrazovce. To znamená, že výstup programu uvidíte včas. Ve výchozím nastavení hodinky znovu spustí příkaz/program každé 2 sekundy. Interval lze snadno změnit, aby vyhovoval vašim požadavkům.

Sledování využití paměti

„Watch“ se používá velmi snadno. Chcete-li to otestovat, můžete okamžitě spustit linuxový terminál a zadat následující příkaz:

# watch free -m

Výše uvedený příkaz zkontroluje volnou paměť vašeho systému a každé dvě sekundy aktualizuje výsledky příkazu free.

Jak je vidět z výše uvedeného výstupu, máte záhlaví, které zobrazuje informace o (zleva doprava) intervalu aktualizace, příkazu, který se provádí, a aktuálním čase. Pokud chcete toto záhlaví skrýt, můžete použít -t možnost.

Další logickou otázkou je – jak změnit interval provádění. Pro tento účel můžete použít -n volba, která určuje interval, ve kterém bude příkaz proveden. Tento interval je zadán v sekundách. Řekněme tedy, že chcete spustit svůj script.sh soubor každých 10 sekund, můžete to udělat takto:

# watch -n 10 script.sh

Poznámka že pokud spustíte příkaz uvedený výše, budete muset cd do adresáře (naučte se 15 příkladů příkazů cd), kde je skript umístěn, nebo jinak zadejte úplnou cestu k tomuto skriptu.

Další užitečné možnosti příkazu watch jsou:

  1. -b – vytvoří pípnutí, pokud je ukončení příkazu nenulové.
  2. -c – Interpretuje barevné sekvence ANSI.
  3. -d – zvýrazní změny ve výstupu příkazu.

Monitorujte přihlášené uživatele, dobu provozuschopnosti a průměrnou zátěž

Řekněme, že chcete monitorovat přihlášené uživatele, dobu provozu serveru a průměrný výkon zatížení v nepřetržité fázi každých několik sekund, pak použijte následující příkaz:

# watch uptime

Chcete-li příkaz ukončit, stiskněte CTRL+C .

Zde je 'uptime' příkaz se spustí a ve výchozím nastavení zobrazí aktualizované výsledky každé 2 sekundy.

Sledování průběhu kopírování příkazu

V Linuxu při kopírování souborů z jednoho umístění do druhého pomocí cp příkaz, průběh dat se nezobrazuje, pro zobrazení průběhu kopírování dat můžete použít watch příkaz spolu s příkazem du -s pro kontrolu využití disku v reálném čase.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
# watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Pokud si myslíte, že výše uvedený proces je příliš komplikovaný na to, abyste dosáhli, pak vám doporučuji přejít na příkaz Advance copy, který ukazuje průběh dat při kopírování.

2. Použijte příkaz spánku

Spánek se často používá k ladění skriptů shellu, ale má také mnoho dalších užitečných účelů. Například v kombinaci s for nebo while smyčky, můžete dosáhnout skvělých výsledků.

Pokud jste ve skriptování bash nováčci, můžete se podívat na našeho průvodce bashovými smyčkami zde.

V případě, že o "sleep" slyšíte poprvé příkaz, používá se k odložení něčeho o určitou dobu. Ve skriptech jej můžete použít k tomu, abyste svému skriptu řekli, aby spustil příkaz 1, počkal 10 sekund a poté spustil příkaz 2.

Pomocí výše uvedených smyček můžete bashovi říci, aby spustil příkaz, spánek na N sekund a poté spusťte příkaz znovu.

Níže můžete vidět příklady obou smyček:

Příklad smyčky

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Výše uvedený řádek spustí příkaz echo a zobrazí aktuální datum, celkem 10krát, s 5 sekundami spánku mezi provedeními.

Zde je ukázkový výstup:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Můžete změnit echo a datum příkazy pomocí vlastních příkazů nebo skriptů a změňte interval spánku podle svých potřeb.

Příklad smyčky while

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Zde je ukázkový výstup:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Výše uvedený příkaz bude spuštěn, dokud jej uživatel neukončí nebo nepřeruší. Může se hodit, pokud potřebujete spustit příkaz běžící na pozadí a nechcete počítat s cronem .

Důležité :Při použití výše uvedených metod důrazně doporučujeme nastavit dostatečně dlouhý interval, abyste měli dostatek času na dokončení příkazu před dalším spuštěním.

Závěr

Ukázky v tomto tutoriálu jsou užitečné, ale nejsou určeny k úplnému nahrazení nástroje cron. Je na vás, abyste zjistili, která z nich vám vyhovuje lépe, ale pokud bychom měli oddělit použití obou technik, řekl bych toto:

  1. Cron použijte, když potřebujete pravidelně spouštět příkazy i po restartování systému.
  2. Použijte metody popsané v tomto kurzu pro programy/skripty, které se mají spouštět v rámci aktuální uživatelské relace.

Jako vždy, pokud máte nějaké dotazy nebo připomínky, neváhejte je odeslat v sekci komentářů níže.


Linux
  1. Opakovat příkaz Unix každých X sekund navždy?

  2. Sledujte:Opakujte Unixové příkazy nebo skripty Shell každých N sekund

  3. Jak zaznamenat každý příkaz shellu v Linuxu

  1. Jak používat Su Command v Linuxu

  2. Jak opakovat příkaz, dokud neuspěje v Linuxu

  3. Jak nastavit úlohu CRON, aby se spouštěla ​​každých 10 sekund v Linuxu?

  1. Jak spustit příkaz s časovým limitem (Timeout) v Linuxu

  2. Jak opakovaně spouštět bash skript každých N sekund?

  3. linux:jak spustit příkaz v daném adresáři