Cron & crontab, објасни

Лукаин објавен пред некое време одлично упатство за cron и crontab што мислам дека вреди да се сподели. Cron е еден вид еквивалентен на Закажани задачи во Windows, само што се ракува од терминалот. Оние кои претпочитаат визуелен интерфејс за да ја постигнат истата цел, можат да го видат ова друга ставка.

Што е крон?

Името крон потекнува од грчки хронос што значи „време“. На оперативниот систем Unix, cron е редовен управувач на процеси во позадина (демон) кој извршува процеси или скрипти во редовни интервали (на пример, секоја минута, ден, недела или месец). Процесите што мора да се извршат и времето во кое тие мора да се извршат се наведени во датотеката crontab.

Како функционира

Крон-демонот започнува од /итн/rc.d/ o /тнк/init.d во зависност од дистрибуцијата. Cron работи во позадина, ја проверува табелата за задачи crontab секоја минута / итн / кронтаб o en / var / калем / крон во потрага по задачи што треба да се извршат. Како корисник, можеме да додадеме команди или скрипти со задачи за cron за автоматизација на некои процеси. Ова е корисно, на пример, за автоматско ажурирање на систем или добар систем за бекап.

Поврзана статија:
Упатство: Инсталирајте ги пакетите .tar.gz и .tar.bz2

Што е Кронтаб?

Crontab е едноставна текстуална датотека која зачувува список со команди што треба да се извршат во одредено време од корисникот. Crontab ќе ги потврди датумот и времето кога треба да се изврши скриптата или командата, дозволите за извршување и тоа ќе го стори во позадина. Секој корисник може да има своја crontab-датотека, всушност / итн / кронтаб се претпоставува дека е датотека crontab на коренскиот корисник, кога нормалните корисници (па дури и root) сакаат да генерираат своја crontab-датотека, тогаш ќе ја користиме командата crontab.

Crontab е најлесниот начин за управување со cron задачи на повеќекориснички системи, или како едноставен кориснички систем или root корисник.

Користење на кронтаб

Започнуваме со едноставен пример.

Toе го автоматизираме ажурирањето на системот, за да го отстраниме досадното „Јас секогаш треба да ажурирам и не ми се допаѓа тоа!“.

како да се
Поврзана статија:
Команди за познавање на системот (идентификувајте хардвер и некои софтверски конфигурации)

Прво на сите ќе направиме сценарио. Оваа скрипта ќе се повика со 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 ~ / скрипти / ажурирање.sh

Ние ја извршуваме скриптата неколку пати за да потврдиме дека сè работи непречено, го менуваме потребното (не треба да содржи грешки, во спротивно cron само ќе повторува грешка одново и одново). Сега да ја додадеме задачата на нашиот crontab.

Додајте задачи на crontab

Ние го извршуваме изданието на crontab со crontab -e, во некои дистрибуции (како што е Ubuntu) тоа ни дава можност да го избереме уредникот за текст што го сакаме, а остатокот ни останува со vi. Крнтаб-датотеката ќе изгледа вакво нешто.

# mh домашна корисничка команда

каде:

  • m одговара на минутата кога ќе се изврши скриптата, вредноста се движи од 0 до 59
  • h точното време, се постапува 24-часовен формат, вредностите се движат од 0 до 23, со 0 да биде 12:00 часот на полноќ.
  • ДОМ се однесува на денот во месецот, на пример, можете да наведете 15 ако сакате да трчате на секои 15 дена
  • дау значи ден во неделата, може да биде нумерички (од 0 до 7, каде што 0 и 7 се недела) или првите 3 букви во денот на англиски: mon, tue, wed, thu, fri, sat, sun.
  • корисникот го дефинира корисникот кој ќе ја изврши командата, може да биде root или друг корисник се додека имаат дозволи за извршување на скриптата.
  • команда се однесува на командата или апсолутната патека на скриптата што треба да се изврши, пример: /home/usuario/scriptts/actualizar.sh, ако навистина повикува скрипта, таа мора да биде извршна

Да бидат јасни, објасни неколку примери на задачи на крон:

15 10 * * * корисник / дом / корисник / скрипти / ажурирање.sh

Runе ја изврши скриптата update.sh во 10:15 часот секој ден

15 22 * * * корисник / дом / корисник / скрипти / ажурирање.sh

Runе ја изврши скриптата update.sh во 10:15 часот секој ден

00 10 * * 0 ажурирање root apt-get -y Корен корисник

Runе работи ажурирање секоја недела во 10:00 часот

45 10 * * ажурирање за коренот на сонцето apt-get -y

Корисникот на root ќе извршува ажурирање секоја недела (сонце) во 10:45 часот

