CZAS 1. Układy pomiaru czasu w komputerze PC

Podobne dokumenty
CZAS 1. Układy pomiaru czasu w komputerze PC

Układy czasowo-licznikowe w systemach 80x86

1. Timery i zdarzenia

1. Timery i zdarzenia

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Jedrzej Ułasiewicz Komputerowe systemy sterowania 1

1 Timery i zdarzenia

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Programowanie mikrokontrolerów 2.0

7. Szeregowanie procesów w systemie QNX6 Neutrino

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

ISO/ANSI C - biblioteki ISO/ANSI C. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

INDU-22. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. masownica próżniowa

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Programowanie Proceduralne

Układy czasowo-licznikowe w systemach mikroprocesorowych

Metody obsługi zdarzeń

1. Tworzenie nowego projektu.

13. Kolejki komunikatów POSIX

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

1. Kolejki komunikatów POSIX

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Funkcja (podprogram) void

Prezentacja systemu RTLinux

Podstawy programowania C. dr. Krystyna Łapin

Pliki. Informacje ogólne. Obsługa plików w języku C

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

2 Przygotował: mgr inż. Maciej Lasota

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Języki i metodyka programowania. Wprowadzenie do języka C

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Przerwania, polling, timery - wykład 9

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Funkcje zawarte w bibliotece < io.h >

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

Co nie powinno być umieszczane w plikach nagłówkowych:

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

1. Wprowadzanie danych z klawiatury funkcja scanf

INSTRUKCJA OBSŁUGI PROGRAMU DO ODCZYTU PAMIĘCI FISKALNEJ DATECS OPF

1. Kolejki komunikatów POSIX

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Funkcje zawarte w bibliotece < io.h >

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Program EDYTOR-AS-OUX

INSTRUKCJA INSTALACJI APLIKACJI SEPI W SYSTEMIE LINUX. Dokumentacja zasilania aplikacji SEPI dla systemu Linux

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Język C zajęcia nr 11. Funkcje

Język ludzki kod maszynowy

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Synchronizowanie czasu kontrolera PACSystems do urządzeń HMI

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Logiczny model komputera i działanie procesora. Część 1.

HELIOS pomoc społeczna

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Programowanie w C Wartości pseudolosowe i pomiar czasu

REGULATOR TEMPERATURY. programowalny - TVR 295. instrukcja obsługi. Thermoval Polska Warszawa ul. Bokserska 25.

Systemy Operacyjne - Operacje na plikach

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Kolejki komunikatów POSIX

7. Szeregowanie procesów w systemie QNX6 Neutrino

Graficzny terminal sieciowy ABA-X3. część druga. Podstawowa konfiguracja terminala

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Wykład 3: Implementacja programów wbudowanych

1. shell co to i co umożliwia, jakie są shell e. 2. skrypty powłoki. crone dr inż. Anna Zatwarnicka Skrypty i crone

asix4 Podręcznik użytkownika FILE2ASIX - drajwer importu danych do systemu asix Podręcznik użytkownika

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Wstęp do Programowania, laboratorium 02

Układy czasowo-licznikowe w systemach mikroprocesorowych

Parametryzacja przetworników analogowocyfrowych

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Cron. Justyna Puszczewicz Bartosz Fengler. 1 Wprowadzenie 2. 2 Nota historyczna 2

Wstęp do programowania 1

