GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz na určitou dobu v Linuxu

Onehdy jsem přenášel velký soubor pomocí rsync do jiného systému v mé místní síti. Vzhledem k tomu, že je to velmi velký soubor, jeho dokončení trvalo asi 20 minut. Nechci tak dlouho čekat a také nechci ručně ukončit proces stisknutím CTRL+C. Jen mě zajímalo, jestli by mohly existovat nějaké snadné způsoby, jak spustit příkaz po určitou dobu a automaticky jej zabít, jakmile vyprší čas v operačních systémech podobných Unixu - proto tento příspěvek. Čtěte dál.

Spusťte příkaz po určitou dobu v Linuxu

Můžeme to udělat dvěma způsoby.

Metoda 1 – Použití příkazu „timeout“

Nejběžnější metodou je použití časového limitu příkaz pro tento účel. Pro ty, kteří nevědí, příkaz timeout účinně omezí absolutní dobu provádění procesu. Příkaz timeout je součástí balíku GNU coreutils, takže je předinstalován ve všech systémech GNU/Linux.

Řekněme, že chcete spustit příkaz pouze po určitou dobu a poté jej automaticky ukončit, jakmile tento čas uplyne. K tomu používáme:

$ timeout <time-limit-interval> <command>

Například následující příkaz bude ukončen po 10 sekundách.

$ timeout 10s tail -f /var/log/pacman.log

Také nemusíte zadávat příponu "s" pro sekundy. Následující příkaz je stejný jako výše.

$ timeout 10 tail -f /var/log/pacman.log

Další dostupné přípony jsou:

  • 'm' pro minuty,
  • „h“ po dobu hodin
  • d' po dobu dní.

Pokud spustíte tento tail -f /var/log/pacman.log bude spuštěn, dokud jej ručně neukončíte stisknutím CTRL+C. Pokud jej však spustíte spolu s časovým limitem příkaz bude po uplynutí daného časového intervalu automaticky ukončen.

Pro případ, že příkaz stále běží i po vypršení časového limitu, můžete poslat zabití signál jako níže.

$ timeout -k 20 10 tail -f /var/log/pacman.log

V tomto případě, pokud příkaz tail stále běží po 10 sekundách, příkaz timeout mu po 20 sekundách pošle signál zabití a ukončí jej.

Příkaz Tmeout může být zvláště užitečný při řešení problémů s hardwarem. Například spuštěním následujícího příkazu zobrazíte všechny zprávy z kruhové vyrovnávací paměti jádra, ale pouze na 10 sekund.

$ timeout 10 dmesg -w

Další podrobnosti najdete na manuálových stránkách.

$ man timeout

Někdy může dokončení konkrétního programu trvat dlouho a nakonec zamrzne váš systém. V takových případech můžete tento trik použít k automatickému ukončení procesu po určité době.

Zvažte také použití Cpulimit , jednoduchá aplikace pro omezení využití procesoru procesem. Další podrobnosti naleznete na následujícím odkazu.

  • Jak omezit využití CPU procesu v Linuxu

Metoda 2 – Použití programu „Časový limit“

Obslužný program Timelimit provede daný příkaz s dodanými argumenty a ukončí vytvořený proces po určité době daným signálem. Nejprve projde varováním signál a po uplynutí časového limitu odešle zabití signál.

Na rozdíl od utility timeout má Timelimit více možností. Můžete předat řadu argumentů, jako killsig, warningsig, killtime, warningtime atd.

Je k dispozici ve výchozích repozitářích systémů založených na Debianu. Můžete jej tedy nainstalovat pomocí příkazu:

$ sudo apt-get install timelimit

Pro systémy založené na Arch je k dispozici v AUR. Můžete jej tedy nainstalovat pomocí jakéhokoli pomocného programu AUR, jako je Pacaur , Balík , Ano , Yaourt atd.

Pro ostatní distribuce si stáhněte zdroj zde a ručně jej nainstalovat.

Po instalaci programu Timelimit spusťte následující příkaz po určitou dobu, například 10 sekund:

$ timelimit -t10 tail -f /var/log/pacman.log

Pokud spustíte časový limit bez jakýchkoli argumentů, použije výchozí hodnoty:warntime=3600 sekund , warnsig=15 , killtime=120 , killsig=9 .

Další podrobnosti naleznete v manuálových stránkách a na webových stránkách projektu uvedených na konci této příručky.

$ man timelimit

A to je pro dnešek vše. Doufám, že to bylo užitečné. Přijdou další dobré věci. Zůstaňte naladěni!

Na zdraví!


Linux
  1. Linux time Command Tutorial pro začátečníky (s příklady)

  2. DSH – Spusťte příkaz Linux na více hostitelích současně

  3. Jak spustit aplikaci po nastavenou dobu v prostředí Shell?

  1. Jak používat Linux Touch Command + příklady

  2. Jak používat Su Command v Linuxu

  3. Jak naplánovat spuštění tcpdump na konkrétní časové období?

  1. Jak zakázat konkrétní příkaz pro konkrétního uživatele v Linuxu

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

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