Paano Mag-iskedyul ng Mga Gawain sa Linux gamit ang Cron at Crontab

Paano Mag-iskedyul ng Mga Gawain sa Linux gamit ang Cron at Crontab

Alam mo ba na Blade Runner ay nakatakda sa 2019? Tatlong taon na mula ngayon! Hindi na banggitin Balik sa Kinabukasan 2 , kung saan nag-time-travel sila pasulong sa 2015. Gayunpaman wala kaming mga lumilipad na kotse at walang mga replika sa amin (sa pagkakaalam ko).





Madaling makaramdam ng pagkabigo sa kasalukuyang teknolohiya kapag inihambing namin ito sa kathang-isip na paglalarawan ng hinaharap. Gayunpaman, sa mga panahong ito ang ating mga telepono, computer, at kahit mga bahay ay maaaring gumawa ng mga kamangha-manghang bagay. Ang kakayahang i-automate ang mga gawain ay isa sa mga ito.





Ang bawat gumagamit ng Linux ay maaaring makinabang mula sa pag-iiskedyul ng mga gawain, kung nauugnay sa system (tulad ng paglilinis ng mga lumang log at pag-update ng mga pakete ) o paghahatid sa gumagamit (pagsuri sa email, pag-download ng mga podcast ...). Ang mga gumagamit ng Windows ay nagkaroon ng Task scheduler mula pa noong Windows 95. Ang utility na gumagawa ng parehong trabaho sa Linux ay tinatawag na cron, at dito namin ipaliwanag kung paano ito magagamit.





kung paano magbahagi ng pag-play sa ps5

Ano ang Cron?

Ang Cron ay isang serbisyo sa system na tumatakbo sa likuran, sinusuri ang mga naka-iskedyul na gawain, at isinasagawa ang mga ito kung may mahahanap ito. Ang mga gawain - na tinatawag ding 'cron jobs' - ay tinukoy sa mga espesyal na file ng pagsasaayos (crontabs), na sinusuri ng cron bawat minuto. Maraming mga bersyon ng cron ang matatagpuan sa iba't ibang mga pamamahagi ng Linux. Halimbawa, tinawag ang tinidor ng cron ng Fedora cronie , at meron din fcron , bcron , at dcron . Ang ilan ay mayroong labis na tampok, habang ang iba ay higit na nakatuon sa seguridad, ngunit ang lahat ay batay sa iisang ideya.

Ang gabay na ito ay nakasulat para sa vixie-cron, na kung saan ay ang pinakalaganap na bersyon ng cron at ang makikita mo sa Ubuntu at mga derivatives nito. Habang ang karamihan sa mga tagubilin ay nalalapat din sa iba pang mga pagpapatupad ng cron, maaaring may kaunting pagkakaiba, kaya suriin ang kanilang mga manwal kung magpasya kang lumipat.



Ano ang isang Crontab?

Kung seryoso ka sa pamamahala ng iyong oras, marahil ay mayroon kang isang kalendaryo ng ilang uri - isang app o hindi bababa sa isang piraso ng papel. Ang Crontab ay katulad ng kalendaryo ng iyong computer. Hawak nito ang impormasyon tungkol sa mga naka-iskedyul na gawain, na sinasabi sa cron kung aling mga utos ang tatakbo sa anong oras.

Sa katunayan, maraming mga crontab ang nasa iyong system. Ang bawat gumagamit ay may kanya-kanyang crontab, kasama ang root (ang administrator). Ang mga crontab ng gumagamit ay nakaimbak sa





/var/spool/cron/crontabs/

. Ang

crontab -l

ililista ng utos ang crontab file para sa kasalukuyang gumagamit. Maaari mong suriin ang root crontab kasama





sudo crontab -l

.

Bilang karagdagan, mayroong file ng system crontab

/etc/crontab

na ginagamit para sa mga gawain sa buong system. Karaniwan, kumukuha sila ng form ng maipapatupad, mga script na pagmamay-ari ng ugat na inilagay

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, at

/etc/cron.monthly/

mga folder, at sa ilang mga pamamahagi, ang

/etc/cron.d/

folder din. Sa pangkalahatan, hindi mo dapat harapin ang mga gawaing ito, dahil ang karamihan sa mga ito ay awtomatikong nilikha ng mga naka-install na application.

Paano Mag-iskedyul ng Mga Gawain kasama si Cron

Simple lang ang tunog nito: upang mag-iskedyul ng mga gawain, idagdag lamang ang mga ito sa iyong crontab. Dahil ang crontab ay isang espesyal na file ng pagsasaayos, hindi inirerekumenda na i-edit ito nang manu-mano. Sa halip, gamitin ang

crontab -e

utos Upang i-edit ang mga root o crontab ng iba pang mga gumagamit, patakbuhin ang utos na may mga pribilehiyong pang-administratibo at idagdag ang kanilang username pagkatapos ng -u pagpipilian:

sudo crontab -u root -e
sudo crontab -u username -e

Ang crontab file ay may dalawang seksyon. Naglalaman ang una ng mga variable ng kapaligiran na awtomatikong nai-set up. Maaari mong ligtas na baguhin ang mga variable ng PATH, HOME, at SHELL, at baguhin ang variable ng MAIL.

Ang pangalawang bahagi ng file ay ang aktwal na 'timetable' kasama ang iyong nakaiskedyul na mga gawain. Ang bawat gawain ay sumasakop sa isang linya (hilera) sa talahanayan, na may mga haligi na kumakatawan sa mga sumusunod na halaga:

Upang matagumpay na maiiskedyul ang mga gawain, kailangan mong malaman nang kaunti tungkol sa crontab syntax:

  • Ang mga numero ay dapat na mga integer (buong numero), at maaari mong gamitin ang asterisk (*) sa alinman sa mga haligi bilang isang wildcard, nangangahulugang 'bawat minuto / araw / buwan ...'.
  • Sa haligi ng 'Araw ng Buwan', mag-ingat na hindi magtakda ng isang petsa na hindi nangyari sa buwan na tinukoy sa haligi ng 'Buwan' (halimbawa, ika-30 ng Pebrero).
  • Ang parehong mga 'Buwan' at 'Araw ng Linggo' na mga haligi ay tumatanggap ng mga maikling pangalan para sa buwan at araw, ayon sa pagkakabanggit, at hindi sila sensitibo.
  • Sa haligi na 'Araw ng Linggo', parehong 0 at 7 ang tumayo para sa Linggo. Ang haligi ng 'Oras' ay nangangailangan ng format na 'oras ng militar' (24-oras), ngunit hindi mo magagamit ang numero 24 - sa halip, 0 ay nangangahulugang alas-12 ng umaga Ito ay dahil nagsisimula ang mga halaga para sa minuto, oras at araw ng linggo sa 0 sa halip na 1.
  • Ang mga segundo ay hindi suportado, kaya't hindi ka maaaring mag-iskedyul ng isang gawain sa isang partikular na segundo.

Ang maaari mong gawin ay iiskedyul ang mga saklaw na may kasamang oras gamit ang isang gitling (14-22 sa ilalim ng 'Mga Oras' ay magpapatuloy sa gawain mula 2 pm hanggang 10 pm), o magpatakbo ng isang gawain nang maraming beses sa pamamagitan ng pagtukoy sa isang listahan na pinaghiwalay ng koma (1, 3,5 sa ilalim ng 'Araw ng Linggo' ang tatakbo sa gawain sa Lunes, Miyerkules, at Biyernes).

Samantala, ang mga halagang hakbang, ay kinakatawan ng isang forward slash (/), at ipinapahiwatig nito ang dami ng mga laktawan sa loob ng isang saklaw; halimbawa, 3-20 / 3 sa ilalim ng 'Mga Oras' ay tatakbo sa bawat tatlong oras mula 3:00 am hanggang 8 pm. Kapaki-pakinabang ito kapag nais mong ulitin ang mga gawain tuwing X na oras, dahil maaari mong pagsamahin ang isang asterisk at isang hakbang (* / X). Maaari mong pagsamahin ang mga saklaw sa mga listahan at hakbang sa mga saklaw hangga't gumagamit ka ng mga numero. Sa madaling salita, hindi pinapayagan ang mga kumbinasyon tulad ng 'jan-mar' o 'Tue, Fri-Sun'.

Bilang kahalili, sa halip na magtakda ng isang halaga para sa bawat haligi, maaari mo lamang isulat ang @weekly, @yearly, @monthly, @daily, o @ hourly sa simula ng isang hilera, na sinusundan ng isang utos. Nakaiskedyul na tulad nito, tatakbo ang mga gawain sa unang posibleng pagkakataon, kaya't @weekly tatakbo sa hatinggabi sa unang araw ng linggo. Kung nais mong magpatakbo agad ng isang gawain kapag nagsimula ang system (muling), gamitin ang utos na @reboot.

Sa halimbawang ito, nakaiskedyul kami ng isang backup araw-araw sa 08:20 at 20:20. Awtomatikong nagbabago ang wallpaper tuwing tatlong araw sa 19:00, at susuriin ng isang script ang mga bagong podcast tuwing Lunes ng 10:20 at 20:20. Ang isang paalala sa kaarawan ay nakatakda sa Marso 25 at tumatakbo ito bawat 30 minuto sa loob ng tinukoy na time-frame. Sa wakas, isang script ang sumusuri sa email bawat 15 minuto mula 8 hanggang 20, ngunit sa araw ng trabaho lamang. Malaya kang ayusin ang iyong crontab na may mga puwang at tab sa pagitan ng mga haligi, ngunit hindi sa loob ng mga ito (huwag maglagay ng mga puwang sa pagitan ng mga kuwit, gitling, at slash).

Kung ang lahat ng ito ay masyadong kumplikado, huwag magalala - maaari kang laging umasa sa internet. Kagamitan tulad ng Tagabuo ng Crontab , Crontab.guru , at tulungan ka ng Corntab na lumikha ng mga trabaho sa cron nang hindi alam ang anumang syntax ng crontab. Ipinapakita nila sa iyo kung kailan ang trabaho ay susunod na tatakbo, at nagbibigay ng mga template para sa karaniwang ginagamit na mga expression. Ang Crontab.guru ay ang pinakamahusay sa pangkat dahil pinapayagan ka nitong live-test ang crontab syntax, upang makita mo kaagad kung paano makakaapekto ang iyong mga pagbabago sa iskedyul.

Paano Suriin Kung Naipatupad ang Mga Trabaho ng Cron

Si Cron ay dapat na tumakbo nang tahimik sa likuran at hayaan kang magtrabaho na hindi nagagambala habang inaalagaan ang iyong mga gawain. Ngunit paano mo matiyak na gumagana talaga ito?

Ang Cron ay may built-in na tampok sa pag-abiso sa email, ngunit nangangailangan ito ng pag-set up ng kahit isang simpleng lokal na mail server. Hindi gaanong maraming mga gumagamit ng bahay ang nais na i-configure ito, at hindi maraming mga pamamahagi ang nagbibigay nito bilang default (halimbawa, ang Ubuntu ay hindi). Ang pinakamabilis na paraan upang mag-check up sa cron ay i-scan ang log ng system gamit ang utos na ito:

cat /var/log/syslog | grep -i cron

Ginagawa ng pagpipiliang -i ang aming query na case-insensitive. Posible na ang cron ay magkakaroon ng sarili nitong log file saanman

/var/log/

, kaya tingnan doon kung nabigo ang utos na ito upang makabuo ng mga kapaki-pakinabang na resulta.

Kung kailangan mong i-save ang output ng isang partikular na trabaho sa cron, maaari mo itong i-redirect sa isang file. Ibigay ang landas at ang pangalan ng file sa huling haligi ng iyong crontab, pagkatapos ng utos na nais mong patakbuhin:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Ang paggamit ng isang solong> simbolo ay magpapalit ng file sa tuwing tumatakbo ang utos. Upang maiwasan ito, gamitin ang >> sa halip - idinugtong nito ang output sa umiiral na file.

Paano Kung Hindi Gumagana ang Cron?

Maaaring mangyari na nagdagdag ka ng ilang mga gawain, nasuri ang mga tala ng system, at nalaman na hindi sila naisakatuparan ayon sa nararapat. Narito ang ilang mga bagay na dapat mong isaalang-alang - at mag-ingat tungkol sa - kapag sinusubukan na ayusin ang problema.

