Lucain жарияланған біраз уақыт бұрын cron және crontab бойынша керемет оқулық Менің ойымша, бөлісуге тұрарлық. Cron - бұл Windows-тағы Жоспарланған Тапсырмаларға баламалы түрі, тек оны терминалдан басқарады. Бір мақсатқа жету үшін визуалды интерфейсті қалайтындар мұны көре алады басқа элемент. |
The
Крон дегеніміз не?
Крон атауы грек хроносынан шыққан, «уақыт» дегенді білдіреді. Unix операциялық жүйесінде cron - бұл процестерді немесе сценарийлерді белгілі бір уақыт аралығында (мысалы, әр минутта, күнде, аптада немесе айда) орындайтын тұрақты фондық менеджер (демон). Crontab файлында орындалуы керек процестер және оларды орындау уақыты көрсетілген.
Бұл қалай жұмыс істейді
Cron демоны басталады /etc/rc.d/ o /etc/init.d таралуына байланысты. Cron фонда жұмыс істейді, crontab тапсырмалар кестесін минут сайын тексереді / etc / crontab немесе / var / spool / cron орындалатын міндеттерді іздеуде. Пайдаланушы ретінде біз кейбір процестерді автоматтандыру үшін cron тапсырмалары бар командалар немесе сценарийлер қоса аламыз. Бұл, мысалы, жүйені немесе жақсы сақтық көшірме жүйесін жаңартуды автоматтандыру үшін пайдалы.
Crontab дегеніміз не?
Crontab - бұл қолданушы белгілеген уақытта орындалатын командалар тізімін сақтайтын қарапайым мәтіндік файл. Crontab сценарийдің немесе команданың орындалу күні мен уақытын, орындалу рұқсаттарын тексеріп, оны фондық режимде орындайды. Әрбір пайдаланушының жеке crontab файлы болуы мүмкін, шын мәнінде / etc / crontab бұл root пайдаланушының crontab файлы деп есептеледі, егер қарапайым пайдаланушылар (және тіпті root) өздерінің crontab файлын жасағысы келсе, онда біз crontab пәрменін қолданамыз.
Crontab - қарапайым пайдаланушы немесе түбірлік пайдаланушы ретінде көп қолданушы жүйелеріндегі cron тапсырмаларды басқарудың ең оңай әдісі.
Crontab пайдалану
Біз қарапайым мысалдан бастаймыз.
Біз жүйені жаңартуды автоматтандырамыз, «Мен әрдайым жаңартып отыруым керек, маған бұл ұнамайды!» Деген тітіркендіргішті алып тастаймыз.
Алдымен біз сценарий жасаймыз. Бұл сценарий cron арқылы шақырылады және біз орындағымыз келетін барлық нұсқаулықтарды қамтиды, сондықтан оны cron-ға енгізбес бұрын оны бірнеше жағдайда және бірнеше тәсілмен тексеру қажет, қарапайым жаңарту сценарийі:
#! / bin / bash # сценарийді жаңарту мысалы # дистрибуцияны таңдаңыз # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Тарату сызығынан # санын алып тастаңыз. Егер бұл Ubuntu / Debian болса, ол apt-get-тен басталады.
Біз сценарийді update.sh ретінде сақтаймыз (мысалы, сіздің үйіңіздің сценарийлер каталогы). Біз аталған сценарийдің орындалу рұқсаттарын келесідей өзгертеміз:
chmod a + x ~ / scripts / update.sh
Біз сценарийді бірнеше рет орындаймыз, барлығы дұрыс жұмыс істейтінін тексереміз, қажет нәрсені өзгертеміз (қателер болмауы керек, әйтпесе cron қатені қайта-қайта қайталайды). Енді тапсырманы crontab-қа қосу үшін.
Crontab-қа тапсырмалар қосыңыз
Біз crontab басылымын crontab -e көмегімен орындаймыз, кейбір дистрибьютерлерде (мысалы, Ubuntu) бізге қажетті мәтіндік редакторды таңдау мүмкіндігі беріледі, қалғаны бізде vi қалады. Crontab файлы келесідей болады.
# mh dom mon dow пайдаланушының пәрмені
қайда:
- m сценарий орындалатын минутқа сәйкес келеді, мәні 0-ден 59-ға дейін
- h нақты уақыт, тәуліктік формат өңделеді, мәндер 24-ден 0-ке дейін, ал 23 түнгі 0:12 болады.
- DOM айдың күніне жатады, мысалы, сіз 15 күн сайын жүгіргіңіз келсе, 15 санын көрсете аласыз
- dow бұл аптаның күнін білдіреді, ол сандық болуы мүмкін (0-ден 7-ге дейін, мұндағы 0 және 7 жексенбі) немесе ағылшын тіліндегі күннің алғашқы 3 әрпі: мон, сс, среда, сейсенбі, жұма, отыр, күн.
- пайдаланушы команданы орындайтын пайдаланушыны анықтайды, ол root немесе басқа қолданушы болуы мүмкін, егер олардың сценарийді орындауға рұқсаты болса.
- бұйрық орындау үшін сценарийдің командасына немесе абсолютті жолына сілтеме жасайды, мысалы: /home/usuario/scripts/update.sh, егер ол сценарийді шақырса, ол орындалуы керек
Крон тапсырмаларының бірнеше мысалын түсіндіру үшін:
15 10 * * * user /home/user/scripts/update.sh
Ол update.sh сценарийін күн сайын сағат 10: 15-те іске қосады
15 22 * * * user /home/user/scripts/update.sh
Ол update.sh сценарийін күн сайын 10: 15-те орындайды
00 10 * * 0 root apt-get -y жаңарту Root user
Ол әр жексенбі сайын сағат 10: 00-де жаңарып отырады
45 10 * * sun root apt-get -y жаңарту
Түбірлік қолданушы әр жексенбі (жексенбі) сағат 10: 45-те жаңартуды іске қосады
30 7 20 11 * user /home/usuario/scripts/update.sh
20 қарашада сағат 7: 30-да қолданушы сценарийді орындайды
30 7 11 11 күн қолданушысы /home/usuario/scripts/pastel_con_velitas.sh
11 қарашада таңғы сағат 7: 30-да, яғни жексенбіде пайдаланушы өзінің сисадминін атап өтеді (яғни мен)
01 * * * * user /home/usuario/scripts/molestorecordatorio.sh
Күн сайын әр сағат сайын минут сайын тітіркендіргіш ескерту (ұсынылмайды).
Олармен жұмыс істеуге болады арнайы диапазондар:
30 17 * * 1,2,3,4,5
Дүйсенбі мен жұма аралығында күн сайын сағат 5: 30-да.
00 12 1,15,28 * *
Әр айдың бірінші, он бесінші және 12-і күндізгі сағат 28-де (жалақы төлеуге өте ыңғайлы)
Егер бұл түсініксіз болса, crontab тұтқалары осы аралықтарды анықтайтын арнайы жолдар.
@reboot Іске қосу кезінде, бір рет іске қосыңыз
@yearly жылына бір рет қана жұмыс істейді: 0 0 1 1 *
@ жыл сайын @yearly сияқты
@monthly айына бір рет, бірінші күні өтеді: 0 0 1 * *
@weekly Weekly - аптаның бірінші сағатының бірінші минуты. 0 0 * * 0 ″.
@daily күн сайын, сағат 12: 00-де. 0 0 * * *
@midnight @daily сияқты
@hourly әр сағаттың бірінші минутында: 0 * * * *
Оны пайдалану өте қарапайым.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y жаңарту
Ақырғы бірақ соңғы емес:
Cron жұмысын басқару
crontab файлы
Қолданыстағы crontab файлын пайдаланушы анықтаған файлмен ауыстырыңыз
crontab -e
Пайдаланушының crontab файлын өңде, әр жаңа жол жаңа crontab тапсырмасы болады.
crontab -l
Пайдаланушының барлық crontab тапсырмаларын тізімдеңіз
crontab -d
Пайдаланушының crontab жою
crontab -c дир
Пайдаланушының crontab каталогын анықтайды (мұнда пайдаланушының жазу және орындау рұқсаттары болуы керек)
crontab -u пайдаланушысы
басқа пайдаланушының crontab-ін өңдеуге арналған префикс, мысалдар:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Бұл құралды, басқалар сияқты, тереңірек және егжей-тегжейлі көруге болады:
48 пікір, өз пікіріңізді қалдырыңыз
Уф ... сәл түсініксіз.
* / 30 жоқ (минут өрісінде), ол әр 30 минут сайын жүреді ...
Түсініктемелерді қарап шығуды шешкенге дейін мен бұл туралы түсініктеме бергім келді 😀
Бұл модификатор өте маңызды ақпарат және өте пайдалы нәрсе.
Сәлеметсіз бе!
Дәл қазір мен конфигурацияны 45 минут сайын тексеріп жатырмын.
* / 45 * * * *, және нұсқаулық әр сағаттың 45 минутында және әр сағат сайын орындалады. Яғни:
Ол 3: 45-те, содан кейін 4: 00-де, 4: 45-те, содан кейін 5: 00-де, 5: 45-те, 6: 00-де, 6: 45-те және т.с.с.
Менде бір нәрсе дұрыс емес пе? Мұны 45 минут сайын немесе кем дегенде бір рет 45 минут сайын жасау үшін не істей аламын?
Сәлеметсіз бе!
Дәл қазір мен конфигурацияны 45 минут сайын тексеріп жатырмын.
* / 45 * * * *, және нұсқаулық әр сағаттың 45 минутында және әр сағат сайын орындалады. Яғни:
Ол 3: 45-те, содан кейін 4: 00-де, 4: 45-те, содан кейін 5: 00-де, 5: 45-те, 6: 00-де, 6: 45-те және т.с.с.
Менде бір нәрсе дұрыс емес пе? Мұны 45 минут сайын немесе кем дегенде бір рет 45 минут сайын жасау үшін не істей аламын?
Сәлем, cron-дың қалай жұмыс істейтінін түсіндіру үшін өте пайдалы ақпарат.
Байттар
үшін *
Өте жақсы, cron-дың қалай жұмыс істейтінін түсіндіргеніңіз үшін рақмет .. қолымызды кішкене қояйық 🙂
Бұл жол менің түсінуім бойынша сағат 10: 15-те орындалады, егер мен қателессем, түзетіңіз
Онда таңертеңгі сағат 10: 15-те жазылған
15 22 * * * user /home/user/scripts/update.sh
Сәлеметсіз бе! өте жақсы ақпарат.
Сценарийді әр жарты сағат сайын орындау үшін CronTab-қа қосу керек жол: «30 * * * * root Scrip.sh» Дұрыс па? Көп рақмет сізге!
Жоқ. Егер менің есімде дұрыс болса, онда сіз Scrip.sh / 30 * * * * түбірін қоюыңыз керек.
Яғни, / санын 30-ға дейін қосыңыз.
Алақай! Пауыл.
Сәлеметсіз бе, маған сіздің жазбаңыз ұнады, өте толық, бірақ мен сізден бір нәрсе сұрағым келді.
Менде осы пәрменде проблемалар бар және «at» сияқты.
Мен сценарийді белгілі бір уақытта іске қосқым келеді
-f /home/mi_user/Desk/script.sh 18:08 мысалы
ал сценарий экранда, яғни терминалда орындалмайды, ол фонда орындалады ма?
Cron-мен бірдей жағдай болады, мен crontab файлын «crontab -e» арқылы өңдеймін
соңында мен осы жолды қосамын:
46 19 my_user /home/mi_user/Desk/script.sh
және ол ешнәрсе жасамайды, сценарийді де көрсетпейді.
Ұсынысыңыз бар ма? Сізге көп рахмет және қолайсыздықтар үшін кешірім сұраңыз
Терминал пайда болуы үшін сіз терминалды іске қосып, сценарийді параметр ретінде беруіңіз керек.
Мысалы:
lxterminal -e «my_user /home/my_user/Desk/script.sh»
Пайдаланылатын параметр сіз қолданатын терминал эмуляторына байланысты өзгеруі мүмкін.
Бұл жұмыс істейді деп үміттенемін.
Құшақтаңыз! Пауыл.
Үлес бағаланады.
10 ұпай !!
салу2 !!
Сізге көп рахмет, маған біраз нәрсені нақтылауға көмектесті, жалпы алғыс, толығырақ немесе күмәндану үшін MAN PAGE парағына қайта барамын, сәлемдесу.
Ағай сізге көп рахмет, мен мысалдарды оқып, тексеріп жүрдім. көп рахмет ... өте түсінікті. Алақай!
Мен ubuntu Server 12.04.2 LTS-ді пайдаландым және пайдаланушының жұмыс тізімін жою үшін менде crontab нұсқасы, crontab -r (және осы нұсқаулықта айтылғандай -l) қолданылады. Әрине, бұл нұсқалар туралы.
Екінші жағынан, мен бір кезде тек crontab-ты іске қосқан едім, және маған жеке орындау файлын жасауға рұқсат етіңіз, бірақ бұл орындалатын файл емес еді. Іске қосылған - / etc / crontab ішіндегі біреу. мүмкін біреу түсініктемені қолданар.
PS (мен қайда орналасқанын анықтадым, бірақ ол тек жоғарыда көрсетілген мекен-жайды және шифрланған басқа файлды қайтарады, сондықтан егер орындалған / etc / crontab файлында болса, бірақ crontab -e пәрменін орындаған кезде менікі пайда болады мен анықтаған барлық жұмыстармен бірге) бұл файл қайда сақталды '???? Құрметпен. Мен әрқашан root арқылы кіремін.
Керемет, өте пайдалы !!!
Сәлеметсіз бе, мен мұны істегім келеді ………… «15 10 * * * root ifdown eth0»
яғни, белгілі бір уақытта желілік карта өшіп қалады …………, мен оны crontab-ға қойдым, ол жұмыс істемеді …… .. не болды?
Сәлем мен алғыс
«Crontab-қа тапсырмалар қосу» деген тақырыптан кейін «мон» мағынасын анықтадыңыз
Мақала әлі жақсы, cron өте пайдалы.
Жақсы жазба қандай керемет болды, сұраңыз
Тапсырмаларды орындау кезінде қалдырылған жазбаларды қадағалағым келсе, оны қайдан көруге болады?
is decdir Мен осы файлдың өткен уақытындағы әрекеттер тарихын көргім келеді және оны кім өзгерткенін және күнін көргім келеді
рахмет
Мен мұның өзгеру тарихын тексергім келеді
мен мұны қалай істей аламын
рахмет
Қайырлы таң,
Менің ойымша, ubuntu сценарийінде сіз қате жібердіңіз, сіз apt-get -y жаңарту орнына ap-get -y жаңартуын қойдыңыз (Сіз т қалдырдыңыз).
А құттықтау.
Солай. Рақмет сізге!
Құшақтаңыз! Пауыл
Әрбір орындалған уақытты, каталогты және т.с.с. көрсету үшін cron файлын қалай құруға болатындығын білгім келеді.
Операцияны түсіндіргеніңіз үшін және cron-ға арналған негізгі командалар үшін рақмет, енді біраз уақыт көңіл көтеру үшін.
Мен Gnu / Linux-ке қатысты кез-келген тақырыпқа байланысты кез-келген ақпаратты іздеген сайын, мен әрдайым 90% жағдайда осы үлкен қоғамдастықтың ең жақсы оқулығын табамын, содан кейін мен осында, содан кейін басқа жерде бастаймын деп ойлаймын.
тілекпен
Сандерге рахмет! Құшақ! Пауыл.
дом = айдың күні
dow = аптаның күні
егер сіз байланыстырсаңыз оңайырақ
Сізге көп рахмет, өте толық және жақсы түсіндірілген.
Бұл менің Операциялық жүйелер пәнінің мұғалімі берген нәрсе, мен ештеңе өзгертпеймін, енді сыныптың неге нашар екенін түсіндім.-.
Болжалды,
Сұрау, тапсырманың ұзақтығын шектеуге бола ма?
Мысалы, менде әр 5 минут сайын қайталанатын тапсырма бар, егер бұл тапсырма әлі белсенді болса, оны қайталаңыз, оны өлтіріп, қайта іске қосыңыз.
Рахмет,
Марсело.-
Сәлеметсіз бе, Марсело!
Менің сұрағыма жауап беру қызметінде осы сұрақты қойсаңыз жақсы болар еді деп ойлаймын Linux-тен сұраңыз бүкіл қоғамдастық сіздің проблемаңызға көмектесуі үшін.
Құшақтау, Пабло.
жақсы пост.
Crontab-қа тапсырмаларды қосу үшін crontab-қа қандай команда керек (crontab-ға кірмей және оларды 'crontab -e' -мен қолмен қоспай немесе crontab-ды басқа crontab-қа 'crontab file' -мен алмастырмай).
Мұндағы мақсат - crontab-қа тапсырмаларды қосу үшін сыртқы сценарий құру
Gracias
менің ойымша, 'echo' қосқыңыз келетін нәрсені қолдануға болады '| мысық >> 'cronotab жолы (/ etc / cronotab)' «
Өрнек әр 3 күнде қалай дәл орындалады
Сәлеметсіз бе!
Менде cron жұмысын орындау қиын болды.
Мен келесі тапсырманы cronta -e көмегімен орындаймын:
01 * * * * root /home/user/script/mfile.sh
бірақ тапсырма орындалмады. Myfile.sh бағдарламасының орындалуға рұқсаты бар екенін және оны орындайтын пайдаланушының root екендігіне көз жеткіздім.
Мен сол тапсырманы / etc / crontab-да орындаймын және қызметті қайта іске қосқаннан кейін ол мен үшін де жұмыс істемейді.
Myfile.sh мазмұны - бұл ДБ-ны жаңартатын команда, егер оны консольға қоссам, ол жұмыс істейді.
мәселе қандай болуы мүмкін деген кез-келген түсінік бар ма?
Дерекқор пайдаланушысында барлық рұқсаттар болмауы мүмкін, алдымен сіз қоршаған орта айнымалыларын дерекқорыңыздың жүйесінен экспорттауыңыз керек.
Мысалы, db2-де бұл жол сценарийдің басында болады
. / home / db2inst1 / sqllib / db2profile
Басқа себеп сценарийдің дерекқорға қосылуын талап етуі, сценарийдің ішінде дерекқорға қосылуын талап етуі мүмкін
Мен кронды қайта қосуым керек екенін білмедім, мен онымен біраз уақыт күресіп жүрдім
Олар тапсырманың айдың соңында, көрсетілген уақытта орындалатындығын қалай көрсететінін біледі .. егжей-тегжейлі, мен оның әр айдың соңғы күнін алатындығын біле алмаймын .. ?? Оларды бірінен соң бірін жазуға мәжбүр болдым, бірақ ақпан айы аяқталғаннан кейін бұл өте қиын болады.
Қайырлы күн!!
Crontab-та орындалатын процесті қалай тоқтатуға болады?
процесс * …………
Сіз маған көмектесе аласыз ба? eu tenho um сценарийі минха авторы, ешқандай жұмыс істемейді crontab! Jb dei барлық рұқсат етіледі, нақты крон немесе оны орындай алатын қолданушы емес, ештеңе болмайды! Сіз маған көмектесе алатыныңызды білгім келеді, кейбір басқа нәрселер жұмыс істемейді! Vlws
Сіз айдың әр соңғы күнінде (31-30-28 күндері) жүгіруге қалай тапсырма берер едіңіз?
Өзіңіз білетіндей, su командасы пользовательді консольде өзгерту үшін қолданылады. Егер мен su командасын осылай қолдансам: «сіздің қолданушыңыз» пайдаланушыны өзгертеді, бірақ «user» -дің тиісті параметрлерінсіз, егер su: «su - user» ретінде іске қоссам, пайдаланушының параметрлерін жүктеу арқылы қолданушыны өзгертемін. Cron көмегімен мен пайдаланушыны көрсетемін, бірақ осы пайдаланушының конфигурацияларын қалай жүктеуге болады?
Егер мен оны тоқтатқым келсе?
сәлем,
Мен не істеп жатқанымды білмеймін, бірақ мен қадамдарды орындаймын және ештеңе орындалмайды. Мен көрдім:
59 * * * * / usr / bin / gedit
* * * * * / usr / bin / gedit
* * * * * root / usr / bin / gedit
* * * * * usr / bin / test.sh
* * * * * root usr / bin / test.sh
және ештеңе жоқ. Ол ештеңе орындамайды. Мен бәрін қайта жүктедім.
көп рахмет