გახსენით php ini. WordPress-ის ატვირთვის ლიმიტი გიქმნის პრობლემას? აი, როგორ უნდა გამოსწორდეს. MAMP-ზე ჩამოტვირთვის ლიმიტის გაზრდა

Unix-ის მსგავს ოპერაციულ სისტემებში შესაძლებელია მომხმარებლის პროგრამების გაშვება მომხმარებლის მიერ მითითებულ დროს. ამისათვის გამოიყენება cron task scheduler, რომელიც იღებს ინსტრუქციებს მომხმარებლებისგან და ასრულებს ნებისმიერ დავალებას მიღებული სკრიპტების მიხედვით. ჩვენს კლიენტებს შეუძლიათ გამოიყენონ ეს ფუნქცია პერიოდული ამოცანების შესასრულებლად.

როგორ დააკონფიგურიროთ cron ISPmanager 5 პანელის გამოყენებით

დააყენეთ cron სკრიპტები განყოფილებაში პანელის მეშვეობით სისტემა → განრიგი

ახალი ამოცანების დასამატებლად დააწკაპუნეთ "შექმნა". გაიხსნება ინტერაქტიული cron სკრიპტის რედაქტორი:


მინდორში "გუნდი"მიუთითეთ სკრიპტის სრული გზა ან ბრძანება, რომელიც უნდა შესრულდეს (ამისთვის სისტემის ბრძანებებისრული გზა შეიძლება არ იყოს მითითებული). მაგალითად, საიტის ძირში მდებარე script.pl ფაილის სრული გზა ასე გამოიყურება:

/var/www/u12345/data/www/script.pl

დარწმუნდით, რომ ფაილს, რომლის გაშვებაც გსურთ, აქვს წაკითხვის+შესრულების (r+x) ნებართვა ფაილის მფლობელისთვის. თქვენ შეგიძლიათ შეცვალოთ ნებართვები, რაც გჭირდებათ ბრძანებით:

Chmod 750 script.pl

მინდორში "აღწერა"შეგიძლიათ გააკეთოთ შენიშვნა, რათა არ დაგავიწყდეთ რას აკეთებს ეს სკრიპტი

ბაზა- თქვენ ირჩევთ ერთ-ერთს ჩამოთვლილი ვარიანტებირიგში "გაიქცე": ყოველ საათში, ყოველდღიურად, ყოველკვირეულად, ყოველთვიურად, ყოველწლიურად, გაშვებისას.

ექსპერტი - მოქნილი დაყენებადაწყების სიხშირე: წუთები, საათები, თვეების დღეები, თვეები, კვირის დღეები (0 - კვირა). შეყვანის ფორმატი: * - ყველა წუთი; */n - ყოველ n წუთში; n - n წუთის დასაწყისიდან; a,b,c-e - a,b,c,d,e წუთების დასაწყისიდან

გაშვების სიხშირის დაყენების ძირითადი რეჟიმის მაგალითები:



საექსპერტო რეჟიმის მაგალითები გაშვების სიხშირის დასაყენებლად:

  • შეასრულეთ დავალება საათში ერთხელ 05 წუთში

  • დაასრულეთ დავალება ორშაბათს 1:15 საათზე

  • დაასრულეთ დავალება 5 აპრილს ყოველწლიურად 0 საათზე 1 წუთში

როდესაც ყველა ველი ივსება (გარდა "აღწერა", ეს არის სურვილისამებრ), დააწკაპუნეთ "კარგი".

სკრიპტის შესრულების შესახებ ანგარიშების გაგზავნა ელექტრონული ფოსტით

შეტყობინებების დასაყენებლად, მიუთითეთ ელფოსტა, რომელზეც გაიგზავნება შეტყობინებები სკრიპტის შესრულების შესახებ. ამისათვის გადადით განყოფილებაში "განრიგი"


დააჭირეთ ღილაკს "პარამეტრები"და მინდორში « ელფოსტის მისამართი» მიუთითეთ ელფოსტა, რომელზეც უნდა გაიგზავნოს შეტყობინებები სკრიპტის შესრულების შესახებ.


სკრიპტის პარამეტრებში დარწმუნდით, რომ გვერდით არის ყუთი „არ გამოაგზავნოთ ანგარიში ელფოსტით“.

როგორ დავაყენოთ cron ssh-ზე

Cron სკრიპტების კონფიგურაცია ხდება მეშვეობით unix ჭურვი. დაადგინეთ რომელი პროგრამების გაშვება გჭირდებათ და გაარკვიეთ სერვერის დისკზე მათკენ მიმავალი სრული გზები. ამისათვის გამოიყენეთ cd ბრძანება, რათა გადახვიდეთ დირექტორიაში, სადაც მდებარეობს პროგრამა, რომელსაც თქვენ აწარმოებთ და გაიგეთ ამ დირექტორიაში მიმავალი სრული გზა pwd ბრძანებით. ბილიკი შეიძლება ასე გამოიყურებოდეს - /home/u12345/scripts/script.pl.

დარწმუნდით, რომ ფაილს აქვს წაკითხვის+შესრულების (r+x) ნებართვები მომხმარებლისთვის, რომელსაც აწარმოებთ სკრიპტს. თქვენ შეგიძლიათ შეცვალოთ ნებართვები, რაც გჭირდებათ ბრძანების გამოყენებით chmod 750 script.pl

750 - სრული უფლებებიფაილის მფლობელი, ჯგუფი - კითხვა და შესრულება, სხვები - წვდომა აკრძალულია.

გაუშვით ბრძანება კრონტაბი -ე – განრიგი შეცვლის იმ მომხმარებლის გეგმას, რომლის სახელითაც აწარმოებთ cron-ს. როდესაც პირველად გაუშვით, მოგეთხოვებათ აირჩიოთ ტექსტური რედაქტორი. აირჩიეთ რედაქტორი, რომელსაც უკვე იცნობთ. მაგალითად, ჩვენ გადავხედავთ vi ტექსტის რედაქტორს. ბრძანების შეყვანის შემდეგ თქვენ შეხვალთ ტექსტის რედაქტორი vi (n), სადაც შეგიძლიათ შეიყვანოთ სკრიპტის ტექსტი cron-ისთვის.