Transkrypt:

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 CZAS 1. Układy pomiaru czasu w komputerze PC W typowym komputerze PC do pomiaru czasu przeznaczone są układy: 1. Podtrzymywany zegar czasu rzeczywistego 2. Układ oparty na generatorze kwarcowym, liczniku programowalnym i systemie przerwań. 3. Procesory Pentium posiadają układ liczący cykle procesora 1.1 Zegar czasu rzeczywistego Komputer PC standardowo posiada podtrzymywany bateryjnie zegar czasu rzeczywistego RTC (ang. Real Time Clock) MC146818. Zegar ten pracuje nawet wtedy gdy komputer jest wyłączony. Adres Zawartość Skrót rejestru 0 Sekundy ss 2 Minuty mm 4 Godziny gg 6 Dzień tygodnia tt 7 Dzień miesiąca dd 8 Miesiąc mm 9 Dwie ostatnie cyfry roku rr Tabela 1-1 Zawartość rejestrów układu MC146818 Czas rzeczywisty uzyskany z zegara RTC przy starcie systemu używany jest do ustawiania czasu systemowego. 1.2 Generator kwarcowy, układ licznikowy i system przerwań - Pierwotnym źródłem częstotliwości jest generator kwarcowy o częstotliwości 1.19318 MHz. - Generowana przez ten układ fala prostokątna podawana jest na wejście układu 8254 (trzy programowane liczniki 16 bitowe). - Licznik 0 dołączony jest do linii wejściowej IRQ0 układu 8259 - głównego kontrolera przerwań systemowych. - Układ ten z kolei dołączony jest do wejścia INT procesora.

J. Ułasiewicz Programowanie aplikacji współbieżnych 2 1.19318 MHz Licznik 0 IRQ0 Kontroler przerwań TSC vect255 Licznik 1 8259 INTR Procesor... Licznik 2 vect8 Dzielnik programowany 8254 MC146818 Procedura obslugi przerwań zegarowych rr/mm/dd gg/mm/ss Podtrzymywany baterią zegar CMOS ISR tn... t2 t1 zmienne licznikowe... vect0 RAM Rys. 1-1 Układy pomiaru czasu w komputerze PC - Częstotliwość przerwań zegarowych zależna jest od sposobu zaprogramowania licznika 0 układu 8254 (stopnia podziału tego licznika). - Tak więc im wyższa częstotliwość przerwań zegarowych tym większa dokładność pomiaru czasu w systemie. - Jednak częstotliwość taka nie może być też zbyt wysoka gdyż obsługa przerwania zegarowego absorbuje określony ułamek mocy procesora. - Częstotliwość przerwań zegarowych jest kompromisem pomiędzy dokładnością pomiaru czasu a narzutem na obsługę przerwań zegarowych. - W większości stosowanych obecnie systemów częstotliwość przerwań leży pomiędzy 10 Hz a 1000 Hz 1.3 Licznik cykli procesora Pentium Procesory rodziny Pentium i P6 posiadają wewnętrzny 64 bitowy licznik cykli procesora nazywany TSC (ang. Time-Stamp Counter). Przy restarcie sprzętowym licznik ten ustawiany jest na zero a następnie zwiększany o 1 co każdy cykl procesora.

J. Ułasiewicz Programowanie aplikacji współbieżnych 3 W procesorze Pentium 1 GHz licznik zwiększany będzie co 1 nanosekundę. Intel gwarantuje że licznik ten nie przepełni się po 10 letniej pracy procesora. W systemie QNX6 Neutrino rejestr ten odczytać można przy pomocy funkcji ClockCycles. uint64_t ClockCycles(void) Funkcja zwraca 64 bitową wartość licznika TSC. Makroinstrukcja podaje ile cykli procesora przypada na 1 sekundę: SYSPAGE_ENTRY(qtime)->cycles_per_sec #include <sys/neutrino.h> #include <inttypes.h> #include <stdlib.h> #include <sys/syspage.h> // clock.c - program testuje licznik TSC procesora P6 int main( void ){ uint64_t cps, start, stop, cykli; float sec; // Ile cykli procesora na sekunde cps = SYSPAGE_ENTRY(qtime)->cycles_per_sec; printf( "Cykli na sek. %lld \n",cps ); start=clockcycles( ); // Start printf("hello\n"); // Jakas instrukcja stop=clockcycles( ); // Stop cykli = stop-start; printf("liczba cykli: %lld \n", cykli); sec=(float)cykli/cps; printf("liczba sekund %f \n",sec); return EXIT_SUCCESS; Przykład 1-1 Testowanie czasu wykonania operacji w cyklach Cykli na sek. 2261876400 Hello Liczba cykli: 4241 Liczba sekund 0.000002 Wynik testowania Przykład 1-1 dla procesora Pentium 2.3 GHz