Tumatakbo ba ang serbisyo ng cron?

Tulad ng alam mo, ang cron daemon ay dapat na tumatakbo sa background. Siguraduhin na ito talaga ang kaso. Ang serbisyo ay maaaring tawaging crond o cron lamang.

Para sa mga pamamahagi gamit ang systemd:

systemctl status cron

Para sa mga pamamahagi gamit ang Upstart:

service cron status

Kung ang iyong pamamahagi ay gumagamit ng 'lumang' System V init diskarte, ilista ang lahat ng mga serbisyo sa:

microsoft word kung paano ipasok ang isang linya
initctl list

at tingnan kung nakalista ang cron.

Pinapayagan ka ring magkaroon ng isang crontab file?

Suriin ang iyong

/etc

folder para sa mga file na pinangalanan

cron.allow

at

cron.deny

. Sa Ubuntu, hindi dapat mayroon, alinman pinapayagan ang lahat ng mga gumagamit na pamahalaan ang mga trabaho sa cron. Gayunpaman, kung mayroong isang

kung paano ititigil ang isang programa sa linux terminal
cron.allow

file, dapat maglaman ito ng iyong username. Sa kabaligtaran, kung ang

cron.deny

umiiral na file, ang iyong username ay hindi dapat kasama rito. Iniwan ang

cron.deny

Ang file blank ay nangangahulugang root lamang at mga gumagamit na nakalista sa

cron.allow

maaaring magkaroon ng mga crontab file.

Naitakda nang maayos ang iyong mga variable?

Awtomatikong itinatakda ng Crontab ang iyong variable na SHELL sa

/bin/sh

. Gayunpaman, kung ang iyong shell ng pagpipilian ay isda o bash, dapat mong baguhin ang variable ng SHELL

. Gayundin, ang variable ng PATH ay naglalaman lamang ng ilang mga direktoryo bilang default. Dito hinahanap ng crontab ang mga utos ng Linux. Kung ang iyong cron job ay nabigo upang tumakbo, maaaring dahil hindi makita ng crontab ang utos na iyong ginamit. Upang maiwasan ito, magdagdag ng mga direktoryo na naglalaman ng mga utos sa variable na PATH, na pinaghihiwalay ng mga colon:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Kung hindi mo nais na i-edit ito sa iyong crontab, maaari mong tukuyin ang mga variable na ito sa script na nais mong patakbuhin bilang isang cron job.

Sa punto ba ang pag-format ng iyong crontab?

Ang Crontab syntax ay hindi eksaktong makinis na paglalayag. Kahit na i-verify mo ito sa mga online tool na nabanggit dati, ang isang maliit na pagkakamali ay mapipigilan pa rin ang cron mula sa pagpapatupad ng iyong mga trabaho. Mag-ingat sa:

  • magdagdag ng isang walang laman na linya sa dulo ng crontab file
  • makatakas sa% sign na may isang backslash kung kasama ito ng iyong utos
  • sumulat ng mga komento bilang magkakahiwalay na linya na nagsisimula sa #. Huwag magsulat ng mga komento sa parehong linya tulad ng mga variable ng kapaligiran, o sa tabi ng mga utos ng trabaho sa cron.

Kailangan Mo Bang Gumamit ng Terminal?

Talagang hindi. Ang mga gumagamit ng KDE ay maaaring mag-iskedyul ng mga trabaho sa cron kasama ang KCron, na naa-access mula sa Mga Setting ng System> Tagapag-iskedyul ng Gawain modyul Gamit ang isang prangkahang interface na nagbibigay-daan sa iyong pumili at mai-tweak ang lahat sa loob lamang ng ilang mga pag-click sa mouse, ang KCron ay isang kasiyahan na gamitin.

Kung mas gusto mo ang GNOME, kung gayon Iskedyul ng GNOME ay para sa iyo. Ang diskarte ay katulad, bagaman ang interface ay, inaasahan, bahagyang naiiba. Nag-aalok ito ng isang advanced mode para sa mga mahusay na grained na pagbabago, at mayroong isang panel applet kung saan maaari mong pamahalaan ang mga gawain nang direkta.