30 7 20 11 * корисник / home / usuario/scripts/update.sh

На 20 ноември во 7:30 часот корисникот ќе ја изврши скриптата

30 7 11 11 корисник на сонце /home/usuario/scripts/pastel_con_velitas.sh

На 11 ноември во 7:30 часот и тоа е недела, корисникот ќе го прослави својот сисадмин (т.е. јас)

01 * * * * корисник / дом / корисник / скрипти / молесторекордаторио.ш

Досаден потсетник секоја минута на секој час секој ден (НЕ се препорачува).

Тие сè уште можат да се ракуваат специјални опсези:

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 Неделно, првата минута од првиот час во неделата. 0 0 * * 0.
@ дневно секој ден, во 12:00 часот А.М. 0 0 * * *
@midnight исто како и @daily
@ час во првата минута на секој час: 0 * * * *

Неговата употреба е многу едноставна.

@hourly корисник /home/user/scripts/molestorecordatorio.sh @monthly корисник /home/user/scripts/backup.sh @ Daily root apt-get update && apt-get -y надградба

Последно, но не и најмалку важно:

Управување со работата на Cron

датотека crontab

Заменете ја постојната датотека crontab со датотека дефинирана од корисникот

crontab-e

Уредете ја датотеката crontab на корисникот, секоја нова линија ќе биде нова задача на crontab.

crontab -l

Наведете ги сите задачи на корисникот со crontab

crontab -д

Избришете ја кроната на корисникот

crontab -в режи

Го дефинира crontab директориумот на корисникот (ова мора да има дозволи за пишување и извршување на корисникот)

корисник на crontab -u

префикс за управување со crontab на друг корисник, примери:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u корисник

Оваа алатка, како и многу други, може да се види подлабоко и подетално на:

Фала Лукаин!

Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

48 коментари, оставете ги вашите