J. Ułasiewicz Programowanie aplikacji współbieżnych 4 Metoda pomiaru Rozdzielczość Uwagi czasu Podtrzymywany bateryjnie zegar RTC 1 sek Pracuje przy wyłączonym zasilaniu komputera Zegar systemowy, licznik, system przerwań 1 ms 10 ms Rozdzielczość zależy od częstotliwości przerwań zegarowych Licznik cykli TSC 1 ns 100 ns Występuje nie w każdym systemie Źródła czasu w komputerze PC 2. Czas systemowy 2.1 Czas nanosekundowy Aby umożliwić operowanie na krótkich odcinkach czasu (poniżej 1 sekundy) stosuje się format czasu w postaci struktury timespec. Pierwszy element tv_sec podaje liczbę sekund która upłynęła Od 1 stycznia 1970 roku. Drugi element tv_nsec podaje liczbę nanosekund które upłynęły od początku bieżacej sekundy. struct timespec { long tv_sec; // sekundy long tv_nsec; // nanosekundy Aby uzyskać dane dotyczące rozdzielczości zegara można użyć funkcji clock_getres. int clock_getres(clockid_t id, struct timespec *res) Id res Określenie typu zegara, obecnie tylko CLOCK_REALTIME Struktura w której określono dokładność zegara

J. Ułasiewicz Programowanie aplikacji współbieżnych 5 /* zegar1.c - program testuje rozdzielczosc zegara. */ #include <stdlib.h> #include <time.h> int main( void ) { struct timespec res; int x; x = clock_getres( CLOCK_REALTIME, &res); if(x!= 0) { perror( "blad" ); return -1; printf("rozdzielczosc%d us\n",res.tv_nsec / 1000 ); return EXIT_SUCCESS; Przykład 2-1 Uzyskiwanie rozdzielczości zegara systemowego. Bieżący czas systemowy pobiera się za pomocą funkcji clock_gettime. int clock_gettime(clockid_t id, struct timespec *res) id Określenie typu zegara, obecnie tylko CLOCK_REALTIME res Struktura w której zawarty będzie aktualny czas systemowy // zegar2.c - program testuje czas wyk. operacji #include <stdlib.h> #include <time.h> #define NANO 1000000000L; int main( int argc, char *argv[] ) { struct timespec start, stop; double accum; clock_gettime( CLOCK_REALTIME, &start); // Poczatek system( "ls /dev" ); // Operacja clock_gettime( CLOCK_REALTIME, &stop); // Koniec accum = ( stop.tv_sec - start.tv_sec ) + (double)( stop.tv_nsec - start.tv_nsec ) / (double)nano; printf( "Czas: %lf\n", accum ); return 0; Przykład 2-2 Pomiar czasu wykonania operacji

J. Ułasiewicz Programowanie aplikacji współbieżnych 6 Z kolei do ustawiania czasu systemowego używa się podanej niżej funkcji clock_settime. int clock_settime(clockid_t id, struct timespec *res) id res Określenie typu zegara, obecnie tylko CLOCK_REALTIME Struktura w której zawarty jest aktualny czas systemowy Funkcja zwraca 0 gdy sukces a 1 gdy błąd. 2.2 Czas sekundowy Wiele funkcji systemowych używa starszego formatu time_t o rozdzielczości sekundowej liczba sekund od 1 stycznia 1970 roku. Odpowiada on polu tv_sec z typu timespec. time_t time(time_t *buf) buf Bufor do którego czas ma być skopiowany lub NULL Funkcja zwraca liczbę sekund od 1 stycznia 1970 roku.

J. Ułasiewicz Programowanie aplikacji współbieżnych 7 2.3 Czas sekundowy w postaci struktury tm Pole struktury Opis Zakres int tm_sec Sekundy po pełnej minucie 0 61 int tm_min Minuty po pełnej godzinie 0 59 int tm_hour Godziny od północy 0 23 int tm_mday Dzień miesiąca 0 31 int tm_mon Miesiąc 0-11 int tm_year Rok od 1900 int tm_wday Dzień w tygodniu, 0 niedziela 0 6 int tm_yday Dzień roku od 1 stycznia 0 365 int tm_isdst Flaga przesunięcia czasowego long int Różnica pomiędzy czasem tm_gmtoff const char * tm_zone Pola struktury tm bieżącym a czasem UTC Łańcuch opisu strefy czasowej Zamiany czasu sekundowego typu time_t na strukture typu tm dokonać można używając funkcji localtime lub gmtime. struct tm *localtime(time_t *time) Time Czas w sekundach od 1 stycznia 1970 roku Konwersja ze struktury tm na czas sekundowy time_t time_t mktime(struct tm *timeprt) timeprt Wskaźnik do struktury typu tm zawierającej czas Funkcja asctime przekształca czas wyrażony w postaci struktury tm na czas wyrażony w postaci łańcucha tekstowego. char * asctime(struct tm *timep) timep Wskaźnik do struktury typu tm zawierającej czas

J. Ułasiewicz Programowanie aplikacji współbieżnych 8 Funkcja ctime przekształca czas wyrażony w postaci czasu sekundowego time_t na czas wyrażony w postaci łańcucha tekstowego - asctime(localtime(&time)) char * ctime(time_t *time) time Wskaźnik do zmiennej typu time_t zawierającej czas sekundowy

J. Ułasiewicz Programowanie aplikacji współbieżnych 9 // czas1.c - testowanie konwersji czasu #include <stdio.h> #include <stdlib.h> #include <time.h> int main( void ) { time_t t, talarm; struct tm ts; struct tm *tb; // wyprowadzenie daty / czasu jako lancuch t = time(null); printf("czas biezacy: %s", ctime(&t) ); // Ustawienie czasu aktywacji na 01/11/2006 12:50 ts.tm_year = 2006-1900; ts.tm_mon = 11-1; ts.tm_mday = 1; ts.tm_hour = 12; ts.tm_min = 50; ts.tm_sec = 0; talarm = mktime(&ts); while(1) { t = time(null); tb = localtime(&t); printf("rok:%d mies.:%d dzien:%d\n", \ tb->tm_year + 1900,tb->tm_mon+1,tb->tm_mday); printf("godz:%d min:%d sek:%d\n",\ tb->tm_hour, tb->tm_min, tb->tm_sec); if(t >= talarm) { // Wykonaj planowana czynnosc printf("planowana czynnosc\n"); break; sleep(1); return EXIT_SUCCESS; Nazwa czasu Typ danych Rozdzielczość Cykle procesora uint64_t 1 cykl procesora Nanosekundowy timespec 1 ns Sekundowy - liczba int time_t 1 sek Sekundowy - struktura tm 1 sek Typy czasu w systemie QNX6 Neutrino

J. Ułasiewicz Programowanie aplikacji współbieżnych 10 3. Opóźnienia 3.1 Opóźnienie sekundowe W systemach czasu rzeczywistego często zachodzi potrzeba odmierzania odcinków czasu i okresowego wykonywania pewnych zadań. int sleep(int sec) sec Specyfikacja czasu opóźnienia Wykonanie funkcji która powoduje zawieszenie wątku na sec sekund. Gdy proces otrzyma sygnał to wątek zablokowany na funkcji sleep ulegnie odblokowaniu. Brak gwarancji że po upływie zadanej liczby sekund watek ulegnie odblokowaniu. Wiadomo jedynie że zostanie on umieszczony w kolejce wątków gotowych. To czy zostanie uruchomiony zależy od obecności innych wątków gotowych o wyższym priorytecie. W2 wznowienie sleep(1) W2 priorytet 11 W1 priorytet 10 3.3 sek W2 blokada W1 wznowienie 1 2 3 4 5 6 czas 3.2 Opóźnienie nanosekundowe void nanosleep(struct timespec *tp, struct timespec *tk) tp Żądany czas opóźnienia tk Wskaźnik na strukturę gdzie ma być umieszczony czas pozostały do końca blokady lub NULL

J. Ułasiewicz Programowanie aplikacji współbieżnych 11 przerwania zegarowe nanosleep(&t,null) W1 wznowienie W1 1.5 ms 0 1 2 3 4 czas w ms Ilustracja błędu opóźnienia procesu // Program digout2.c generacja fali prostokątnej T=1 ms #include <hw/inout.h> #include <sys/neutrino.h> #define BASE 300 #define DOUT 3 main(void) { unsigned char x = 0; struct timespec t; t.tv_sec = 0; t.tv_nsec = 1000000; ThreadCtl(_NTO_TCTL_IO, 0); do { out8(base+dout,x); if(x==0) x = 1; else x = 0; nanosleep(&t,null); while(1); Generacja impulsu prostokątnego o okresie 1 ms 4. Uruchamianie procesów w zadanym czasie serwer cron W systemach sterowania niejednokrotnie istnieje potrzeba automatycznego uruchomienia procesu w okreslonym momencie czasowym. Taką mozliwość zapewnia serwer czasu cron. Proces cron uruchamia się automatycznie przy starcie systemu lub poprzez wpis w pliku inicjalizacyjnym systemu: /etc/rc.d/rc.local cron -d crondir v & Proces ten ma swoje pliki konfiguracyjne w domyślnym katalogu: /var/spool/cron

J. Ułasiewicz Programowanie aplikacji współbieżnych 12 Domyślny katalog może być zmieniony na inny poprzez opcję d crondir -v uruchomienie z opcją diagnostyczną /var/spool/cron/cron.allow Plik zawierający nazwy użytkowników którzy mogą korzystać z usługi. Domyslnie wszyscy mogą (gdy nie ma pliku) /var/spool/cron/cron.deny Plik zawierający nazwy użytkowników którzy nie mogą korzystać z usługi. /var/spool/cron/crontabs Pliki konfiguracyjne użytkowników Rys. 4-1 Katalogi używane przez serwer czasu cron Specyfikacji czasu wykonania i polecenia dokonuje się umieszczając wpisy w tablicy crontab. Wykonuje się to za pomocą polecenia: crontab [ d cron_dir] [ e -l -r] [-u user] -d cron_dir Katalog w którym umieszczono plik crontab -e Edycja pliku crontab. Edytor można ustawić poprzez zmienną środowiska EDITOR -l Listowanie pliku crontab -r Usunięcie pliku crontab -u user Nazwa uzytkownika Gdy użyjemy opcji e włącza się domyślny edytor i należy dokonać edycji poszczególnych linii odpowiadających poleceniom. * * * * * polecenie +----- dzień tygodnia (0-7) +------- miesiąc (1-12) +--------- dzień miesiąca (1-31) +----------- godzina (0-23) +------------- minuta (0-59) Rys. 4-2 Zawartość linii pliku crontab Uwagi:

J. Ułasiewicz Programowanie aplikacji współbieżnych 13 Dni tygodnia oznaczane są nastepująco: 0 niedziela, 1 poniedziałek,..., 7 niedziela. Niedziela może być oznaczona jako 0 lub 7 W crontabie należy podawać pełne ścieżki do poleceń lub ustawić odpowiednią wartość zmiennej PATH. Dzień wykonania komendy można ustalić na podając dzień miesiąca lub dzień tygodnia. Jeśli oba pola są ustawione, to komenda wykona się zarówno w ustawiony dzień miesiąca, jak i w ustawiony dzień tygodnia. Wartości liczbowe możemy zapisywać w różnych formatach: 1-4 - wartości 1,2,3,4 1,2,6 - wartości kolejno 1,2,6 Standardowe wyjście z uruchamianych programów kierowane jest w postaci email na skrzynkę pocztową właściciela. Aby tego uniknąć należy przekierować standardowe wyjście na /dev/null, /dev/con lub podobnie Przykłady: 0 0 1,16 * 1 polecenie Uruchomienie o godz; 00:00 dnia 1 i 16 w poniedziałek każdego miesiąca 1,21,41 * * * * date > /dev/con Co 20 minut uruchamiane polecenie date i czas wyprowadzany na konsolę. Serwer czasu cron może być użyty do uruchamiania programów wykonujących sterowanie ale rozdzielczość czasu 1 sekunda nie zawsze jest wystarczająca.