სწრაფი მითითება vi რედაქტორზე:

  • ტექსტის ჩასასმელად დააჭირეთ i, შემდეგ შეიყვანეთ ტექსტი
  • სიმბოლოების წასაშლელად დააჭირეთ ESC და შემდეგ აკრიფეთ x
  • ცვლილებების შენახვის გარეშე vi-დან გასასვლელად დააჭირეთ ESC და შემდეგ აკრიფეთ:q!
  • შესანახად და გასასვლელად დააჭირეთ ESC და შემდეგ ჩაწერეთ:wq

Cron სამუშაოები იწერება თითო სტრიქონზე. ყოველი ხაზის შემდეგ, მათ შორის ბოლო ან მხოლოდ ერთის შემდეგ, აუცილებლად დააჭირე enter-ს, წინააღმდეგ შემთხვევაში ამოცანები არ იმუშავებს.

დავალება სტრიქონს ჰგავს. დასაწყისში არის ხუთი აუცილებელი ველი, გამოყოფილი ინტერვალით, რათა მიუთითოთ სამუშაოს სიხშირე. შემდეგი არის ბრძანება გასაშვებად:

ველი1 ველი2 ველი3 ველი4 ველი5 გუნდი

პირველი ხუთი ველის მნიშვნელობები:

  • წუთი - რიცხვი 0-დან 59-მდე
  • საათი - რიცხვი 0-დან 23-მდე
  • თვის დღე - ნომერი 1-დან 31-მდე
  • თვის რიცხვი წელიწადში - რიცხვი 1-დან 12-მდე
  • კვირის დღე - რიცხვი 0-დან 7-მდე (0-მზე,1-ორშაბათი,2-სამ,3-ოთხ,4-ხუთ,5-პარ, 6-შაბათი, 7-მზე)

თითოეული კონკრეტული პარამეტრისთვის შეგიძლიათ მიუთითოთ მძიმით გამოყოფილი რამდენიმე მნიშვნელობა. მაგალითად, თუ დაწერთ 1,4,22 ველში „საათები“, მაშინ დავალება იმუშავებს დილის 1 საათზე, 4 საათსა და 22 საათზე. თქვენ შეგიძლიათ დააყენოთ ინტერვალი - 4-9 ნიშნავს, რომ პროგრამა უნდა დაიწყოს ყოველ საათში 4-დან 9 საათის ჩათვლით.

სიმბოლო «*» ნიშნავს "ყველა შესაძლო მნიშვნელობას". ვარსკვლავი «*» "საათების" ველში ნიშნავს "რბენა ყოველ საათში". სიმბოლო «/» ემსახურება დავალების დამატებითი სიხშირის მითითებას. მაგალითად, "*/3""საათების" ველში ნიშნავს ყოველ სამ საათში. თუ განსაზღვრულია ველები „თვიანი დღე“ და „კვირის დღე“ (არა უდრის *), მაშინ ასეთი დავალება შესრულდება კვირის თითოეულ მითითებულ დღეს, თვის დღის მიუხედავად.

13 13 10 * 5 /home/u12345/script.pl

ასეთი ბრძანება შესრულდება 13:13 საათზე ყოველ პარასკევს და თვის ყოველ 10-ში, თუნდაც 10 არ ემთხვეოდეს პარასკევს.

Cron საშუალებას გაძლევთ გაუშვათ სკრიპტები, როდესაც სისტემა ჩაიტვირთება - მიუთითეთ @reboot სკრიპტის დასაწყისში გაშვების სიხშირის ნაცვლად:

@reboot /home/u12345/script.pl

ასე გამოიყურება მარტივი cron სკრიპტი:

0 */3 * * 2.5 /home/u12345/script.pl

სკრიპტი /home/u12345/script.pl ავტომატურად იმუშავებს ყოველ სამ საათში სამშაბათს და პარასკევს. შეიყვანეთ ასეთი სკრიპტი vi რედაქტორში, გამოდით და შეინახეთ რედაქტირების შედეგები. დავალება შესრულდება მითითებული სიხშირით, თუ შეცდომა არ დაუშვით.

Cron აცნობებს შეცდომებს სკრიპტში:

/tmp/crontab.xxxxxxx: 1 ხაზი, 9 სიმბოლო crontab: ინსტალაცია ახალი crontab "/tmp/crontab.xxxxxxx":1: ცუდი წუთი crontab: შეცდომები crontab ფაილში, ვერ ინსტალაცია გსურთ ხელახლა სცადოთ იგივე რედაქტირება?

თქვენ შეგიძლიათ ნახოთ cron-ში უკვე დაინსტალირებული სკრიპტების სია crontab -l ბრძანების გამოყენებით:

Bash-2.05b$ crontab -l 0 */3 * * 2.5 /home/u12345/script.pl

თუ პროგრამის გაშვება გჭირდებათ დღეში ერთხელ, აირჩიეთ ღამის დრო. დილის 2-დან 8 საათამდე სერვერებზე დატვირთვა მინიმალურია. თუ პროგრამა მოითხოვს დიდი რესურსები, ღამით უფრო სწრაფად დასრულდება, ვიდრე დღისით.

cron-ის გამოყენების მაგალითები

  • შეასრულეთ დავალება საათში ერთხელ 0 წუთის განმავლობაში - 0 */1 * * * /home/u12345/script.pl
  • შეასრულეთ დავალება ყოველ სამ საათში 0 წუთში - 0 */3 * * * /home/u12345/script.pl
  • დაასრულეთ დავალება ორშაბათს 1:15 საათზე - 15 1 * * 1 /home/u12345/script.pl
  • დაასრულეთ დავალება 5 აპრილს ყოველწლიურად 0 საათზე 1 წუთში - 1 0 5 4 * /home/u12345/script.pl
  • შეასრულეთ დავალება ყოველთვიურად 1-ლი დილის 6:10 საათზე - 10 6 1 * * /home/u12345/script.pl

როგორ გავუშვათ PHP სკრიპტი გრაფიკზე

სკრიპტების გაშვება PHP ენაგანსაზღვრული დროსასურველი სიხშირით PHP-CLI თარჯიმნის გამოყენებით ასე შეიძლება გამოიყურებოდეს სკრიპტის გაშვების ბრძანება - /usr/bin/php -q $HOME/script.php> /dev/null 2>&1.

ვინაიდან ყველა PHP პროგრამას არ შეუძლია იმუშაოს SAPI CLI-ით წინასწარი ცვლილების გარეშე, შეგიძლიათ მათი გაშვება wget-ის საშუალებით:

/usr/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

მიუთითეთ კომუნალური სერვისების გზა მთლიანად, ძირიდან ფაილური სისტემა. თუ სკრიპტი იყენებს მოთხოვნას, შეიტანეთ ფუნქციები, რომლებიც მიუთითებს შედარებითი გზები- სკრიპტის შესრულების დასაწყისში გამოიყენეთ chdir() ფუნქციის გამოძახება, რომელიც დააყენებს მიმდინარე სამუშაო დირექტორიას. ან გამოიყენეთ ჩაშენებული cd ბრძანება.

@reboot cd /home/u12345 && ./script.pl

როგორ მივიღოთ შეცდომის შეტყობინებები Cron-ის მიერ გაშვებული პროგრამებიდან

თქვენ შეგიძლიათ მიიღოთ შეცდომის შეტყობინებები პროგრამების გაშვებისას, რათა სრულად აკონტროლოთ პერიოდულად გაშვებული სამუშაოების შესრულება. ამისათვის მოათავსეთ შემდეგი ხაზი cron სკრიპტის დასაწყისში:

[email protected], სადაც "[email protected]" არის ელფოსტის მისამართი, სადაც შეტყობინებები გაიგზავნება. მრავალი მისამართის დასაზუსტებლად, შეიყვანეთ ისინი გამოყოფილი მძიმეებით.

თქვენ მიიღებთ ელ.წერილს, რომელშიც ნათქვამია, თუ რას გამოსცემს სკრიპტები ყოველ ჯერზე, როდესაც cron ასრულებს ამოცანას. თუ თქვენ დაწერთ სკრიპტს, რომელიც დაბეჭდავს ხაზს "Hello, world" და გაუშვით cron-ის მეშვეობით, თქვენ მიიღებთ ელ.წერილს სტრიქონით "Hello, World" ყოველ ჯერზე, როდესაც cron აწარმოებს ასეთ სკრიპტს.

თუ არ გჭირდებათ სკრიპტის მიერ ტექსტის გამოტანა, დაამატეთ სიმბოლოები > /dev/null 2>&1 cron სკრიპტის ხაზის ბოლოს.

cron-ის სრული ხაზი ასე გამოიყურება:

0 1 * * * /usr/bin/php -q $HOME/script.php > /dev/null 2>&1

შეამოწმეთ სკრიპტების სწორი სინტაქსი, რომლებიც დაყენებულია cron-ის საშუალებით გასაშვებად. სკრიპტები შეიძლება შეიცავდეს შეცდომებს და განსხვავებულად იმუშაოს ვებ სერვერზე გაშვებისას, ვიდრე cron-ით და ა.შ. გაშვებამდე შეამოწმეთ სკრიპტი ბრძანებით unix shell-ში:

/usr/bin/php -l script.php

თუ სკრიპტში შეცდომები არ არის, იხილავთ შეტყობინებას "script.php-ში სინტაქსური შეცდომები არ არის გამოვლენილი".

როგორ გავუშვათ სკრიპტი, როგორც მომხმარებელი

სისტემის უსაფრთხოების გაზრდის მიზნით, სკრიპტი გაშვებულია სახელით კონკრეტული მომხმარებელი. დარწმუნდით, რომ მომხმარებელს აქვს სკრიპტის გაშვების უფლება. მოათავსეთ იგი სცენარის ძირითადი ნაწილის წინ su -l მომხმარებლის სახელი, საიდანაც გსურთ სკრიპტის გაშვება.

მაგალითად, TeamSpeak3 სერვერის ts3server მომხმარებლის დასაწყებად, გამოიყენეთ შემდეგი ბრძანება:

Su -l ts3server ./ts3server_startscript.sh დაწყება

სკრიპტი განთავსებულია მომხმარებლის მთავარ დირექტორიაში, სადაც ავტომატურად მივდივართ ავტორიზაციის დროს.

შეზღუდვები

პროგრამებისთვის, რომლებიც გაშვებულია cron-ის მეშვეობით, იგივე შეზღუდვები მოქმედებს მოხმარებულ რესურსებზე, რაც მომხმარებლის მიერ unix shell-ში დაწყებულ პროცესებზე. ეს დაახლოებითპროგრამის შესრულების დროზე შეზღუდვების შესახებ, რაოდენობა ხელმისაწვდომი მეხსიერება, ფაილის ზომის შეზღუდვები და ა.შ.

ახლახან მომიწია სერვერზე დაგეგმილი დავალების დაყენება და პირველად ეს რთული და საშინელიც კი იყო. ამიტომ, გადავწყვიტე დამეწერა სტატია Cron-ის დაყენების ეტაპების შესახებ. ჩვენ შევქმნით მარტივ PHP სკრიპტს დღეში ერთხელ ელფოსტის გასაგზავნად.

საჭირო საბაზისო დონე

  • საბაზისო გამოცდილება ბრძანების ხაზთან;
  • Linux სერვერზე SSH-თან მუშაობის უნარები.

ამოცანები

  • ისწავლეთ როგორ დააყენოთ მარტივი დაგეგმილი დავალება ( კრონის სამუშაო) Linux სერვერის გარემოში;
  • დააყენეთ cron ამოცანა ელ.ფოსტის გაგზავნისთვის ყოველდღიურად მითითებულ დროს.

ელ.ფოსტის გაგზავნა PHP-ის გამოყენებით

ჯერ თქვენ უნდა შექმნათ მარტივი PHP სკრიპტი თქვენი Cron Linux-ის დაყენების შესამოწმებლად. მე ვაპირებ შევქმნა ფაილი, რომელიც აგზავნის ელ.წერილს:

თუ არ იცნობთ PHP mail() ფუნქციას, შეამოწმეთ ოფიციალური დოკუმენტაცია. მე ვაყენებ ცვლადებს, რომლებიც განსაზღვრავს მიმღებს, ელექტრონული ფოსტის მისამართიგამგზავნი, თემა, შეტყობინების შინაარსი და სათაურები. ეს არ არის ყველაზე თანამედროვე ან უსაფრთხო გზაელექტრონული ფოსტის გაგზავნა. მაგრამ ის მუშაობს, ამიტომ ვაპირებ გამოვიყენო ტესტირებისთვის. ჩვენ ვინახავთ კოდს cron.php ფაილში.

გზა საჯარო საქაღალდეზე იქნება დამოკიდებული Linux დისტრიბუცია, მაგრამ cron.php ფაილი მოვათავსე /var/www/html/crontest-ში. ასე რომ, ჩემი სცენარის სრული გზა იქნება: /var/www/html/crontest/cron.php. თქვენ შეგიძლიათ შეამოწმოთ ეს სკრიპტი პირდაპირ ბრაუზერში. თუ თქვენი საიტი არის example.com, ფაილის მისამართი სავარაუდოდ იქნება example.com/crontest/cron.php. თუ გაუშვით ფაილი და მიიღეთ ელ, რაც ნიშნავს, რომ სკრიპტი მუშაობს.

Localhost არ არის კონფიგურირებული PHP ფოსტის გასაგზავნად, ამიტომ ეს სკრიპტი უნდა იყოს გაშვებული Linux გარემოდან.

ძირითადი კრონის სინტაქსი

არის სასარგებლო საიტი, სახელწოდებით Crontab Generator, რომელსაც შეუძლია დააყენოს PHP Cron, მაგრამ ჯერ ჩვენ გადავხედავთ ძირითად სინტაქსს.

Cron გაშვების მაგალითი:

* * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

cron ბრძანების ნაწილები

cron ბრძანება შედგება ოთხი ძირითადი ნაწილისგან:

შესრულების დრო PHP ბილიკისკრიპტის შედეგი * * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1

ტყვიის დრო- ადგენს წუთებს, საათებს, დღეებს, თვეებს და კვირის დღეებს.

Execution - cron ამოცანამ უნდა გამოიძახოს PHP, რომელიც მდებარეობს /usr/bin/php საქაღალდეში.

გზა სკრიპტისკენ - სრული გზა ფაილისკენ, რომელიც უნდა გაუშვათ.

შედეგი (სურვილისამებრ) - შეგიძლიათ ჩაწეროთ შედეგი ფაილში ან გააუქმოთ ეს ნაწილი > /dev/null 2>&1 .

ზემოთ მოყვანილ მაგალითში, Linux Cron ამოცანა კონფიგურირებულია იმისთვის, რომ ელ.წერილი გამოაგზავნოს ყოველ წუთს საათში ყოველდღე. ვარსკვლავი არის სიმბოლო, რომელიც წარმოადგენს "ყველას".

  • წუთები - დააყენეთ წუთები, 0-დან 59-მდე;
  • საათი - დააყენეთ საათი, 0-დან 24-მდე;
  • დღეები - დააყენეთ დღე, 1-დან 31-მდე;
  • თვეები - დაადგინეთ თვე, 1-დან 12-მდე (იანვარი-დეკემბერი);
  • კვირა - დააყენეთ კვირის დღე, 0-დან 6-მდე ( კვირა - შაბათი).

აქ არის რამდენიმე მარტივი მაგალითი:

სინტაქსის განმარტება 0 * * * * მუშაობს საათში ერთხელ (ყოველ საათში ყოველ ნულოვან წუთში). 0 0 * * * გადის დღეში ერთხელ (შუაღამისას ყოველ დღე ნულ წუთში). 0 0 1 * * გადის თვეში ერთხელ (ყოველი თვის პირველ დღეს შუაღამისას ნულის წუთი). 0 0 1 1 * გადის წელიწადში ერთხელ (პირველი თვის პირველ დღეს, შუაღამისას, ნულის წუთში).

არის სხვა პარამეტრები, როგორიცაა კენტი/ლუწი დღეები, ყოველ 5 წუთში და ა.შ. ასევე არსებობს მრავალი რესურსი, სადაც შეგიძლიათ იპოვოთ კონკრეტული პარამეტრები.

Cron ამოცანის დაყენება

თუ cron კონფიგურირებულია როგორც root, მაშინ თქვენ უნდა გაუშვათ sudo კოდის გაშვებამდე.

cron ბრძანებას ეწოდება crontab. ჩვენ დავაყენეთ ჩვენი ამოცანა, რომ გამოგზავნოთ ელ.წერილი დღეში ერთხელ, ასე რომ სრული გუნდიიქნება ასეთი:

0 0 * * * /usr/bin/php /var/www/html/crontest/cron.php >/dev/null 2>&1

მას შემდეგ რაც შეხვალთ სისტემაში SSH სერვერი, შეგიძლიათ შეამოწმოთ არის თუ არა სხვები მიმდინარე ამოცანები. ეს შეიძლება გაკეთდეს შემდეგი ბრძანების გამოყენებით.

crontab -l crontab: მომხმარებლისთვის crontab არ არის

ახლა ჩვენ ჩავასწორებთ კრონტაბს:

ამ ეტაპზე თქვენ დიდი ალბათობით იმუშავებთ vi რედაქტორში, თუ არასოდეს შეგიცვლიათ სერვერის ნაგულისხმევი რედაქტორი. Cron-ის დაყენებისას პირველად შეიძლება ცოტა დამაბნეველი იყოს.

აი რა უნდა გააკეთო:

  1. დააჭირეთ esc;
  2. დააჭირეთ i-ს ფაილის რედაქტირების დასაწყებად;
  3. პასტა cron ბრძანებაშეიტანოს;
  4. კვლავ დააჭირეთ esc-ს რედაქტირების რეჟიმიდან გასასვლელად;
  5. ჩაწერეთ:wq ფაილში ცვლილებების შესანახად ( w - ჩაწერეთ) და გამოდით ( q - დატოვება).

ახლა კრონტაბი შენახულია და ელ.წერილი უნდა გაიგზავნოს დღეში ერთხელ შუაღამისას. თქვენ შეგიძლიათ დააყენოთ * / 5 * * * * - ყოველ 5 წუთში მისი მუშაობის შესამოწმებლად.

თქვენ ასევე შეგიძლიათ დაამატოთ მრავალი cron ამოცანა ფაილში. ამისათვის განათავსეთ თითოეული ბრძანება ცალკეულ ხაზზე.

სტატიის თარგმანი " ძირითადი Cron Job-ის დაყენება Linux-ში» მეგობრული პროექტის გუნდი

სისტემაში Linuxსამუშაოების ავტომატური დაწყება ხორციელდება crond daemon-ის მიერ და დანიშვნა ავტომატური დაწყებადავალებების შესრულება შეუძლიათ არა მხოლოდ სისტემის ადმინისტრატორს, არამედ მომხმარებლებსაც.

როგორ მუშაობს crond?

კრონ დემონის პრინციპი მარტივია. დაწყების შემდეგ (ჩვეულებრივ, როდესაც სისტემა ჩაიტვირთება), დემონი ყოველ წუთს იღვიძებს და ამოწმებს, არის თუ არა რაიმე პროგრამის გაშვება ამ წუთში. თუ ასეთი პროგრამები იპოვეს, დემონი იწყებს მათ და აგზავნის მათ მეშვეობით ელშეტყობინებები მომხმარებლებისთვის, რომლებმაც დაგეგმეს გაშვება.

დავალებების დაგეგმვა

გრაფიკის შედგენა არ არის რთული ამოცანა. განრიგი განთავსებულია ცალკე crontab ფაილში. ფაილის თითოეული ხაზი შეიცავს დავალებას, რომელიც უნდა შესრულდეს კონკრეტულ დროს.

Crontab ფაილის ფორმატი

დრო-თარიღის ნაწილი შედგება ხუთი რიცხვითი ველისაგან, გამოყოფილი სივრცეებით, რომლებიც განსაზღვრავს სამუშაოს დაწყების დროს:

ამ ველების შევსების მოხერხებულობისთვის შემოღებულ იქნა შემდეგი წესები:

  • თქვენ შეგიძლიათ მიუთითოთ მნიშვნელობები, როგორც რიცხვითი ინტერვალები. მაგალითად, 1-3 ინტერვალი საათის ველში ნიშნავს 1.00, 2.00 და 3.00 შუაღამისას, 2-4 კვირის დღის ველში - სამშაბათს, ოთხშაბათს ან ხუთშაბათს.
  • ინტერვალების დაყენება შესაძლებელია ერთზე მეტი მატებით. მაგალითად, შუაღამედან დაწყებული ყოველი მეორე საათის აღსანიშნავად, თქვენ დააყენეთ ინტერვალი 0-23-ზე 2-ის მატებაზე, გამოყოფილი ხაზებით: 0-23/2.
  • ვარსკვლავი (*) მიუთითებს ველის მნიშვნელობების სრულ დიაპაზონში - მინიმალურიდან მაქსიმუმამდე. მაგალითად, თვის დღის ველში ვარსკვლავი ნიშნავს ინტერვალს 0-31, კვირის დღის ველში - 0-7.
  • კვირის ან თვის დღე შეიძლება მიეთითოს მისი (ინგლისური) სახელის პირველი სამი ასოებით

დრო-თარიღის მაგალითები

დროის-თარიღის ველების შევსების რამდენიმე მაგალითი:

0 1 * * * დავალების შესრულება ყოველდღიურად, შუაღამის 1.00 საათზე 30 14 * * 0 დავალების შესრულება კვირას, 14.30 საათზე 0 23-7/2.8 * * * შეასრულეთ დავალება ყოველ 2 საათში 23.00-დან 7.00 საათამდე და 8.00 საათზე 0 12 * 1 თ. სამუშაო ყოველი წლის იანვრის ყოველ ორშაბათს შუადღისას 0 12 2 თებერვალი * აწარმოეთ სამუშაო ყოველი წლის მეორე თებერვლის შუადღისას

ბრძანების ველი

ბრძანების ველი გამოყოფილია თარიღის დროის ველებიდან ერთი ან მეტი ინტერვალით და ვრცელდება ხაზის ბოლომდე. ბრძანებები მუშავდება /bin/sh გარსით.

მაგალითად, crontab ფაილში შემდეგი ჩანაწერი ნათქვამია ყოველდღიური გაშვებაპროგრამები /usr/sbin/სარეზერვო ასლი შუაღამის 1.00 საათზე:

0 1 * * * /usr/sbin/სარეზერვო

ზოგიერთი ბრძანება (როგორიცაა ფოსტა) საჭიროებს მოწყობილობის შეყვანას სტანდარტული შეყვანა. ეს მითითებულია პროცენტული ნიშნის (%) გამოყენებით. პირველი ასეთი სიმბოლო მიუთითებს სტანდარტული შეყვანის დასაწყისზე, ყოველი მომდევნო სიმბოლო მიუთითებს ხაზის ცვლილებაზე.

crontab ფაილის რედაქტირება

crontab ფაილი რედაქტირდება crontab -e ბრძანებით. შესაძლებელია ორი მიდგომა:

  • შექმენით ახალი ფაილი ყველა ჩანაწერით, რომელიც უნდა იყოს შეტანილი crontab ფაილში და შემდეგ ჩაწერეთ იგი დისკზე ამ სახელით crontab ბრძანების გამოყენებით;
  • უშუალოდ ფაილის რედაქტირება crontab -e ბრძანების გამოყენებით.

დაწერეთ ფაილიდან

Crontab ფაილის შიგთავსის სხვა ფაილიდან დასაწერად, თქვენ უნდა შექმნათ ეს სხვა ფაილი (ნაცნობი ტექსტის რედაქტორში) ყველა იმ ჩანაწერით, რომელიც უნდა შეადგინოს crontab ფაილი. ეს შეიძლება იყოს, მაგალითად, შემდეგი ჩანაწერი:

0 1 * * * /usr/sbin/სარეზერვო

შექმნილ ფაილს უნდა მიენიჭოს შესაბამისი სახელი, როგორიცაა cron jobs. შემდეგ მითითებული ფაილიშექმნილი, მისი შინაარსი უნდა ჩაიწეროს crontab ფაილში ბრძანებით:

~$ crontab cronjobs

cronjobs ფაილის შინაარსი მთლიანად ჩაანაცვლებს crontab ფაილის შინაარსს მოცემული მომხმარებელი. ამ მეთოდის გამოყენებით, ნებისმიერ მომხმარებელს შეუძლია შეცვალოს თავისი crontab ფაილი. სუპერმომხმარებელს აქვს სპეციალური უფლებები სხვა მომხმარებლების crontab ფაილების რედაქტირებისთვის. სხვისი ფაილის რედაქტირება მითითებულია -u დროშით. მაგალითად, ბრძანებით:

~# crontab -u ოლეგ კრონჯობს

cronjobs ფაილი იწერება როგორც მომხმარებლის oleg-ის crontab ფაილი.

crontab ფაილის პირდაპირ რედაქტირება

crontab ბრძანება თავიდან აიცილებს შექმნის მრავალსაფეხურიან ოპერაციას ცალკე ფაილი. თუ თქვენ გასცემთ crontab ბრძანებას -e ოფციით, შეგიძლიათ პირდაპირ შეცვალოთ crontab ფაილი.

ნაგულისხმევად, crontab ბრძანების გამოყენებით -e პარამეტრით, crontab ფაილი იტვირთება რედაქტორში. რედაქტორი ვი- თუმცა ძლიერი რთული ინსტრუმენტი, პოპულარული შორის გამოცდილი მომხმარებლები Unix. ვინმე, ვინც ამჯობინებს სხვა რედაქტორს, მაგ. Xedit, შეუძლია დააინსტალიროს შესაბამისი ღირებულება გარემოს ცვლადირედაქტორი:

~$ ექსპორტი EDITOR=xedit

ამის შემდეგ შეიყვანეთ ბრძანება

იწვევს crontab ფაილის გახსნას მითითებულ რედაქტორში.

ისევე როგორც რეგულარული მომხმარებელიშეუძლია რედაქტირება საკუთარი ფაილი crontab , სუპერმომხმარებელს შეუძლია სხვა მომხმარებლების crontab ფაილების რედაქტირება. ამისათვის გამოიყენეთ ბრძანება:

~# crontab -u მომხმარებლის სახელი -e

crontab ფაილის ნახვა

crontab ფაილის შინაარსის სანახავად, შეიყვანეთ ბრძანება:

სუპერმომხმარებელს შეუძლია სხვა მომხმარებლების crontab ფაილების ნახვა:

~# crontab -u მომხმარებლის სახელი -l

crontab ფაილის წაშლა

მათი crontab ფაილის შინაარსის წასაშლელად, მომხმარებელი შეაქვს ბრძანებას:

სუპერმომხმარებელს შეუძლია წაშალოს სხვა მომხმარებლების crontab ფაილები.

MIN HOUR DOM MON DOW CMD

ცხრილი: Crontab ველები და მოქმედი დიაპაზონები (Linux Crontab სინტაქსი)

1. დავალებების დაგეგმვა გარკვეული დროით

cron-ის გამოყენების საფუძველი არის ამოცანების შესრულება გარკვეული დროროგორც ნაჩვენებია ქვემოთ. ეს გაუშვებს სრულ სარეზერვო სკრიპტს 10 ივნისს დილის 8:30 საათზე.

გთხოვთ გაითვალისწინოთ, რომ დროის ველი იყენებს 24 საათის ფორმატს, ამიტომ დილის 8 არის 8, საღამოს 8 არის 20 საათი.

30 08 10 06 * /სახლი/დეველოპერი/სრული სარეზერვო

  • 30-30 წუთი
  • 08-08 სთ
  • 10-10 დღე
  • * – კვირის ყოველ დღე

2. დაგეგმეთ უფრო ხშირად შესასრულებელი დავალებები (მაგ. დღეში ორჯერ)

შემდეგი სკრიპტი იყენებს დამატებით სარეზერვოდღეში ორჯერ ყოველდღე. ეს მაგალითი ასრულებს დამატებით სარეზერვო ასლს ყოველ დღე 11:00 და 16:00 საათზე. ველში მძიმით გამოყოფილი მნიშვნელობები მიუთითებს, რომ ბრძანება უნდა შესრულდეს თითოეულ მითითებულ დროს.

00 11.16 * * * /home/developer/bin/incremental-backup

00 – 0 წუთი (საათის დასაწყისი) 11, 16 – 11 და 16 საათი * - ყოველდღე * - ყოველთვიურად * - კვირის ყოველ დღე

3. დაგეგმეთ სამუშაო გარკვეული დროის ინტერვალით (მაგალითად, მხოლოდ სამუშაო დღეებში)

თუ გსურთ, რომ რუტინები აწარმოოს ყოველ საათში გარკვეული დროის ინტერვალით, გამოიყენეთ შემდეგი.

Cron რუტინა ყოველი დღისთვის სამუშაო საათებში

ეს მაგალითი ამოწმებს მონაცემთა ბაზის სტატუსს ყოველდღე (შაბათ-კვირის ჩათვლით) სამუშაო საათებში დილის 9 საათიდან საღამოს 6 საათამდე.

00 09-18 * * * /home/developer/bin/check-db-status

00 - 0 წუთი (საათის დასაწყისი) 09-18 - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (საათი) * - ყოველდღე * - ყოველთვიურად * - ყოველ დღე კვირა

Cron რუტინა ყოველი სამუშაო დღისთვის სამუშაო საათებში

ეს მაგალითი ამოწმებს მონაცემთა ბაზის სტატუსს ყოველ სამუშაო დღეებში (შაბათისა და კვირის გარდა) დილის 9 საათიდან საღამოს 6 საათამდე.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 - 0 წუთი (საათის დასაწყისი) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (საათი) * - ყოველდღე * - ყოველთვიურად 1-5 - ორშაბათი, სამშაბათი, ოთხშაბათი, ხუთშაბათი და პარასკევი (ყოველ კვირაში)

4. როგორ ვნახო Crontab-ის ჩანაწერები?

იხილეთ მომხმარებლის მიმდინარე Crontab ფაილები.

თქვენი crontab-l ფაილების ზემოდან სანახავად ანგარიში unix, გააკეთეთ შემდეგი.

Developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

იხილეთ root crontab ჩანაწერები

შედით როგორც root მომხმარებელი (su - root) და გაუშვით crontab-l, როგორც ნაჩვენებია ქვემოთ.

Root@dev-db# crontab -l არ არის crontab root-ისთვის

სხვა მომხმარებლების ფაილების სანახავად შედით სისტემაში, როგორც root და გამოიყენეთ -u (მომხმარებლის სახელი) -l, როგორც ნაჩვენებია ქვემოთ.

Root@dev-db# crontab -u მომხმარებლის სახელი -l @თვეში /სახლი/მომხმარებლის სახელი/თვეული-სარეზერვო 00 09-18 * * * /home/username/check-db-status

5. როგორ დაარედაქტიროთ crontab ჩანაწერები?

მიმდინარე მომხმარებლის cron ჩანაწერების რედაქტირება.

ჩანაწერების რედაქტირებისთვის გამოიყენეთ cronab -e, როგორც ნაჩვენებია ქვემოთ. ნაგულისხმევად, მომხმარებლის მიმდინარე crontab ჩანაწერები რედაქტირდება.

Developer@dev-db$ crontab -e @yearly /home/developer/centos/bin/annual-maintenance */10 * * * * /home/developer/debian/bin/check-disk-space ~ "/tmp/crontab .XXXXyjWkHw" 2L, 83C

როდესაც შეინახავთ ფაილს, ის შეინახავს კრონტაბს და აჩვენებს შემდეგ შეტყობინებას, რომელიც გეუბნებათ, რომ crontab წარმატებით შეიცვალა.

~ "crontab.XXXXyjWkHw" 2L, 83C დაწერილი crontab: ახალი კრონტაბის დაყენება

root crontab ჩანაწერების რედაქტირება

შესვლა როგორც root მომხმარებელი(su - root) და გააკეთეთ crontab -e, როგორც ნაჩვენებია ქვემოთ.

Root@dev-db# crontab -e

სხვა მომხმარებლის crontab ჩანაწერების რედაქტირება

სხვისი კრონტაბის ჩანაწერის რედაქტირებისთვის Linux-ის მომხმარებელი, შედით როგორც root და გამოიყენეთ -u (მომხმარებლის სახელი) –e როგორც ნაჩვენებია ქვემოთ.

Root@dev-db# crontab -u მომხმარებლის სახელი -e @თვეში /home/username/fedora/bin/monthly-backup 00 09-18 * * * /home/username/ubuntu/bin/check-db-status ~ ~ ~ "/tmp/crontab.XXXxyjWkHw" 2L, 83C

6. კრონის აღსრულება ყოველ წუთს

იდეალურ შემთხვევაში, შეიძლება არ დაგჭირდეთ ყოველ წუთში კრონის სირბილის დაგეგმვა. მაგრამ ამ მაგალითის გაგება დაგეხმარებათ გაიგოთ ამ სტატიაში აღწერილი სხვა მაგალითები.

ბაშ * * * * * CMD

* - ნიშნავს შესაძლო ერთეულს - ანუ ყოველი საათის ყოველ წუთს მთელი წლის განმავლობაში. ასევე, * პირდაპირ გამოყენება უფრო მეტი იქნება სასარგებლო ფუნქციაშემდეგ მაგალითებში.

წუთების ველში */5 მითითება ნიშნავს ყოველ 5 წუთში. წუთების ველში 0-10/2 მითითება ნიშნავს ყოველ 2 წუთში პირველი 10 წუთის განმავლობაში. ამრიგად, ეს კონვენცია შეიძლება გამოყენებულ იქნას ოთხივე სფეროში.

7. გაუშვით ფონური Cron ამოცანები ყოველ 10 წუთში

გამოიყენეთ შემდეგი, თუ გსურთ შეამოწმოთ თქვენი დისკის ადგილი ყოველ 10 წუთში.

*/10 * * * * /home/ramesh/check-disk-space

ეს ამოცანა აწარმოებს მითითებულ დისკის შემოწმების ბრძანებას ყოველ 10 წუთში ერთი წლის განმავლობაში. მაგრამ შეიძლება დაგჭირდეთ შემოწმების შესრულება მხოლოდ სამუშაო საათებში ან პირიქით. ზემოთ მოყვანილი მაგალითები გვიჩვენებს, თუ როგორ უნდა გავაკეთოთ ეს.

იმის ნაცვლად, რომ მიუთითოთ მნიშვნელობები 5 ველში, ჩვენ შეგვიძლია მივუთითოთ ისინი გამოყენებით საკვანძო სიტყვაროგორც ნაჩვენებია ქვემოთ.

არსებობს სპეციალური პირობები, სადაც 5 ველის ნაცვლად შეგიძლიათ გამოიყენოთ @, რასაც მოჰყვება საკვანძო სიტყვა - როგორიცაა გადატვირთვა, შუაღამე, ყოველწლიურად, საათობრივად.

Cron სპეციალური საკვანძო სიტყვები და მათი მნიშვნელობა

8. დაგეგმეთ სამუშაო ყოველი წლის პირველი წუთის განმავლობაში @yearly-ის გამოყენებით

თუ გსურთ cron სამუშაოს შესრულება ყოველი წლის პირველ წუთებში, შეგიძლიათ გამოიყენოთ @yearly საკვანძო სიტყვა, როგორც ეს ნაჩვენებია ქვემოთ. ამ შემთხვევაში სისტემა ყოველწლიურად იმუშავებს მოვლა, ყოველი წლის 1 იანვრის 00:00 საათზე წლიური ტექნიკური სკრიპტის გამოყენებით.

@წლიური /სახლი/დეველოპერი/წითელი ქუდი/ბინა/წლიური მოვლა

9. ამოცანების შესრულება ყოველთვიურად @monthly საკვანძო სიტყვის გამოყენებით

ის მსგავსია @yearly ზემოთ. მაგრამ ბრძანება ყოველთვიურად სრულდება. ბრძანება შეასრულებს სარეზერვო ასლს ყოველი თვის პირველ 00:00 საათზე.

@თვიური /სახლი/ramesh/suse/bin/tape-backup

10. შეასრულეთ ამოცანები ყოველდღე @daily-ის გამოყენებით

@daily საკვანძო სიტყვის გამოყენებით შეიქმნება ყოველდღიური ჟურნალის ფაილი ჟურნალის გასასუფთავებლად ყოველდღე 00:00 საათზე.

@daily /home/developer/arch-linux/bin/cleanup-logs "დღე დაიწყო"

11. როგორ გავუშვათ Linux ბრძანება ყოველი გადატვირთვის შემდეგ @reboot-ის გამოყენებით?

@reboot საკვანძო სიტყვის გამოყენება შეასრულებს მითითებულ ბრძანებას ყოველ ჯერზე, როდესაც სისტემა ჩაიტვირთება.

@rebootCMD

13. 12. როგორ გამორთოთ/გადამისამართოთ Crontab გამავალი ფოსტა MAIL საკვანძო სიტყვის გამოყენებით?

ნაგულისხმევად, crontab უგზავნის ამოცანების გამოსავალს მომხმარებელს, ვინც დააინსტალირა დავალება. თუ გსურთ მათი გადამისამართება სხვა მომხმარებელზე, დაამატეთ ან განაახლეთ MAIL ცვლადი crontab-ში, როგორც ეს ნაჩვენებია ქვემოთ.

Developer@dev-db$ crontab -l MAIL="developer" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

თუ გსურთ საერთოდ თავიდან აიცილოთ ფოსტის გაგზავნა, ანუ შეწყვიტოთ crontab გამომავალი ფაილების გაგზავნა, დაამატეთ ან განაახლეთ MAIL ცვლადი crontab-ში, როგორც ეს ნაჩვენებია ქვემოთ.

13. როგორ გავუშვათ Linux Cron Jobs ყოველ წამში Crontab-ის გამოყენებით

თქვენ არ შეგიძლიათ დააყენოთ cron ყოველ წამში გაშვებაზე. იმიტომ რომ მინიმალური ერთეულიკრონის შესრულება – წუთი. ნორმალურ სცენარში არ არის საჭირო ყოველ წამში cron execution-ის გაშვება.

14. Crontab-ში PATH ცვლადის დაზუსტება

ყველა ზემოთ მოყვანილ მაგალითში ჩვენ მივუთითეთ აბსოლუტური გზა Linux ბრძანებებიან shell სკრიპტი უნდა შესრულდეს.

მაგალითად, იმის ნაცვლად, რომ მიუთითოთ /home/developer/tape-backup, თუ გსურთ მხოლოდ tape-backup-ის მითითება, დაამატეთ /home/developer PATH ცვლადში crontab-ში, როგორც ეს ნაჩვენებია ქვემოთ.

Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly year-maintenance */10 * * * * check-disk-space

15. Crontab-ის ინსტალაცია Cron ფაილიდან

იმის ნაცვლად, რომ პირდაპირ დაარედაქტიროთ crontab ფაილი, შეგიძლიათ დაამატოთ ყველა ჩანაწერი cron ფაილში. თუ ფაილს აქვს ეს ჩანაწერები, შეგიძლიათ გადააგდოთ ან დააინსტალიროთ ისინი cron-ში, როგორც ეს ნაჩვენებია ქვემოთ.

შენიშვნა: ეს შექმნის cron-file.txt ფაილს თქვენს crontab-ში, რომელიც წაშლის წინა cron ჩანაწერებს. ამიტომ, გთხოვთ, ფრთხილად იყოთ cron-ის ჩანაწერების ჩატვირთვისას cron-file.txt-დან:

developer@dev-db$ crontab -l არ არის crontab დეველოპერისთვის $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space developer@dev -db$ crontab cron-file.txt developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

რაიმე შეკითხვა?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: