GNU/Linux >> Znalost Linux >  >> Linux

Kde je Cron Timer?

Existuje nějaký způsob, jak získat přístup k cron časovače a získáte zbývající sekundy do dalšího spuštění skriptů v crontab nebo možná sekundy od posledního?

Přijatá odpověď:

Ne snadno. crond čeká na signál z jádra a jde spát. Když dostane signál, zkontroluje, zda je v dané minutě potřeba provést nějaké cronjoby, spustí je a přejde zpět do režimu spánku.

Jedná se o velmi efektivní design – cron nepoužívá žádný CPU, když spí. Nemá ani povědomí o plynutí času. Když přejde do režimu spánku, nastaví „časový limit“ podle toho, jak dlouho zbývá, než se musí spustit další příkaz z jakéhokoli „registrovaného“ cronjob.

Na Solaris 10:

sol10-primary:/> # pflags  271  
271:    /usr/sbin/cron
        data model = _ILP32  flags = ORPHAN|MSACCT|MSFORK
 /1:    flags = ASLEEP  pollsys(0x8047c70,0x1,0x8047ce8,0x806ba00)

Při sledování démona cron uvidíte, že přejde do režimu spánku s časovým limitem, jak je uvedeno níže:

waitid(P_ALL, 0, 0x08047CD0, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD
time()                                          = 1361952435
pollsys(0x08047C70, 1, 0x08047CE8, 0x0806BA00) (sleeping...)
        fd=3  ev=POLLRDNORM rev=0
        timeout: 105.000000000 sec
        sigmask = 0 0 0 0

Když aktualizujete jakoukoli úlohu cronu, spící proces se také probudí, ale aktualizuje svou vlastní konfiguraci, po které se vrátí do režimu spánku s novou hodnotou časového limitu.

Je možné vidět nastavený časový limit. Všimněte si, že cron volal time syscall těsně předtím, než přešel do režimu spánku (což vrací sekundy od epoc), takže pokud jste to pozorovali (tj. sledovali proces, když volal time() syscall, budete moci odečíst tento čas od aktuálního a porovnejte jej s časovým limitem nastaveným na volání pollsys.

Takže… jak jsem řekl, není to snadné.


Linux
  1. Kde je protokol cron / crontab? / Jak povolit protokol Cron?

  2. Jak fungují vnitřnosti démona Cron?

  3. Kam jdou soubory, když je vydán příkaz Rm?

  1. Kde je obsah popisu mužských sekcí?

  2. Kde je soubor Inittab?

  3. Změňte časový limit MySQL na serveru

  1. Plánování úloh pomocí linuxového příkazu cron

  2. Crontab Log:Jak protokolovat výstup mého skriptu Cron

  3. Kde je funkce itoa v Linuxu?