Crontab

**cron** ir uzdevumu plānotājs UNIX veidīgajās operētājsistēmās, ko izmanto, lai periodiski veiktu uzdevumu izpildi noteiktā laikā. Regulārās darbības ir aprakstītas instrukcijās, kuras ir ievietotas crontab failā, kurš atrodas katalogā:

 /usr/spool/cron/crontabs

vai

 /var/spool/cron/crontabs

Labot šo failu manuāli nav ieteicams, šim nolūkam izmanto komandu crontab -e.

Galvenais konfigurācijas fails cron, /etc/crontab, izskatās šādi:

 # /etc/crontab: system-wide crontab
 # Unlike any other crontab you don't have to run the `crontab'
 # command to install the new version when you edit this file
 # and files in /etc/cron.d. These files also have username fields,
 # that none of the other crontabs do.
 
 SHELL=/bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
 # m h dom mon dow user        command
  17 *  *   *   *  root   cd / && run-parts --report /etc/cron.hourly
  25 6  *   *   *  root   test -x /usr/sbin/anacron || ( cd / && run-parts  --report /etc/cron.daily )
  47 6  *   *   7  root   test -x /usr/sbin/anacron || ( cd / && run-parts  --report /etc/cron.weekly )
  52 6  1   *   *  root   test -x /usr/sbin/anacron || ( cd / && run-parts  --report /etc/cron.monthly )
 #
## crontab
Katram failu sistēmas lietotājam ir savs crontab uzdevumu fails, kurā aprakstīts, kad un kādas programmas palaist šī lietotāja vārdā. Lai rediģētu crontab failu tiek izmantota programma ar tādu pašu nosaukumu (crontab), kas ļauj nepārtraukt cron procesu rediģēšanas laikā.

Lai rediģētu sava lietotājvārda crontab failu tiek izmantota komanda:

 crontab -e

crontab tabula sastāv no 6 kolonnām, kuras atdalītas ar atstarpēm vai tabulāciju. Pirmās piecas kolonnas nosaka izpildīšanas laiku (minūtes, stundas, diena, mēnesis, nedēļas diena), tajās var atrasties datums, datumu saraksts (kas atdalīti ar komatu), vai datumu intervāls (kas atdalīts ar „-” vai "*" simbolu). Visas pārējās rakstzīmes virknē, tiek interpretētas kā komandas un to parametri. Ja komanda sūta kādu tekstu uz standarta izeju, tad šis teksts tiek nosūtīts lietotājam pa e-pastu.

 * * * * * Izpildāmā komanda
 - - - - -
 | | | | |
 | | | | ----- Nedēļas diena (0 - 7) (Svētdiena =0 vai =7)
 | | | ------- Mēnesis (1 - 12)
 | | --------- Diena (1 - 31)
 | ----------- Stunda (0 - 23)
 ------------- Minūte (0 – 59
crontab faila piemērs:
 # kā parasti ar '#' sākas komentāri
 # Kā komandu interpretētājs tiek izmantots /bin/sh
 SHELL=/bin/sh
 # Darbības rezultātus sūtīt uz šādu adresi
 MAILTO=paul@example.org
 # Pievienot PATH
 PATH=$PATH:$HOME/bin
 #### Šeit sākas uzdevums
 # Izpildīt katru dienu 0 stundās 5 minūtēs, rezultātu saglabāt failā log/daily
 5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
 # Izpildīt katra mēneša 1 datumā plkst. 14:15
 15 14 1 * * $HOME/bin/monthly
 # Katru darba dienu plkst 22:00
 0 22 * * 1-5 echo "Laiks iet majas" | mail -s "Plkst. jau 22:00" john
 23 */2 * * * echo "Tiek izpildīts plkst.: 0:23, 2:23, 4:23 utt."
 5 4 * * sun echo " Tiek izpildīts Svētdienās plkst. 4:05"
 0 0 1 1 * echo "Laimīgu jauno gadu!"
 15 10,13 * * 1,4 echo "Šis uzraksts tiek izvadīts Pirmdienās un ceturtdienās plkst. 10:15 un 13:15"
 0-59 * * * * echo "Tiek izpildīts ik pēc minūtes"
 1-59/2 * * * * echo "Tiek izpildīts nepāra minūtēs"
 # Katras 5 minūtes
 */5 * * * * echo "Pagājušas piecas minūtes"

### crontab piemērs Ubuntu 9.10 operētājsistēmai
 sudo crontab -e -u user
kur user – lietotājs kura vārdā tiks veiktas darbības.
 # m h  dom mon dow   command
 # Plkst. 1:10 naktī tiek palaists eMule
 10 1  * * *  export DISPLAY=:0 && amule
 # Plkst 10:10 no rīta tiek apturēts Emule
 10 10 * * *  export DISPLAY=:0 && killall amule
Ar # sākas komentāri.
export DISPLAY=:0 && - izvade ekrānā (Ja ir dati, kurus izvadīt). 
Bieži vien ar to nav pietiekami, lai palaistu grafikos pielikumus, lai lokāli varētu pieslēgties pie X servera ir nepieciešams pievienot:
 xhost +local: 
failā .profile, kurš atrodas lietotāja mājas direktorijā.

Jāpiebilst, ka, lai uzdevumi tiktu veiksmīgi izpildīti nepieciešams, faila beigās pievienot tukšu rindiņu, kas izveido crontab pēc noklusējuma.

## Grafiskā saskarne
Lietotāju ērtībām, daudzās operētājsistēmās ir īpašas GUI programmas cron pārvaldībai.

### Gnome Schedule
Priekš Debian bāzētām sistēmām:

* Uzstādīšana: sudo apt-get install gnome-schedule;
* Palaišana: Applications → System tools → Schedule.

### Kcron
Kcron ir KDE lietotāja saskarne, kas paredzēta cron faila konfigurācijai. Lietojums tiek palaists ar Alt + F2 kombināciju, rediģēšanas logā var darboties ar peles kursoru:

* Pilnu ceļu uz izpildāmo programmas failu;
* Nepieciešamais programmas palaišanas laiks;
* Vides mainīgie, nepieciešami programmas izpildes laikā.

## Līdzīgas programmas
* Nncron — moderns plānotājs Windows sistēmām;
* At — rīks, kurš palaiž programmu noteiktajā laikā, vienu reizi;
* Anacron — periodiska programmas palaišana, ne vienmēr precīzi noteiktā laikā: piemēram, ja iestatītajā laikā dators ir bijis izslēgts anacron šo darbību veiks vēlāk;
* Inetd — palaiž programmas tīkla pieprasījumu izpildei;
* Upstart — palaiž programmas notikumu apkalpošanai (cron, ATD, anacron, inetd vispārinājums).

## Ārējās saites
* ''crontab.guru''