Кіріспе

Unix-тәрізді операциялық жүйелер үшін жұмыс жоспарлаушысы

Cron командалық жолдың құралы Unix-тәрізді операциялық жүйелерде жұмыстарды жоспарлау үшін қолданылады. Бағдарламалық ортаны орнатып, күтіп ұстайтын пайдаланушылар cron-ды жұмыс жоспарларын (командалар немесе shell скрипттері), сонымен қатар cron жұмыстары деп те аталатын, белгілі уақытта, күні немесе аралықта мерзімді түрде орындау үшін пайдаланады. Ол әдетте жүйелік қызмет көрсетуді немесе әкімшілдік жұмыстарды автоматтандырады, бірақ оның көп мақсатты болуы оны, мысалы, интернеттен файлдарды жүктеу және электрондық поштаны белгілі интервалмен жүктеу сияқты істерге де пайдалы етеді. Cron қайталанатын тапсырмаларды жоспарлауға ең қолайлы. Бір реттік тапсырмаларды жоспарлау үшін байланыстырылған at құралын пайдалануға болады. Cron атауы грек тіліндегі Chronos, яғни "уақыт" деген сөзден шыққан.

Уақыт белдеуін басқару

Көптеген cron іске асырулары crontab жазбаларын cron демоны жұмыс істейтін жүйелік уақыт белдеуі бойынша түсіндіреді. Бұл үлкен, көп пайдаланушылы машинада әртүрлі уақыт белдеулеріндегі пайдаланушылар болған жағдайда, әсіресе жүйедегі әдепкі уақыт белдеуі күндізгі уақыт ауысымын қамтитын болса, дау тудыруы мүмкін. Сондықтан, cron іске асыруы ерекше жағдай ретінде пайдаланушының crontab-тарында "CRON TZ=<уақыт белдеуі>" түріндегі жолдарды тани алады және одан кейінгі crontab жазбаларын осы уақыт белдеуіне сәйкес түсіндіреді.

Қазіргі нұсқалары

GNU жобасы мен Linux пайда болғаннан кейін жаңа cron түрлері пайда болды. Олардың ең көп тарағаны – Пол Викси 1987 жылы жазған Vixie cron. Vixie cron-ның 3-ші нұсқасы 1993 жылдың соңында, ал 4.1 нұсқасы ISC Cron деп аталды және 2004 жылдың қаңтарында шығарылды. 3-ші нұсқа, шағын түзетулермен, Linux және BSD дистрибутивтерінің көпшілігінде қолданылады. 2007 жылы Red Hat, vixie cron 4.1-ді cronie жобасына бұтақтады және 2009 жылы anacron 2.3 қосты. Дегенмен, Anacron – тәуелсіз cron бағдарламасы емес; оны басқа cron жұмысы шақыруы тиіс. DragonFly-дің dcron-ін оның негізін қалаушысы Мэтт Диллон жасады, ал 2010 жылы Джим Прайор оның күтімін өз мойнына алды. 2003 жылы Дейл Меллор Guile тілінде жазылған mcron-ді ұсынды, ол Vixie cron-мен үйлесімді болып табылады, сонымен қатар жоспарлау есептеулері мен жұмыс анықтамаларында кез келген схема кодын пайдалануға мүмкіндік беретіндей икемділікке ие. Mcron демоны мен crontab файлдары көбінесе схема тілінде жазылады (бірақ mcron дәстүрлі Vixie crontab-тарын да қабылдайды), сондықтан пайдаланушының жұмыс кезегінің жиынтық ахуалы оның жұмыс кодына қолжетімді, егер басқа жұмыстардың нәтижелері белгілі бір шарттарға сай келсе, олар орындалуы мүмкін. Mcron әдетте Guix пакеттік менеджерімен бірге орнатылады, ол пакеттік менеджердің mcron crontab-тарын монодикалық түрде жасауға арналған мүмкіндіктерін (қызметтерін) қамтиды, сонымен қатар жұмысты орындау үшін қажетті пакеттердің орнатылғанын және crontab-тардың оларға дұрыс сілтеме жасағанын қамтамасыз етеді. Веб-хостинг ортасында cron мүмкіндігі болмаған жағдайларда, вебcron шешімі жүйектік тапсырмаларды белгілі бір уақыт аралығымен орындау үшін жоспарлайды.

Стандартты емес таңбалар

Келесілер стандартты емес символдар болып табылады және тек кейбір cron нұсқаларында ғана қолданылады, мысалы Quartz Java жоспарлаушысында. 'L' символы "соңғы" дегенді білдіреді. Апта күні өрісінде қолданылғанда, ол "айдың соңғы жұмасы" сияқты конструкцияларды көрсетуге мүмкіндік береді. Ай күні өрісінде ол айдың соңғы күнін көрсетеді. 'W' символы ай күні өрісінде рұқсат етіледі. Бұл символ берілген күнді ең жақын апта күніне (дүйсенбіден жұмаға дейін) орналастыру үшін қолданылады. Мысалы, егер ай күні өрісінің мәні ретінде "15W" көрсетілсе, мағынасы: "айдың 15-іне ең жақын апта күні". Егер 15-і сенбі болса, триггер 14-і жұма күні орындалады. Егер 15-і жексенбі болса, триггер 16-ы дүйсенбі күні орындалады. Егер 15-і сейсенбі болса, триггер сейсенбінің 15-і күні орындалады. Дегенмен, егер ай күні үшін "1W" көрсетілсе және 1-і сенбі болса, триггер 3-і дүйсенбі күні орындалады, себебі ол ай күндерінің шегінен "асып" өтпейді. 'W' символын ай күні бір ғана күн болғанда ғана, диапазон немесе күндер тізімі болмағанда қолдануға болады. Апта күні өрісі үшін '#' символына рұқсат етіледі, одан кейін бірден бесеуге дейінгі сан келуі керек. Бұл "бір айдың екінші жұмасы" сияқты конструкцияларды көрсетуге мүмкіндік береді. Мысалы, "5#3" енгізілсе, ол әр айдың үшінші жұмасына сәйкес келеді. Кейбір нұсқаларда сұрақ белгісі (?) ай күнін немесе апта күнін бос қалдыру үшін ' ' символының орнына қолданылады. Басқа cron нұсқалары "?" символын cron демонының басталу уақытымен алмастырады, сондықтан егер cron 08:25-те басталып, қайта іске қосылғанға дейін күнде осы уақытта орындалады. Слэш (/) Vixie cron-да слэштерді қадамдық мәндерді көрсету үшін диапазонмен біріктіруге болады. Бұл жағдайда, ол минуттар бөліміндегі Vixie cron кестесімен бірдей. Сол сияқты, сағаттар, күндер және айлар үшін қосымша ' ' символдарын алып тастауға болады. 'H' символы Jenkins үздіксіз интеграция жүйесінде "хештелген" мән ауыстырылғанын көрсету үшін қолданылады. Осылайша, "20" сияқты нақты санның орнына, сағат сайын 20 минуттан кейін орындалатынын білдіретін, "H" символы әр тапсырма үшін белгіленбеген, бірақ өзгермейтін уақытта сағат сайын орындалатынын көрсетеді. Бұл тапсырмаларды бір уақытта бастап, ресурстар үшін бәсекелесудің орнына уақыт бойынша бөлуге мүмкіндік береді.