Оставете го вашиот коментар

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

  1. Одговорен за податоците: Мигел Анхел Гатон
  2. Цел на податоците: Контролирајте СПАМ, управување со коментари.
  3. Легитимација: Ваша согласност
  4. Комуникација на податоците: Податоците нема да бидат соопштени на трети лица освен со законска обврска.
  5. Складирање на податоци: База на податоци хостирани од Occentus Networks (ЕУ)
  6. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.

  1.   Алваро Ортиз dijo

    Уф ... малку збунувачки.

  2.   тоник dijo

    * / 30 недостасува (во полето за минути) што работи на секои 30 минути ...

    1.    ерм3нда dijo

      Само што ќе го коментирав ова сè додека не решив да ги разгледам коментарите
      Овој модификатор е многу важна информација и нешто многу корисно.

      1.    КИКА dijo

        Здраво!
        Во моментов тестирам конфигурација на секои 45 минути.

        * / 45 * * * *, а инструкцијата се извршува на 45 минути на секој час И на секој час. Тоа е да се каже:

        Работи во 3:45, потоа во 4:00, 4:45, потоа во 5:00, 5:45, 6:00, 6:45 и така натаму.

        Имам нешто погрешно? Што можам да направам за да го направам само на секои 45 минути, или барем еднаш на 45 минути на секој час.

    2.    КИКА dijo

      Здраво!
      Во моментов тестирам конфигурација на секои 45 минути.

      * / 45 * * * *, а инструкцијата се извршува на 45 минути на секој час И на секој час. Тоа е да се каже:

      Работи во 3:45, потоа во 4:00, 4:45, потоа во 5:00, 5:45, 6:00, 6:45 и така натаму.

      Имам нешто погрешно? Што можам да направам за да го направам само на секои 45 минути, или барем еднаш на 45 минути на секој час.

  3.   Гасена dijo

    Здраво, супер корисни информации за да разјасните како работи cron.
    Бајти

  4.   Гасена dijo

    за *

  5.   Ловец dijo

    Одлично, благодарам што разјаснив како работи крон .. ајде да ставиме малку рака

  6.   Јаков dijo

    Оваа линија, како што разбирам, ќе биде извршена во 10:15 часот, поправи ме ако не сум во право
    Па, таму пишува 10:15 часот наутро
    15 22 * * * корисник / дом / корисник / скрипти / ажурирање.sh

  7.   Агустин dijo

    Здраво! многу добри информации.
    За да извршите скрипта на секои половина час, линијата што треба да се додаде на CronTab би била: „30 * * * * root Scrip.sh“ Нели? Ви благодарам многу!

  8.   ајде да користиме linux dijo

    Не. Ако добро се сеќавам, за тоа треба да ставите / 30 * * * * root Scrip.sh.
    Тоа е, додадете го / пред 30.
    На здравје! Павле.

  9.   Џонатан dijo

    Здраво ми се допадна твојот пост, тој е многу комплетен, но сакав да те прашам нешто.
    Имам проблеми со оваа команда и еден како "на".

    Сакам да извршам скрипта во одредено време и да ставам

    на -f /home/mi_user/Desk/script.sh 18:08 пример

    и скриптата не се извршува на екранот, односно во терминалот, дали е извршена во позадина?

    И со cron ми се случува истото, ја уредувам crontab-датотеката со "crontab -e"

    на крајот ја додавам оваа линија:

    46 19 my_user /home/mi_user/Desk/script.sh

    и не прави ништо, не го покажува сценариото.

    Некој предлог? Ви благодарам многу и извинете се за секоја непријатност

    1.    ајде да користиме linux dijo

      За да се појави терминалот, можеби ќе треба да го стартувате терминалот и да ја предадете скриптата како параметар.

      На пример:

      lxterminal -e "my_user /home/mi_user/Desktop/script.sh"

      Параметарот што треба да се користи може да варира во зависност од терминалниот емулатор што го користите.

      Се надевам дека ќе успее.

      Прегратка! Павле.

  10.   патреки dijo

    Придонесот е ценет.

    10 поени !!

    салу2 !!

  11.   Родолфо dijo

    Фала многу, многу ми помогна да разјаснам некои работи, целосно благодарам, за повеќе детали или сомнежи ќе одам на СТРАНИЦАТА, повторив честитки.

  12.   јахир dijo

    човек многу ти благодарам, ги читав и тестирав примерите. многу благодарам ... многу е разбирливо. со почит

  13.   Ovanовани dijo

    Користев ubuntu Server 12.04.2 LTS и се користи верзијата на crontab за бришење на списокот со работни места на корисникот, crontab -r (и -l, како што вели овој прирачник). Секако, станува збор за верзии.

    Од друга страна, еднаш користев само crontab и дозволете ми да креирам своја датотека за извршување, но не беше таа што се извршуваше. Оној што работи е оној во / etc / crontab. можеби некој ќе го искористи коментарот.

    П.С. (Јас пребарувам со лоцирај и каде е crontab, но тој само ја врати гореспоменатата адреса и друга датотека што е шифрирана, па ако таа што беше извршена беше онаа во / etc / crontab, но при извршување на командата crontab -e, се појави рудникот со сите работни места што ги дефинирав) каде се чуваше оваа датотека '???? Со почит Јас секогаш се најавувам со root.

  14.   Себастијан dijo

    Одлично, многу корисно !!!

  15.   mmm dijo

    Здраво, би сакал да го направам ова ………… «15 10 * * * root ifdown eth0»

    тоа е да се каже дека во одредено време мрежната картичка е исклучена ………… добро, ја ставив во crontab и не работеше …… .. што има?

    Честитки и благодарност

  16.   Мигел dijo

    Промашивте да го дефинирате „мон“ по насловот „Додај задачи на кронтаб“

    Написот е сè уште убав, cron е исклучително корисен.

  17.   ОСкар dijo

    Колку беше кул тој добар пост, прашајте ме
    Ако сакам да ги евидентирам записите оставени од извршувањето на задачите, каде можам да ги видам?

    е decdir Сакам да ја видам историјата на дејствијата направени во минатото на оваа датотека и сакам да видам кој ја изменил и датумот

    благодарение

  18.   Оскар dijo

    Сакам да ја проверам историјата на модификација на ова

    како можам да го направам тоа

    благодарение

  19.   Андрес Ледо dijo

    Добро утро,

    Мислам дека во скриптата ubuntu сте направиле грешка, сте ставиле надградба ap-get -y наместо надградба apt-get -y. (Оставивте т).

    Честитка.

    1.    ајде да користиме linux dijo

      Така е и Ви благодарам!
      Прегратка! Павле

  20.   Gabriel dijo

    Сакам да знам како да креирам cron-датотека за да можам да го наведам времето кога ќе се изврши, директориумот итн.

  21.   Валентин dijo

    Ви благодариме што ја разјаснивте операцијата и основните команди за cron, сега за малку да се забавувате.

  22.   Сандер dijo

    Кога и да барам информации за која било тема поврзана со Гну / Линукс, обиколувам и обиколувам за секогаш во 90% од случаите да го најдам најдоброто упатство за оваа голема заедница, мислам дека отсега ќе започнам тука, а потоа на друго место.

    Со почит

    1.    ајде да користиме linux dijo

      Благодарам Сандер! Прегратка! Павле.

  23.   дарио dijo

    dom = ден во месецот
    dow = ден во неделата
    полесно е ако се здружиш

  24.   Pascual dijo

    Ви благодарам многу, многу комплетно и добро објаснето.

  25.   Максилија dijo

    Ова е истото што ни го даде мојот наставник по оперативни системи, јас не менувам ништо, сега гледам зошто часот е толку лош. -. Па, ова е исто како домашните задачи xD

  26.   Marcelo dijo

    Проценето,

    Пребарување, дали може да се ограничи времетраењето на една задача?
    На пример, имам задача што се повторува на секои 5 минути, со повторување ако таа задача е сè уште активна, убијте ја и трчајте повторно.

    Благодарам,
    Марсело.-

    1.    ајде да користиме linux dijo

      Здраво, Марсело!

      Мислам дека би било подобро ако го поставите ова прашање во нашата повикана услуга за прашања и одговори Прашајте FromLinux за да може целата заедница да ви помогне со вашиот проблем.

      Прегратка, Пабло.

  27.   aj dijo

    добар пост
    Која е наредбата по терминал за додавање задачи на crontab (без внесување на crontab и нивно додавање рачно со 'crontab -e' или замена на crontab со друг crontab со 'crontab датотека').
    Идејата е да се создаде надворешна скрипта за да се додадат задачите во crontab
    Благодарам

    1.    Дејвид dijo

      ми се чини дека можеш да користиш 'ехо' што сакаш да додадеш '| мачка >> 'патека кронотаб (/ итн / кронотаб)' «

  28.   Рафаел Вера dijo

    Како точно би се извршувал израз на секои 3 дена

  29.   Хозе Антонио dijo

    Еј.

    Имам проблем да извршам работа со cron.

    Ја извршувам следнава задача со cronta -e:

    01 * * * * root /home/user/script/myfile.sh

    но задачата не е завршена. Проверив дека myfile.sh има дозвола за извршување и дека корисникот што го извршува е root.

    Јас ја извршувам истата задача во / etc / crontab и откако ја рестартирав услугата, не ми одговара ниту мене.
    Содржината на myfile.sh е команда што ажурира ДБ и ако ја стартувам во конзолата работи.
    некаква идеја што може да биде проблемот?

    1.    Фред dijo

      Корисникот на базата на податоци можеби ги нема сите дозволи и прво ќе мора да ги извезувате променливите на животната средина од вашиот мотор на базата на податоци.
      На пример, во db2 оваа линија оди до почетокот на сценариото
      . / дома / db2inst1 / sqllib / db2profile

      Друга причина може да биде дека скриптата бара поврзување со базата на податоци, направете ја врската со базата на податоци во скриптата

  30.   LA3 dijo

    Не знаев дека треба да ја рестартирам трошката, се борев со ова веќе некое време

  31.   Кенија dijo

    Тие ќе знаат како да посочат дека задачата е извршена на крајот од месецот, во назначеното време .. деталот е во тоа што не можам да постигнам од каде знам дека трае последниот ден од секој месец .. ??? Морав да ги запишувам еден по еден, но кога ќе дојде крајот на месец февруари дека е двојно, комплицирано ми е ..

  32.   Исус dijo

    добар ден!!

    Како да го запрам процесот што се извршува во crontab?

  33.   Исус dijo

    процес *

  34.   Julianna dijo

    Можеби можеш да ми помогнеш? eu tenho um скрипта од автор на Минха, што не работи без кронтаб! jб dei сите дозволи, нема приватен специфичен крон или корисник што може да го изврши - најмногу ништо не се случува! Би сакал да знам дали можеш да ми помогнеш, некои други работи не работат без крон! Vlws

  35.   Антокс dijo

    Како би поставиле задача да извршувате секој последен ден од месецот (денови: 31-30-28)?

  36.   тферчо dijo

    Како што веќе знаете, командата su се користи за промена на корисник во конзола. Ако така ја користам командата su: "твојот корисник" смени корисник, но без соодветни поставки на "корисник", ако извршувам su како: "su - корисник" промена на корисник со вчитување на корисничките поставки. Со cron го означувам корисникот, но како да ги вчитам поставките на овој корисник?

  37.   Rob dijo

    И, ако сакам да го запрам?

  38.   Реџи dijo

    Здраво,
    Не знам што правам погрешно, но ги следам чекорите и ништо не е погубено. Сум пробал:
    59 * * * * / usr / bin / gedit
    * * * * * / usr / bin / gedit
    * * * * * root / usr / bin / gedit
    * * * * * usr / bin / test.sh
    * * * * * root usr / bin / test.sh

    и воопшто ништо. Не извршува ништо. Рестартирав и сè.

  39.   Феркос dijo

    многу ти благодарам