cron ფაილი Cron - იწყებს მომხმარებლის პროგრამებს მითითებულ დროს

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

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

როდესაც სისტემა იწყება, კრონის დემონი იწყება. მისი კონტროლი (შეჩერება/დაწყება/სტატუსების შემოწმება) შესაძლებელია ბრძანებით: sudo service cron (stop/start/status). მაგრამ ეს იშვიათად არის საჭირო.

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

სამუშაოები განთავსებულია ფაილებში, რომელთა სახელები ტოლია მომხმარებლის სახელებთან, ხოლო თავად ფაილები განლაგებულია /var/spool/cron/crontabs საქაღალდეში. საქაღალდე დაცულია გარე ჩარევისგან და ხელმისაწვდომია მხოლოდ სუპერმომხმარებლისთვის. მაგრამ, თითოეულ მომხმარებელს შეუძლია შექმნას განრიგი თავისი ამოცანების შესასრულებლად root (სუპერ მომხმარებლის) პაროლის ცოდნის გარეშე.

რომ დაყენებული cronამისთვის რეგულარული მომხმარებელიუბრალოდ ჩაწერეთ:

თუ თქვენ გჭირდებათ დავალების შექმნა სხვა მომხმარებლისთვის, გაუშვით იგი ბრძანებით:

sudo crontab -u მომხმარებელი -ე

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


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

0 */1 * * * /სახლი/ზეგი/ბინ/კუკუ

ამოცანაში არის 2 ძირითადი ველი: 0 */1 * * * - მიუთითებს ბრძანების გაშვების დროს. და /home/zegi/bin/kuku არის გზა სკრიპტისკენ, რომელიც აღწერს ბრძანებებს.

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

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

თითოეული უჯრედი უნდა იყოს შევსებული. თუ თქვენ გჭირდებათ ბრძანება ყოველთვიურად შესრულდეს, მაშინ დააყენეთ * მე-4 ველში. იგივე ეხება სხვა ველებს.

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

თუ თქვენ გჭირდებათ დავალების შესრულება ყოველ საათში, მაშინ მოგიწევთ დააყენოთ კონკრეტული წუთი. თუ თქვენ დატოვებთ ვარსკვლავს (* */1 * * *), მაშინ გვირგვინი შეასრულებს ყოველ წუთს - რადგან პირობები დაკმაყოფილებულია: მან შეამოწმა ყველა 5 უჯრედი და მათი მნიშვნელობა შეესაბამება მიმდინარე დროს (წუთები - არ აქვს მნიშვნელობა. საათები - ყოველ საათში და არა მხოლოდ გარკვეული).
ხაზს ყოველთვის წინ უნდა უსწრებდეს ვარსკვლავი. მაგალითად, 30-დან დაწყებული ყოველ წუთში შესრულების მინიჭება 30/1-ის შეყვანით არ იმუშავებს.

თუ საჭიროა დავალება შესრულდეს არა ციკლურად, არამედ რამდენჯერმე, მაშინ მნიშვნელობები იწერება მძიმით გამოყოფილი.
მაგალითად, თქვენ უნდა შეასრულოთ დავალება სამუშაო დღეებში 12 საათსა და 18 საათზე. მაშინ ეს ასე გამოიყურება:

* 12,18 * * 2,3,4,5,6

როდესაც დაასრულებთ ამოცანების რედაქტირებას, არ დაგავიწყდეთ ცვლილებების შენახვა (Ctrl+O > enter), შემდეგ კი შეგიძლიათ გახვიდეთ (Ctrl+x).

Cron-მა უნდა შეატყობინოს, რომ გამოჩნდა ახალი დავალება და ის მზად არის შეასრულოს ის დაწერით: „crontab: new crontab-ის ინსტალაცია“.

თქვენ შეგიძლიათ ნახოთ შექმნილი ამოცანები (შეიძლება თქვენთვის არაფერი გაგიკეთებიათ, მაგრამ ქსელის ადმინისტრატორმა თქვენთვის რაღაც დააკონფიგურირა) ბრძანებით:

და ბოლოს მე თვითონ გუგულის სცენარი, რომელიც გუგულს ყოველ საათში:

#!/bin/bash
h=`თარიღი +%l`
ხოლო [$h -gt 0]
კეთება
თამაში ~/kukushka.wav
h=$[$h-1]
შესრულებულია

შეგიძლიათ ჩამოტვირთოთ გუგულის ხმა ბრძანებით:

wget http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav

თამაში შედის სოქსის პაკეტში. Ubuntu-ში შეგიძლიათ დააინსტალიროთ ბრძანებით.

სასარგებლო მექანიზმი, რომელიც უზრუნველყოფს კონტროლს პროცესების შესრულებაზე ლინუქსიარის დავალების გრაფიკი ან კრონ, ფაილი კრონტაბი etc დირექტორიაში, ამ ფაილის გამოყენებით, ემატება სკრიპტები და ამოცანები, რომლებიც შეგვიძლია ჩავწეროთ გაშვებული სისტემისთვის, მაგალითად, ოპერაციის გასაკონტროლებლად ლინუქსისისტემები ელექტრონული ფოსტით

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

შექმნილი ფაილები მოთავსებულია დირექტორიაში:
/usr/spool/cron/crontabs ან /var/spool/cron/tabs
თქვენ მხოლოდ მათი რედაქტირება გჭირდებათ crontab –e-ის გაშვებით
შესრულების პერიოდიდან გამომდინარე, ფაილები შეიძლება განთავსდეს შემდეგ დირექტორიაში:
/etc/cron.dayly
/etc/cron.ყოველკვირეული
/etc/cron.თვიური

კრონ სამუშაოების შექმნა
შექმენით დავალება კრონტაბიექვსი აუცილებელი ველის შევსებას ჰგავს, მათი მნიშვნელობა ასეთია:
1. წუთები – რიცხვი 0-დან 59-მდე
2. საათი – რიცხვები 0-დან 23-მდე
3. თვის დღე – რიცხვი 1-დან 31-მდე
4. თვის რაოდენობა წელიწადში – რიცხვი 1-დან 12-მდე
5. კვირის დღე – რიცხვი 0-დან 7-მდე
0-კვირა, 1-ორშაბათი, 2-სამშაბათი, 3-ოთხშაბათი, 4-ხუთშაბათი, 5-პარასკევი, 6-შაბათი
თითოეული ზემოთ ჩამოთვლილი პარამეტრისთვის შეიძლება დაყენდეს შემდეგი მნიშვნელობები:
ა) მძიმით გამოყოფილი - 3,7,9 (თვიანი დღის ველში შესაბამისად 3,7,9)
ბ) დეფისით – 3-9 (საათის ველში ნიშნავს შესრულებას 3,4,5,6,7,8,9-ზე)
გ) * - შესრულდება ყველა შესაძლო მნიშვნელობით
დ) / - დავალების დამატებითი პერიოდების დაყენება - */8 წუთის ველში, შესრულდება ყოველ მერვე წუთში

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

გარდა ამისა, შეგიძლიათ გამოიყენოთ შემდეგი საკვანძო სიტყვები:
@წლიურად – იგივე, რაც 0 0 1 1 * (წელიწადში ერთხელ)
@daily – იგივეა, რაც 0 0 * * * (დღეში ერთხელ)
@hourly – იგივე 0 * * * * (საათში ერთხელ)

ბრძანებები crontab-ის მართვისთვის
- იხილეთ ამოცანები მიმდინარე ანგარიშისთვის
კრონტაბი –ლ
- ნახეთ ამოცანები სასურველი ანგარიშისთვის
crontab –u მომხმარებლის სახელი –l
- cron სამუშაოების რედაქტირება
კრონტაბი –ე
- cron სამუშაოების რედაქტირება მოცემული მომხმარებლისთვის
crontab –u მომხმარებლის სახელი –e

კრონის სამუშაოების მაგალითები:
შეასრულეთ დავალება ყოველდღე დილის 7 საათზე
0 7 * * * root /home/scripts/mount.sh
შეასრულეთ დავალება ყოველდღე 17:30 საათზე
30 17 * * * root /home/scripts/mount.sh
დაასრულეთ დავალება ყოველთვიურად პირველ დღეს 0 საათი 0 წუთი
0 0 1 * * root /home/scripts/mount.sh
შეასრულეთ დავალება ყოველ 4 საათში
* * /4 * * * root /home/scripts/mount.sh
ამოცანის გაშვება ჩატვირთვისას Linux
@ reboot root /home/scripts/mount.sh

დამატებითი cron დაყენება
ამოცანების შესახებ მოხსენების მისაღებად კრონთქვენ შეგიძლიათ განსაზღვროთ MAIL ცვლადი დასაწყისში კრონსკრიპტი
MAIL=mail.mail.local
ნაგულისხმევად, ასო შეიცავს სკრიპტის მიერ გამომავალ ყველა შეტყობინებას; ამის თავიდან ასაცილებლად, თქვენ უნდა დაამატოთ > /dev/null 2>&1 სკრიპტის cron სამუშაოში.
Cron-დან შეტყობინებების მიღების გასათიშად, თქვენ უნდა დატოვოთ MAIL ცვლადი დაუყენებელი
ფოსტა = ””
შესაძლებელია ფაილისკენ მიმავალი გზის დადგენა სკრიპტით, მაგალითად, PATH ცვლადის გამოყენებით
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/scripts, crontab-ში საშუალებას მოგცემთ ჩაწეროთ სამუშაოს პარამეტრების ხაზში
@ reboot root mount.sh
სკრიპტების გაშვება cron-ის საშუალებით php თარჯიმნის გამოყენებით
* 1 * * * /usr/local/bin/php – q mount.sh > /dev/null 2>&1
/usr/local/bin/wget –O /dev/null –q http://"site.com/cron.php?action=123"

შესავალი

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

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

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

Crontab Timeweb მართვის პანელში

თუ თქვენი ანგარიში გადახდილია და არ დაგიჭირეს სპამი, მაშინ Crontab განყოფილება ხელმისაწვდომი და ფუნქციონალურია:

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

Crontab Timeweb-ის მართვის პანელში დაეხმარება ნებისმიერ მომხმარებელს საკუთარი ამოცანების ავტომატიზაციაში და საჭირო შედეგების მიღწევაში.

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

Crontab განყოფილებაში იქმნება ახალი ამოცანები. ამისათვის თქვენ უნდა შეავსოთ შემდეგი ველები:

  • სახელი. ეს არის ჩვენი დავალების სახელი.
  • Ფაილის ტიპიდა ფაილისკენ მიმავალი გზა. იმის მიხედვით, თუ რა ენაზეა დაწერილი სკრიპტი, აირჩიეთ ფაილის ტიპი და მისკენ მიმავალი გზა.თუ დავალება აწარმოებს სკრიპტს, რომელიც მოითხოვს ვებ სერვერის ცვლადებს, მისი გაშვება პირდაპირ PHP თარჯიმნის საშუალებით იწვევს შეცდომებს. ამიტომ, იმ შემთხვევაში, როდესაც იყენებთ სკრიპტს, რომელიც მუშაობს ბრაუზერის მისამართის ზოლში გაშვებისას, თქვენ უნდა აირჩიოთ ფაილის ტიპი "HTTP მოთხოვნა" და მიუთითოთ მოთხოვნის URL ისევე, როგორც ეს მითითებულია მისამართის ზოლი"your_site/path/to/script/script.php?parameter1=value1¶meter2=value2".

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

ნიუანსები

მცირე ნიუანსები, რომელთა დამახსოვრებაც ღირს კრონთან მუშაობისას.

1. Cron მუშაობს, თუ ანგარიში გადახდილია და არ არის შეზღუდვები.

სტატუსის შემოწმება შეგიძლიათ php გაფართოებით ფაილის შექმნით (მაგალითად, twtest.php) კოდით:

და ბრაუზერში ფაილზე წვდომა.

ბრაუზერში ნახავთ შემდეგ ინფორმაციას:

uid=12345(შესვლა) gid=600(მომხმარებლები) ჯგუფები=600(მომხმარებლები) - მიუთითებს, რომ cron და mail ხელმისაწვდომია

uid=12345(შესვლა) gid=600(მომხმარებლები) ჯგუფები=601(ახალი კლიენტები),600(მომხმარებლები),660(სპამერები) - დაწერეთ მხარდაჭერა

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

ნაგულისხმევად, ჰოსტინგზე ფაილები იქმნება უფლებებით 600. თქვენ შეგიძლიათ შეცვალოთ უფლებები საჭიროზე ssh-ის მეშვეობით ბრძანებით:

Chmod 744 twtest.php

ან შიგნით Ფაილის მენეჯერი, Timeweb-ს აქვს ინსტრუქციები ამის შესახებ:

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

CRON SSH-ზე

ssh-ის საშუალებით გრაფიკის დაყენება იმდენჯერ იქნა აღწერილი, რომ შეუძლებელია რაიმე ახლის თქმა.

ssh-ით დაკავშირება დეტალურად არის აღწერილი დახმარების ცენტრი Timeweb:

წაკითხვის შემდეგ, თქვენ უნდა იპოვოთ ფაილი სკრიპტით, გადაადგილებით დირექტორიებს შორის cd ბრძანებით. ფაილის პოვნის შემდეგ, შეიყვანეთ pwd და დააკოპირეთ გზა (მაგალითი "/home/c/cc123456/public_html/test/")

თუ არ იცით რა ნებართვები აქვს ფაილს, შეიყვანეთ:

Chmod 744 ფაილის სახელი

ssh-ის საშუალებით დაკავშირებისას შეგიძლიათ დავალებების რედაქტირება ბრძანებით

კრონტაბი -ე

პირველად სერვერი მოგთხოვთ რედაქტორის არჩევას:

აირჩიეთ რედაქტორი. მოგვიანებით შესაცვლელად გაუშვით "select-editor". 1. /bin/ed 2. /bin/nano<---- easiest 3. /usr/bin/mcedit 4. /usr/bin/vim.basic 5. /usr/bin/vim.tiny Choose 1-5 :

სისტემა მიუთითებს მარტივ ნანო რედაქტორზე მე-2 ნომრის ქვეშ. თუ არ გამოთვალეთ ძალები ან შემთხვევით შეარჩიეთ vi, არ ინერვიულოთ, დააჭირეთ Esc, შემდეგ შეიყვანეთ ორი წერტილი q და დააჭირეთ enter.

რედაქტორის შესაცვლელად შეიყვანეთ ბრძანება:

აირჩიეთ-რედაქტორი

და აირჩიეთ ნანო.

დავალებები იწერება სტრიქონით. მაგალითი:

1 2 3 4 5 /opt/php56/bin/php /home/с/сс123456/public_html/twtest.php

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

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

თითოეული პარამეტრისთვის შესაძლებელია მძიმით გამოყოფილი მნიშვნელობების საჭირო რაოდენობის მითითება. მაგალითად, თუ "საათების" ველში ჩაწერთ 8.23, მაშინ დავალება შესრულდება დილის 8 საათზე და საღამოს 11 საათზე. შეგიძლიათ დააყენოთ ინტერვალი: 9-18 ნიშნავს, რომ პროგრამა დაიწყება ყოველ საათში 9-დან 18 საათამდე. სიმბოლო "*" ნიშნავს "ყველა შესაძლო მნიშვნელობას". მაგალითად, "*"-ის მითითება "საათების" ველში ნიშნავს "გაშვებას ყოველ საათში". "/" სიმბოლო გამოიყენება სამუშაოს დამატებითი სიხშირის მითითებისთვის. მაგალითად, "*/3" "წუთების" ველში ნიშნავს "ყოველ სამ წუთში".

"/opt/php*/bin/php" სადაც php*/ = php53/ php5.3/ php54/ php5.4/ php56/ php5.6/ php70/ php7.0/ php71/ php7.1/

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

ნიუანსები

  1. როდესაც თქვენ განახორციელებთ ცვლილებებს საკონტროლო პანელში "Crontab" განყოფილებაში, ssh-ის საშუალებით შესრულებულ ჩანაწერებში ცვლილებები წაიშლება!
  2. თუ ორივე ველები "თვე" და "კვირის დღე" არის განსაზღვრული, მაშინ ასეთი სამუშაო შესრულდება კვირის თითოეულ მითითებულ დღეს, თვის დღის მიუხედავად. მაგალითად, შემდეგი ბრძანება იმუშავებს 9:19 საათზე ყოველ ოთხშაბათს და ყოველ 7 თვის, მაშინაც კი, თუ მე-7 არ არის იგივე ოთხშაბათი.

19 9 7 * 3 /opt/php56/bin/phpn /home/s/ss123456/public_html/twtest.php

განსაკუთრებული შემთხვევები

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

ამისათვის ჩაწერეთ crontab-ში:

* * * * * /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php; /ბინა/ძილი 30; /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php

ფაილის გაშვება ყოველ 30 წამში.

ზოგჯერ, როდესაც იყენებთ cron პროგრამის განრიგს, არ იცით რამდენი დრო დასჭირდება სკრიპტის გაშვებას. სკრიპტის ორჯერ გაშვების თავიდან ასაცილებლად, საჭიროა შემოწმება, რათა დარწმუნდეთ, რომ სკრიპტის წინა გაშვება დასრულდა.

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

საინჟინრო განყოფილების მაესტრომ განმარტა, თუ როგორ უნდა მოგვარდეს პრობლემა.

პირველი, შექმენით sh სკრიპტი ფაილში /home/c/cc123456/tmp/twtest.sh:

#!/bin/bash ბრძანება=$@ no_spaces=`echo $command | sed -e "s/\s/_/g" -e "s|/|_|g"` pidfile=/var/tmp/$no_spaces.pid lockfile=/var/tmp/$no_spaces.lockთუ [[ -e $pidfile ]] მაშინ pid=`cat $pidfile 2>/dev/null` ps h $pid >/dev/null 2>/dev/nullთუ [[$? -eq 0 ]] შემდეგ გამოდით 1 else rm $lockfile fi fi echo $$ > $pidfile /usr/bin/flock -w 0 $lockfile $command rm $pidfile

საკონტროლო პანელში, crontab განყოფილებაში, აირჩიეთ "შესრულებადი ორობითი ფაილის" ტიპი.

"სრული ბილიკი" ველში ვწერთ:

/home/c/cc123456/tmp/twtest.sh /opt/php56/bin/php /home/c/cc123456/tmp/twtest.php

სად

  • /home/c/cc123456/tmp/twtest.sh - ჩვენი ტესტის სკრიპტი
  • /opt/php56/bin/php - გზა სასურველი თარჯიმნისკენ
  • /home/c/cc123456/tmp/twtest.php - ჩვენი სკრიპტის გზა

ჩვენ მივუთითებთ გაშვების საჭირო დროს და გამოვყოფთ სახელს.

დასკვნა

ახლა თქვენ იცით, როგორ იმუშაოთ cron-თან და ამოცანები ავტომატურად აწარმოოთ. კრონის შესახებ დამატებითი ინფორმაციისთვის იხილეთ "man cron". Წარმატებები!

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

როგორ დააყენოთ cron თქვენს პირად ანგარიშში (unix ტარიფებისთვის)

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

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

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

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

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

[email protected]

Რა თქმა უნდა, მისამართი@domain.ruუნდა შეიცვალოს რეალური მისამართით ელფოსტასადაც საჭირო იქნება შეტყობინებების მიწოდება. თუ თქვენ გჭირდებათ შეცდომის შეტყობინებების მიღება რამდენიმე მისამართზე, მიუთითეთ ყველა ეს მისამართი გამოყოფილი მძიმით.

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

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

> /dev/null 2>&1

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

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

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

/usr/local/bin/php -l script.php

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

შეზღუდვები

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

(დაგეგმილი ამოცანები) გამოიყენება ბრძანებების შესრულების კონფიგურაციისთვის გრაფიკით ან მკაცრად განსაზღვრულ დროს. Გამოყენებით CronTabᲨეგიძლია იკითხო გარკვეული დრო, და ზუსტად ამ დროს შესრულდება თქვენ მიერ მითითებული ბრძანება. კონფიგურაცია CronTabშესაძლებელია ისე, რომ დავალება შესრულდეს ერთხელ თვე, დღეს, საათიდა ყოველ წუთსან, მაგალითად, ყოველ 10 წუთში. თქვენ ასევე შეგიძლიათ დააკავშიროთ, მაგალითად, თქვენ უნდა შეასრულოთ დავალება საათში ერთხელ პირველი 2 საათის განმავლობაში, შემდეგ არ შეასრულოთ შემდეგი 2 საათის განმავლობაში.

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

დავალების ოსტატი

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

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

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

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

ამოცანის ჩართვა/გამორთვა;
- შეცვალეთ დავალება;
- წაშალე დავალება.

CronTab-ის ხელით დაყენება.

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

Დროის ინტერვალი

წუთები შეიძლება იყოს 0 ადრე 59
საათები შეიძლება იყოს 0 ადრე 23
თვის დღე შეიძლება იყოს დან 1 ადრე 31
ერთი თვე ალბათ 1 ადრე 12
კვირის დღე შეიძლება იყოს დან 0 ადრე 7 , სადაც 0 და 7 კვირაა

შესაძლებელია კონფიგურაცია CronTabდავალებების შესრულება არა მხოლოდ გარკვეულ დროს
დრო, არამედ ყოველ წუთს, საათობრივი, ყოველდღიურად, ყოველკვირეულიან ყოველთვიური,
კომბინაციის გამოყენებით */x

მაგალითები

*/5 * * * * - გაუშვით ბრძანება ყოველ ხუთ წუთში
0 */3 * * * - სირბილი ყოველ სამ საათში
0 12-16 * * * - შეასრულეთ ბრძანება ყოველ საათში 12-დან 16-მდე (12, 13, 14, 15 და 16 საათზე)
0 12,16,18 * * * - გაუშვით ბრძანება ყოველ საათში 12, 16 და 18 საათზე

*/1 * * * * /usr/bin/php ~/site.ru/public_html/test.php- გაშვება php სკრიპტის test.php ყოველ წუთში
0 */1 * * * /usr/bin/perl ~/site.ru/public_html/test.pl- ყოველ საათში გაუშვით perl script test.pl

გუნდი

თქვენ უნდა დააყენოთ ბილიკი სკრიპტისკენ თქვენი მთავარი დირექტორიადან
მაგალითად: public_html/cgi-bin/script.pl
სისტემა ჩაანაცვლებს თავად სიმბოლოს ~/ (ეს კომბინაცია ცვლის სრულ გზას)
გამოვა: ~/public_html/cgi-bin/script.pl
თუ სიმბოლოს დააყენებთ ბილიკის ბოლოს & (აპერსანდი), შემდეგ სკრიპტი იმუშავებს ფონზე.
ამ სიმბოლოს დაყენება არჩევითია.