Dapat mong magkaroon ng kamalayan ng iba pang mga solusyon, tulad ng Crontab-UI at Minicron . Mas angkop ang mga ito para sa mga gumagamit na namamahala ng maraming mga makina at mga trabaho sa cron, at ang isa sa kanilang pinakahusay na tampok ay ang interface na batay sa web.

Mayroon bang Mga Alternatibong Cron?

Habang ang cron ay karaniwang pamantayan ng tagapag-iskedyul ng gawain para sa Linux, tiyak na hindi lamang ito ang isa. Ang sa utos ay perpekto para sa mabilis, isang beses na mga trabaho na maaaring maiiskedyul mula mismo sa command-line, nang walang mga espesyal na file ng pagsasaayos. Kung kailangan mo pa, meron GNUbatch , na nagpapakilala sa paniwala ng pagtitiwala. Sa GNUbatch, maaari kang magtakda ng mga tukoy na kundisyon para sa bawat trabaho, o gumawa ng isang naka-iskedyul na gawain na nakasalalay sa isang nakaraang trabaho. Isang bagay na katulad ay maaaring makamit sa mga timer ng system . Bagaman hindi gaanong praktikal na i-configure kaysa sa cron, maaalala ng mga timer ng systemd kung hindi nakuha ng isang gawain ang iskedyul nito habang ang computer ay naka-off, at patakbuhin ito sa susunod na ito ay nasa.

Ito ay isang bagay na hindi magawang mag-isa ng cron. Tulad ng naturan, angkop ito para sa mga server at computer na patuloy na tumatakbo, ngunit hindi ito papatupad ng isang trabaho na naka-iskedyul habang naka-off ang computer. Ito ay kung saan anacron nagpatugtog. Ito ay technically hindi isang 'alternatibong' o isang kapalit para sa cron. Sa halip, ang anacron ay nakakumpleto ng cron at dapat gamitin sa tabi nito, na kung saan ay ang kaso sa maraming pamamahagi ng Linux, kabilang ang mga produkto na batay sa Ubuntu at Ubuntu. Ang mga log ng Anacron kapag ang isang gawain ay huling naipatupad, at suriin kung mayroong anumang hindi nasagot na mga pagkakataon habang pinapatay ang system. Patakbuhin nito ang mga ito kapag binuksan mo muli ang computer, ngunit ang bawat gawain ay maaaring maisagawa nang isang beses bawat araw.

Ang ilang mga bersyon ng cron, tulad ng fcron, ay nag-aalok ng mga tampok ng anacron bilang default. Maaaring gusto ng mga advanced na gumagamit na tingnan Hcron o SuperCron , na nagdudulot ng maraming mga pagpapabuti sa pangunahing mga pagpapaandar ng cron, ngunit medyo hamon din upang pamahalaan.

Ano naman sayo Paano mo aayusin ang iyong mga digital na gawain? Aling mga gawain ang naiiskedyul mo sa Linux? Ibahagi ang iyong mga kwento at tip para sa paggamit ng cron sa mga komento.

Credit sa Larawan: board ng iskedyul ni Gonzalo Aragon sa pamamagitan ng Shutterstock

Magbahagi Magbahagi Mag-tweet Email 12 Mga Site ng Video na Mas Mahusay Kaysa sa YouTube

Narito ang ilang mga kahaliling mga site ng video sa YouTube. Ang bawat isa ay sumasakop sa isang iba't ibang mga angkop na lugar, ngunit nagkakahalaga ng pagdaragdag sa iyong mga bookmark.

Basahin Susunod
Mga Kaugnay na Paksa
  • Linux
  • Linux
Tungkol sa May-akda Ivana Isadora Devcic(24 na Artikulo Nai-publish)

Si Ivana Isadora ay isang freelance na manunulat at tagasalin, manliligaw sa Linux at KDE fangirl. Sinusuportahan at isinusulong niya ang libre at bukas na mapagkukunan ng software, at palagi siyang naghahanap ng mga bago, makabagong app. Alamin kung paano makipag-ugnay dito .

Higit pa Mula sa Ivana Isadora Devcic

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe