Cron—τρέχει προγράμματα χρήστη σε καθορισμένο χρόνο. Τι είναι το Cron;

Πρόσφατα έπρεπε να ρυθμίσω μια προγραμματισμένη εργασία στον διακομιστή και την πρώτη φορά ήταν δύσκολη, ακόμα και τρομακτική. Ως εκ τούτου, αποφάσισα να γράψω ένα άρθρο σχετικά με τα στάδια της εγκατάστασης του Cron. Θα δημιουργήσουμε ένα απλό σενάριο PHP για να στέλνουμε ένα email μία φορά την ημέρα.

Απαιτούμενο βασικό επίπεδο

  • Βασική εμπειρία με τη γραμμή εντολών.
  • Δεξιότητες εργασίας με SSH σε διακομιστή Linux.

Καθήκοντα

  • Μάθετε πώς να ρυθμίζετε μια απλή προγραμματισμένη εργασία (cron job) σε περιβάλλον διακομιστή Linux.
  • Ρυθμίστε μια εργασία cron για να στέλνετε email καθημερινά σε καθορισμένη ώρα.

Αποστολή email με χρήση PHP

Πρώτα πρέπει να δημιουργήσετε ένα απλό σενάριο PHP για να δοκιμάσετε την εγκατάσταση του Cron Linux. Θα δημιουργήσω ένα αρχείο που στέλνει ένα email:

Εάν δεν είστε εξοικειωμένοι με τη συνάρτηση PHP mail(), ρίξτε μια ματιά επίσημη τεκμηρίωση. Ρυθμίζω μεταβλητές που καθορίζουν τον παραλήπτη, τη διεύθυνση email του αποστολέα, το θέμα, το περιεχόμενο του email και τις κεφαλίδες. Αυτός δεν είναι ο πιο σύγχρονος ή ασφαλής τρόπος αποστολής email. Αλλά λειτουργεί, οπότε θα το χρησιμοποιήσω για δοκιμή. Αποθηκεύουμε τον κώδικα στο αρχείο cron.php.

Η διαδρομή προς τον δημόσιο φάκελο θα εξαρτηθεί από τη διανομή Linux, αλλά τοποθέτησα το αρχείο cron.php στο /var/www/html/crontest. Έτσι, η πλήρης διαδρομή προς το σενάριό μου θα είναι η εξής: /var/www/html/crontest/cron.php. Μπορείτε να δοκιμάσετε αυτό το σενάριο απευθείας στο πρόγραμμα περιήγησης. Εάν ο ιστότοπός σας είναι example.com, η διεύθυνση αρχείου πιθανότατα θα είναι example.com/crontest/cron.php. Εάν εκτελέσετε το αρχείο και λάβετε ένα email, τότε το σενάριο λειτουργεί.

Το Localhost δεν έχει ρυθμιστεί για αποστολή αλληλογραφίας PHP, επομένως αυτό το σενάριο πρέπει να εκτελείται από περιβάλλον Linux.

Βασική σύνταξη Cron

Υπάρχει ένας χρήσιμος ιστότοπος που ονομάζεται 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

χρόνος παράδοσης— ορίζει λεπτά, ώρες, ημέρες, μήνες και ημέρες της εβδομάδας.

Εκτέλεση - Η εργασία cron πρέπει να καλέσει την PHP, η οποία βρίσκεται στο φάκελο /usr/bin/php.

Path to script - πλήρης διαδρομή προς το αρχείο που πρέπει να εκτελεστεί.

Αποτέλεσμα (προαιρετικό) - μπορείτε να γράψετε το αποτέλεσμα σε ένα αρχείο ή να απορρίψετε αυτό το τμήμα > /dev/null 2>&1 .

Στο παραπάνω παράδειγμα, η εργασία Linux Cron έχει ρυθμιστεί να στέλνει ένα email κάθε λεπτό της ώρας κάθε μέρα. Ο αστερίσκος είναι ένας χαρακτήρας μπαλαντέρ που αντιπροσωπεύει "όλα".

  • Λεπτά - ορίστε τα λεπτά, από 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. Ορίσαμε ως αποστολή μας να στέλνουμε email μία φορά την ημέρα, οπότε η πλήρης εντολή θα είναι:

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

Αφού συνδεθείτε στον διακομιστή SSH, μπορείτε να ελέγξετε αν υπάρχουν άλλες εργασίες που βρίσκονται σε εξέλιξη. Αυτό μπορεί να γίνει χρησιμοποιώντας την παρακάτω εντολή.

crontab -l crontab: δεν υπάρχει crontab για χρήστη

Τώρα θα επεξεργαστούμε το crontab:

Σε αυτό το σημείο πιθανότατα θα εργάζεστε στον επεξεργαστή vi, εάν δεν έχετε αλλάξει ποτέ τον προεπιλεγμένο επεξεργαστή του διακομιστή σας. Την πρώτη φορά που ρυθμίζετε το Cron μπορεί να είναι λίγο μπερδεμένο.

Δείτε τι πρέπει να κάνετε:

  1. Πατήστε esc;
  2. Πατήστε i για να ξεκινήσετε την επεξεργασία του αρχείου.
  3. Επικολλήστε την εντολή cron στο αρχείο.
  4. Πατήστε ξανά το esc για έξοδο από τη λειτουργία επεξεργασίας.
  5. Πληκτρολογήστε :wq για να αποθηκεύσετε τις αλλαγές στο αρχείο ( w - γράφω) και βγείτε ( q - παραιτηθείτε).

Τώρα το crontab έχει αποθηκευτεί και το email θα πρέπει να αποστέλλεται μία φορά την ημέρα τα μεσάνυχτα. Μπορείτε να ρυθμίσετε * / 5 * * * * - κάθε 5 λεπτά για να ελέγχετε τη λειτουργία του.

Μπορείτε επίσης να προσθέσετε πολλές εργασίες cron στο αρχείο. Για να το κάνετε αυτό, βάλτε κάθε εντολή σε ξεχωριστή γραμμή.

Μετάφραση του άρθρου " Ρύθμιση μιας βασικής εργασίας Cron στο Linux» φιλική ομάδα έργου

Το Cron χρησιμοποιείται για την αυτοματοποίηση της εκτέλεσης των εργασιών που έχουν ανατεθεί στον διακομιστή. Λειτουργεί σε Linux και είναι ιδανικό για την εκτέλεση ενός προγράμματος ή ενός σεναρίου για συγκεκριμένο χρόνο και συχνότητα προγραμματίζοντας το εκ των προτέρων.

Ρύθμιση του Cron Job Scheduler

Οι εργασίες που απαιτούνται να εκτελεστούν γράφονται με τη μορφή γραμμών στις οποίες είναι απαραίτητο να υποδεικνύεται η περίοδος ενεργοποίησης και μια εντολή που υποδεικνύει τι ακριβώς πρέπει να εκκινηθεί. Για κάθε εργασία εκχωρείται ξεχωριστή γραμμή. Για παράδειγμα:

30 3 * * 2 /yourdirectory/myscript.pl

Σε μια γλώσσα πιο κατανοητή στον κοινό χρήστη, αναφέρονται τα ακόλουθα: Λεπτά/Ώρες/Ημέρα του Μήνα/Ημέρα της εβδομάδας/Εντολή. Αυτό το παράδειγμα σημαίνει ότι στις 3:30 π.μ., κάθε Τρίτη, ο Cron θα πρέπει να εκκινεί ένα αρχείο που ονομάζεται youdirectory/myscript.pl.

Εάν αναφέρετε τις τιμές που χωρίζονται με κόμμα, για παράδειγμα, στο στοιχείο "Ημέρα" γράφετε 2,4,6, τότε το αρχείο θα εκκινείται την καθορισμένη ώρα κάθε Τρίτη, Πέμπτη και Σάββατο.

Εάν καθορίσετε τιμές που χωρίζονται με παύλα, η εργασία θα εκτελεστεί στο καθορισμένο χρονικό διάστημα. Για παράδειγμα, εάν ορίσετε 3-7 στο στοιχείο "Ρολόι", το αρχείο θα εκτελείται κάθε ώρα από τις 3 έως τις 7 π.μ.

Μπορείτε επίσης να ορίσετε τη συχνότητα γράφοντας στη στήλη του χρόνου, για παράδειγμα, στο "Ώρες" /12. Στη συνέχεια, η εργασία θα εκτελείται κάθε 12 ώρες.

Είναι σημαντικό να γνωρίζετε ότι το "*" δεν σημαίνει καμία τιμή, αλλά όλες τις πιθανές τιμές. Δηλαδή, εάν ορίσετε * * * * 1 /yourdirectory/myscript.pl, επιθυμώντας το αρχείο να εκτελείται κάθε Δευτέρα, τότε αυτό θα αποδειχθεί εντελώς λανθασμένο και το αρχείο θα εκτελείται κάθε λεπτό.

Ένα άλλο σημαντικό χαρακτηριστικό είναι η ανάγκη καθορισμού μιας απόλυτης διαδρομής προς το αρχείο. Και επίσης το αρχείο πρέπει να έχει τέτοια δικαιώματα πρόσβασης ώστε να μπορεί τουλάχιστον να εκκινηθεί.

Από τα παραδείγματα που παρουσιάζονται, γίνεται σαφές ότι αυτός ο προγραμματιστής εργασιών στο Linux είναι ένα πολύ βολικό εργαλείο, επομένως σας προτείνουμε να εξοικειωθείτε με ορισμένες από τις δυνατότητές του με περισσότερες λεπτομέρειες.

Η απλούστερη και πιο κοινή μέθοδος εργασίας με το Cron είναι ο πίνακας διαχείρισης φιλοξενίας. Ωστόσο, η διαμόρφωση Cron εμφανίζεται διαφορετικά για διαφορετικούς πίνακες.

Μερικές φορές συμβαίνει ότι η φιλοξενία δεν παρέχει τη δυνατότητα εργασίας με το Cron μέσω του πίνακα διαχείρισης. Σε μια τέτοια περίπτωση, χρησιμοποιείται το πρωτόκολλο SSH. Χρησιμοποιώντας το, συνδέεστε στον διακομιστή χρησιμοποιώντας το πρόγραμμα PuTTY και εισάγετε εργασίες στη γραμμή εντολών.

Για να ξεκινήσετε, πληκτρολογήστε την εντολή:

Crontab –ε

Στη συνέχεια θα μεταφερθείτε στο vi - ένα πρόγραμμα επεξεργασίας κειμένου, ωστόσο, αυτοί οι επεξεργαστές μπορεί να είναι διαφορετικοί για διαφορετικούς παρόχους φιλοξενίας. Εάν δεν είστε εξοικειωμένοι με την εργασία στο vi, μπορείτε να εισαγάγετε την εντολή: EDITOR=ee crontab –e, η οποία θα σας ανακατευθύνει σε έναν απλούστερο και πιο διαισθητικό επεξεργαστή.

Εάν η φιλοξενία δεν υποστηρίζει το πρόγραμμα επεξεργασίας που ανοίγει, θα πρέπει να καταλάβετε πώς λειτουργεί το vi:

  • για να εισαγάγετε κείμενο, πρέπει να μεταβείτε στη λειτουργία με το ίδιο όνομα πατώντας το κουμπί "i".
  • για έξοδο από τη λειτουργία, χρησιμοποιήστε το κουμπί "Esc".
  • Για να διαγράψετε έναν χαρακτήρα στη λειτουργία εισαγωγής κειμένου, χρησιμοποιήστε τα πλήκτρα "Esc" και μετά "x".
  • για αποθήκευση και έξοδο από το αρχείο, πατήστε “:wq”;
  • Φροντίστε να πατήσετε το πλήκτρο "Enter" στο τέλος κάθε γραμμής, αυτό είναι απαραίτητο για να λειτουργήσει το Cron.
  • Για να προβάλετε υπάρχουσες εργασίες στο Cron, εισαγάγετε την εντολή crontrab -l.

Παραδείγματα εργασιών Cron στο Linux

- Εκτελέστε την εργασία κάθε 6 ώρες στα 30 λεπτά κάθε μέρα κάθε μήνα:

30 */6 * * * /yourdirectory/myscript.pl

— Εκτελέστε την εργασία μετά από κάθε επανεκκίνηση:

@reboot/yourdirectory/myscript.pl

— Ολοκληρώστε την εργασία στις 15 κάθε μήνα στις 00:00:

0 0 15 * * /yourdirectory/myscript.pl

Αρχεία PHP

Για να εκτελέσετε σενάρια PHP, συνήθως χρησιμοποιείτε έναν διερμηνέα. Δεν υπάρχουν καθολικές οδηγίες για τη λειτουργία του, αφού διαφορετικοί πάροχοι φιλοξενίας χρησιμοποιούν μια ποικιλία λογισμικού. Ως αποτέλεσμα, το WGET χρησιμοποιείται συχνά για την εκτέλεση της PHP στο Cron. Εισαγάγετε την ακόλουθη καταχώρηση:

1 2 * * 3 ρίζες wget -O - -q -t 1 http://mysite.com/file.php

Ας το δούμε αναλυτικότερα:

  • "-O-" - εμποδίζει το Cron να δημιουργήσει πρόσθετα αρχεία, απαλλάσσοντας έτσι τον διακομιστή από περιττά σκουπίδια, καθώς η εργασία πραγματοποιείται στην κονσόλα.
  • "q" - οι λειτουργίες δεν εμφανίζονται πλέον στην οθόνη.
  • "t-1"—επιτρέψτε μόνο μία προσπάθεια σύνδεσης.

Περιορισμοί Cron

Το ίδιο το Cron έχει μόνο έναν περιορισμό - την περίοδο εκτέλεσης της εργασίας. Εάν υπερφορτώνετε τον διακομιστή φιλοξενίας σας, μπορεί να εμποδίσει την εκτέλεση του Cron περισσότερες από μία φορές κάθε λίγα λεπτά ή μία ώρα. Επιπλέον, το Cron περιορίζεται μόνο από πόρους διακομιστή, όπως RAM, όγκους δεδομένων, χρόνο εκτέλεσης εντολών κ.λπ.

Εάν ο διακομιστής κάνει επανεκκίνηση, το Cron θα αποθηκεύσει όλες τις εργασίες σας, κάνοντας επανεκκίνηση μαζί του.

Κανω ΑΝΑΦΟΡΑ

Το Cron έχει μια ρύθμιση για τη ρύθμιση ειδοποιήσεων μέσω email σχετικά με τη δουλειά του. Αυτό είναι ιδιαίτερα χρήσιμο εάν παρουσιαστεί κάποιο σφάλμα κατά τη λειτουργία. Για να ενεργοποιήσετε τέτοιες ειδοποιήσεις μέσω email, πρέπει να εισαγάγετε την ακόλουθη γραμμή στο crontab:

MAILTO= [email προστατευμένο]

Μετά το MAILTO= εμφανίζεται η απαιτούμενη αλληλογραφία. Μπορείτε να καθορίσετε πολλά από αυτά ταυτόχρονα, αναφέροντάς τα χωρισμένα με κόμμα. Τώρα, εάν συμβεί κάποιο σφάλμα, θα ενημερωθείτε σχετικά. Επιπλέον, τα αποτελέσματα των σεναρίων θα σταλούν και στο email σας. Ωστόσο, εάν αυτή η λειτουργία σας ενοχλεί, μπορείτε να την απενεργοποιήσετε πληκτρολογώντας την εντολή > /dev/null 2>&1 στο τέλος της εργασίας.

Cron (στέμμα), Crontab (crontab), Διαχειριστής εργασιών- όλοι όσοι ασχολούνται με το "site building" έχουν ακούσει αυτά τα ονόματα περισσότερες από μία φορές. Τι είναι λοιπόν το Cron; Πώς να εργαστείτε με αυτό; Γιατί χρειάζεστε το Cron και πώς να το ρυθμίσετε σωστά;Θα εξετάσουμε όλες αυτές τις ερωτήσεις σήμερα.

Το πρώτο πράγμα που θέλω να σημειώσω αμέσως: Cron, Crontab, Διαχειριστής εργασιών- Είναι το ίδιο πράγμα, μην σας μπερδεύει η ποικιλία των ονομάτων.

Στην πρακτική οποιουδήποτε webmaster, θα υπάρχει πάντα η ανάγκη εκτέλεσης ορισμένων εργασιών σε ένα χρονοδιάγραμμα. Εκείνοι. Απλώς καταχωρείτε την εντολή που χρειάζεστε για να εκτελέσετε μια εργασία σε μια δεδομένη στιγμή, και αυτό είναι. Τότε όλα γίνονται χωρίς τη συμμετοχή σας - αυτόματα, και το καλύτερο, τη στιγμή που χρειάζεστε.

Για παράδειγμα, πρέπει να στέλνετε περιοδικά ειδοποιήσεις σε συνεργάτες μέσω email. Ή θέλετε να ορίσετε αυτόματους χαιρετισμούς ή υπενθυμίσεις. Ή έχετε έναν κατάλογο τοποθεσιών και θέλετε το σενάριο καταλόγου να ελέγχει τους συνδέσμους επιστροφής κ.λπ., σε μια καθορισμένη συχνότητα. Όλες αυτές οι εργασίες μπορούν εύκολα να αυτοματοποιηθούν αναθέτοντάς τις στον Cron ή, όπως λένε επίσης - Χρονοδιάγραμμα εργασιών. Και υπάρχουν σενάρια στα οποία το Cron είναι απλώς απαραίτητο για την κανονική λειτουργία.

Σχεδόν όλοι οι σύγχρονοι πάροχοι φιλοξενίας παρέχουν μια έτοιμη λειτουργία Χρονοδιάγραμμα εργασιών. Εάν δεν υπάρχει τέτοια λειτουργία στο Hosting, τότε είναι προτιμότερο να μην επικοινωνήσετε με μια τέτοια εταιρεία Φιλοξενίας. Το Cron αυτές τις μέρες δεν είναι πλέον πολυτέλεια και αν η Hosting δεν προσφέρει προγραμματιστή εργασιών στο πακέτο των υπηρεσιών, καλύτερα να ψάξετε για άλλη εταιρεία, πιθανότατα δεν θα έχουν άλλες σημαντικές λειτουργίες.

Λοιπόν, ας δούμε όλα τα πρακτικά βήματα για τη ρύθμιση του Cron χρησιμοποιώντας το παράδειγμα του ρωσικού cPane l (πίνακας ελέγχου τοποθεσίας) Hudson Hosting Company. Γιατί ακριβώς Ουδσών? Είναι απλό - ο ιστότοπός μου ζει εδώ και μου αρέσει πολύ αυτή η Φιλοξενία: ένα πλήρες πακέτο όλων των δυνατών υπηρεσιών σε πολύ λογική τιμή.

Αν και η ρύθμιση Χρονοδιάγραμμα εργασιώνσυμβαίνει περίπου το ίδιο παντού.

Πηγαίνουμε στον πίνακα ελέγχου του ιστότοπου, σε αυτήν την περίπτωση είναι το cPanel (υπάρχουν και άλλοι). Η πρόσβαση παρέχεται σε εσάς αμέσως μετά την αγορά Φιλοξενία, κατεβείτε παρακάτω και βρείτε αυτήν την ενότητα, Πρόσθετα εργαλεία:

Βρίσκουμε σε αυτή την ενότητα Διαχειριστής εργασιώνκαι κάντε κλικ σε αυτό. Αυτό το μενού ονομάζεται μερικές φορές Cron Panel. Δείτε πώς χαρακτηρίζεται ο Cron:

"Ο προγραμματιστής εργασιών σάς επιτρέπει να εκτελείτε εντολές σε καθορισμένο χρόνο χωρίς τη συμμετοχή σας. Αυτό σας επιτρέπει να αυτοματοποιείτε τακτικά επαναλαμβανόμενες εργασίες. Ο προγραμματιστής εργασιών είναι πολύ ευέλικτος και σας επιτρέπει να αυτοματοποιείτε την εκτέλεση οποιωνδήποτε εντολών θέλετε να εκτελέσετε. Για παράδειγμα , μπορείτε να πείτε στον προγραμματιστή να διαγράφει τα προσωρινά αρχεία κάθε εβδομάδα, ώστε να μην καταλαμβάνουν πολύ χώρο στο δίσκο σας."

Υπάρχουν δύο επιλογές για τη διαχείριση του Crohn:

Πρότυπο και Για προχωρημένους (στυλ Unix), ας δούμε το καθένα από αυτά.

Πρώτη επιλογή.Κάντε κλικ στο κουμπί Standard, ανοίγει το παράθυρο εγκατάστασης εργασιών:

Όπως μπορείτε να δείτε, όλα είναι πολύ απλά εδώ. Απλώς πρέπει να ορίσετε τον χρόνο εκτέλεσης της εντολής υποδεικνύοντας στα κατάλληλα πεδία πότε θα εκτελεστεί η εντολή και σε ποια ώρα: λεπτά, Ωρα, Ημέρα, Μήνας, Ημέρα της εβδομάδας. Και φυσικά, εισαγάγετε την ίδια την εντολή εκκίνησης στο πεδίο: Εντολή για τρέξιμο.

Οι τιμές μπορούν να γραφτούν είτε χειροκίνητα (στο αριστερό πεδίο) είτε χρησιμοποιώντας την αναπτυσσόμενη λίστα (βέλη στα δεξιά).

Ας καταλάβουμε τι γράψαμε εδώ. Και γράψαμε την ακόλουθη εργασία: εκτελέστε την εντολή για εκτέλεση:
/usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
κάθε 30 λεπτά, κάθε 6 ώρες, κάθε μέρα του Ιανουαρίου αν πέσει Δευτέρα.

Αφού εγκαταστήσετε την εργασία, κάντε κλικ στο κουμπί Προσθήκη νέας εργασίας Cron.

Δεν είναι ξεκάθαρο τι έγραψες; :) Ας δούμε τη δεύτερη επιλογή και μετά θα σας εξηγήσω με περισσότερες λεπτομέρειες. Επιστρέφουμε στην προηγούμενη σελίδα.

Δεύτερη επιλογή.Κάντε κλικ στο κουμπί Για προχωρημένους (στυλ Unix), ανοίγει το παράθυρο εγκατάστασης εργασιών:

Μου αρέσει αυτή η επιλογή για τη ρύθμιση της εργασίας για τον Krohn καλύτερα. Και παρόλο που λέγεται Advanced, κατά τη γνώμη μου είναι πιο απλό και πιο βολικό.

Εδώ, όπως και στην πρώτη περίπτωση, πρέπει να υποδείξετε πότε θα ξεκινήσει η εντολή, υποδεικνύουμε επίσης: λεπτάμικρό, Ωραμικρό, Ημέρα, Μήνας, Ημέρα της εβδομάδαςκαι την ίδια την εργασία για εκτέλεση στο πεδίο Ομάδα. Μετά από αυτό, κάντε κλικ στο κουμπί Προσθήκη Cronjob. Η εργασία έχει τεθεί. Η σελίδα ενημερώνεται:

Και μπορείτε να προσθέσετε μια νέα εργασία επαναλαμβάνοντας ξανά ολόκληρη τη διαδικασία. Μπορείτε να διαγράψετε μια εργασία κάνοντας κλικ στο σταυρό δίπλα στην εργασία στα δεξιά.

Υπάρχει μια ακόμη προαιρετική παράμετρος, αλλά συνιστώ να την καθορίσετε: αυτή διεύθυνση ηλεκτρονικού ταχυδρομείου. Σε αυτή τη διεύθυνση θα σταλεί αναφορά για την εκτέλεση της εντολής. Το πεδίο είναι προαιρετικό, αλλά είναι καλύτερο να εισαγάγετε τη διεύθυνση για να είστε ενήμεροι για το θέμα, εάν κάτι πάει στραβά, ο Kron θα σας ενημερώσει σχετικά με ένα γράμμα και εάν το γράμμα φτάσει κενό, τότε όλα είναι εντάξει!

Τι γράψαμε εδώ; Εκτελέστε την εντολή στα 11 λεπτά, κάθε 2η ώρα, κάθε μέρα, κάθε μήνα, 1η, 3η, 5η, 7η ημέρα της εβδομάδας.

Στο πεδίο επιλογής: λεπτάυποδεικνύετε το λεπτό (ή λεπτά) κατά το οποίο θα εκκινηθεί η εργασία στο πεδίο Ωραυποδεικνύετε την ώρα (ή τις ώρες) κατά την οποία θα εκτελεστεί η εργασία, καθώς και τις ημέρες και μήνες, σε κάθε πεδίο μπορείτε να καθορίσετε μια συγκεκριμένη ώρα και ένα διάστημα.

Για παράδειγμα, μπορείτε να καθορίσετε όχι μόνο 11 λεπτά, αλλά 11-15 (διάστημα), αυτό σημαίνει ότι η εργασία θα εκτελείται κάθε 11, 12, 13, 14, 15 λεπτά. Ή καθορίστε συγκεκριμένα λεπτά, για παράδειγμα: 11, 14, 18 - αυτό σημαίνει ότι η εργασία θα ξεκινήσει στα 11, 14 και 18 λεπτά. Μπορείτε επίσης να χρησιμοποιήσετε το σημάδι * (αστερίσκος)- δηλώνει το καθένα . Αν βάλεις * (αστερίσκος)στο πεδίο Λεπτά, τότε η εργασία θα εκκινείται κάθε λεπτό, π.χ. 60 φορές την ώρα.

Σε κάθε πεδίο μπορείτε να καθορίσετε και μια συγκεκριμένη ώρα και ένα διάστημα, καθώς και να χρησιμοποιήσετε αστερίσκους.

Ρεκόρ */2 που σημαίνει: κάθε 2 ώρες. Όλες αυτές οι παραλλαγές εγγραφών ισχύουν για όλα τα πεδία ( λεπτάμικρό, Ωραμικρό, Ημέρα, Μήνας, Ημέρα της εβδομάδας) κατά τον καθορισμό της εργασίας στο Kron. Καταλαβαίνετε ότι μπορεί να υπάρχουν εκατομμύρια επιλογές. Εκτελέστε την εργασία για εκτέλεση, ακόμη και κάθε λεπτό όλο το χρόνο. Φυσικά, σχεδόν ποτέ δεν προκύπτει τέτοια ανάγκη, αλλά θεωρητικά υπάρχει μια τέτοια πιθανότητα.

Και να έχετε επίσης υπόψη σας ότι ορισμένοι ιστότοποι φιλοξενίας επιβάλλουν περιορισμούς στη λειτουργία του Crohn, για παράδειγμα, όχι περισσότερες από 3 - 10 φορές την ώρα. Γιατί; Αυτό δημιουργεί αρκετά αξιοσημείωτο φορτίο στον διακομιστή. Για παράβαση, ο λογαριασμός σας ενδέχεται να αποκλειστεί.

Τώρα ας δούμε πώς συμπληρώνεται το πεδίο Εντολή για τρέξιμο(στην πρώτη επιλογή) ή Command (στη δεύτερη επιλογή).

Η εργασία καθορίζεται ως εξής.

Πρώτα απ 'όλα, υποδεικνύετε τη διαδρομή προς την PHP στον διακομιστή σας, στον διακομιστή μου η διαδρομή είναι /usr/bin/php, η δική σας μπορεί να είναι διαφορετική, επικοινωνήστε με τους διαχειριστές του διακομιστή σας, μετά τη διαδρομή προς την PHP βάλτε ένα κενό και γράψτε την πλήρη εσωτερική διαδρομή προς το αρχείο που πρέπει να εκτελέσει το Cron. Ας υποθέσουμε ότι χρειάζομαι το Cron για να τρέξει το αρχείο mail.php, γνωρίζοντας την εσωτερική διαδρομή προς το αρχείο, γράφω τα εξής:

public_html/cron/mail.php

εκείνοι. στον ριζικό φάκελο public_html, υπάρχει ένας φάκελος cron στον οποίο βρίσκεται το αρχείο mail.php και η πλήρης εντολή για την εκτέλεση του αρχείου mail.php θα μοιάζει με αυτό:

/usr/bin/php /public_html/cron/mail.php

Σε διαφορετικά hosting, η διαδρομή προς την PHP μπορεί να είναι διαφορετική και να γράφεται διαφορετικά, ο ριζικός φάκελος της τοποθεσίας του ιστότοπου επίσης δεν είναι πάντα ο ίδιος public_html, οπότε αν δεν υπάρχει συγκεκριμένο παράδειγμα εγγραφής μιας εργασίας Crohn, τότε είναι καλύτερο να ρωτήσετε τον διαχειριστή σχετικά με αυτό, περιγράφοντας τι θέλετε να λάβετε στο τέλος. Καλός

31 Μαρτίου 2014 στις 11:26 π.μ

Κάνοντας τη «ζωή» στο Linux ευκολότερη ή αυτοματοποιώντας την εκκίνηση διαδικασιών χρησιμοποιώντας το cron

  • Εγκατάσταση Linux,
  • *νεράιδα
Εισαγωγή
Καθισμένος στο φορητό υπολογιστή μου το βράδυ και χαζεύοντας μελετώντας μια άλλη διανομή Linux στην εικονική μηχανή, αναρωτήθηκα: Είναι δυνατόν να απλοποιήσω τη ρουτίνα εκκίνησης των διαδικασιών; Αν ενδιαφέρεστε, δείτε το cat. Το άρθρο έχει ενημερωτικό χαρακτήρα και προορίζεται κυρίως για νεοφερμένους στο λειτουργικό σύστημα Linux, αλλά οι έμπειροι χρήστες Linux μπορεί επίσης να μπορούν να μάθουν κάτι νέο για τον εαυτό τους.
atd και cron daemons
Μετά από λίγο γκουγκλάρισμα και διάβασμα, έμαθα για δύο δαίμονες: atdΚαι cron. Αρνήθηκα το πρώτο λόγω των περιορισμών του και της ταλαιπωρίας να δουλέψω μαζί του. Θα ήθελα όμως να μιλήσω για το δεύτερο πιο αναλυτικά.
Εάν ο υπολογιστής σας ξαφνικά, φαινομενικά χωρίς λόγο, αρχίσει να ψάχνει στο δίσκο, να σας στέλνει mail κ.λπ., τότε πιθανότατα αυτό είναι έργο δαίμονα cron

Μάικλ Κόφλερ" Linux.Εγκατάσταση, διαμόρφωση, διαχείριση." - Αγία Πετρούπολη: Πέτρος, 2014

Τι ακριβώς κάνει λοιπόν αυτό; cron. Ο δαίμονας ενεργοποιείται ανά διαστήματα ενός λεπτού και ελέγχει τα αρχεία crontabκαι εκκινεί τα προγράμματα που καθορίζονται σε αυτά. Αρχικά, χρησιμοποιείται κατά τη συντήρηση του συστήματος, αλλά ο χρήστης μπορεί να το χρησιμοποιήσει για να λύσει τα δικά του προβλήματα.

Εάν έχετε εγκαταστήσει μια κανονική διανομή, τότε δεν έχετε τίποτα να ανησυχείτε, cronεγκαθίσταται αυτόματα. Εάν είναι ελάχιστο, τότε μην εκνευρίζεστε - πηγαίνετε στο τερματικό.
yum εγκατάσταση vixie-cron //(RHEL - Red Hat Enterprise Linux)
ή
apt-get install cron //(Διανομές τύπου Deabian)
Η πρόσβαση χρήστη στον δαίμονα ρυθμίζεται στον κατάλογο /var/spool/cron/tabs/user. Τα δικαιώματά τους ορίζονται σε αρχεία /cron/allowΚαι /αρνούμαι. Προσθήκη χρήστη σε /επιτρέπωτου επιτρέπουμε να εκτελέσει την εντολή cron, και εάν προσθέσετε έναν χρήστη σε /αρνούμαι, τότε αντίθετα, θα απαγορευτεί στον χρήστη η χρήση του δαίμονα.

Εγώ ο ίδιος cronρυθμιστεί στον κατάλογο /etc/crontab. Αρχείο /crontabή αρχεία σε /etc/cron. ρεπεριέχει μια λίστα εντολών που πρέπει να εκτελεστούν. Η σύνταξη είναι:
στο /etc/crontab [λεπτό][ώρα][ημέρα][μήνας][εβδομάδα][χρήστης][εντολή]
Για παράδειγμα, εάν χρειάζεται να κάνω ping στο ya.ru κάθε 15 λεπτά για λογαριασμό του υπερχρήστη, τότε πρέπει να προσθέσω τα εξής:
*/15 **** root ping ya.ru
Εάν κάποιο από τα πρώτα πέντε πεδία περιέχει τον χαρακτήρα *, τότε αυτό το πεδίο αγνοείται. Η προηγούμενη εντολή δεν προσδιορίζει ούτε τον μήνα ούτε την εβδομάδα, επομένως θα εκτελείται κάθε 15 λεπτά. Για να αλλάξετε τη διαμόρφωση, χρησιμοποιήστε την εντολή στο τερματικό viή να αλλάξετε χειροκίνητα τα περιεχόμενα του αρχείου /etc/crontab.

Εργασία με .hourly, .daily, .weekly, .monthly
Από προεπιλογή σχεδόν σε όλες τις διανομές, το αρχείο /etc/crontabπεριέχει μερικές μόνο εγγραφές που απαιτούνται για την εκτέλεση των σεναρίων:
/etc/cron.hourly/*- σενάρια που τρέχουν κάθε ώρα
/etc/cron.daily/*- σενάρια που εκτελούνται καθημερινά
/etc/cron.weekly/*- σενάρια που εκτελούνται κάθε εβδομάδα
/etc/cron.monthly/*- σενάρια που εκτελούνται κάθε μήνα

Για να εκτελέσετε τις εντολές σας από τον δαίμονα, προσθέστε ένα σενάριο που εκτελεί τις εντολές σε έναν από τους καταλόγους. Μην ξεχάσετε να ρυθμίσετε το bit execute (αρχείο chmod a+x). Εάν δεν το κάνετε αυτό, τότε το σενάριό σας απλά δεν θα έχει πρόσβαση και δεν θα εκτελεστεί!
Για να ελέγξετε εάν το σενάριό σας θα εκτελεστεί, εκτελέστε την εντολή
run-parts --test /etc/cron.daily
Εάν το σενάριο βρίσκεται σε διαφορετικό κατάλογο, αλλάξτε ανάλογα καθημερινάεπί Μηνιαίοκαι τα λοιπά.
Και να θυμάστε, το όνομα του σεναρίου δεν μπορεί να περιέχει τελείες, άλλα σύμβολα εκτός από τελείες. Η εντολή run-parts απλώς αγνοεί τα σενάρια κουκκίδων, δεν ξέρω γιατί.

Anacron
Εκτός από τον δαίμονα cron. Οι περισσότερες διανομές έρχονται με εγκατεστημένο τον προγραμματιστή εργασιών Anacron. Το καθήκον του είναι να εκτελεί σενάρια μία φορά (κατ' απαίτηση) /etc/cron.nόπου το n μπορεί να πάρει τρεις τιμές: καθημερινά, εβδομαδιαίος, Μηνιαίο. Αφού ολοκληρωθούν, κλείνει και δεν κολλάει στο σύστημα όπως cron. Επίσης το Anacron δεν εκτελεί σενάρια από τον κατάλογο /etc/cron.hourly, αυτό είναι το προνόμιο cron. Η καθολική διαμόρφωση Anacron γίνεται στον κατάλογο /etc/anacrontab, αλλά οι προεπιλεγμένες ρυθμίσεις είναι συνήθως αρκετές.
ΥΣΤΕΡΟΓΡΑΦΟ.
Για να απλοποιήσετε την εργασία με τις καθημερινές εργασίες ενός διαχειριστή συστήματος που εργάζεται μέσω ssh, είναι πιο σκόπιμο να χρησιμοποιήσετε cronκαι απενεργοποιήστε το Anacron, καθώς εκτελεί εργασίες μία κάθε φορά, και cronαγνοεί τις εργασίες που εκτελεί ο Anacron. Ως αποτέλεσμα, όλες οι εργασίες σας θα ολοκληρωθούν μόνο μία φορά. Στις περισσότερες διανομές, η εργασία με τον δαίμονα είναι σχεδόν η ίδια, αλλά αν αντιμετωπίζετε προβλήματα, χρησιμοποιήστε το wiki για το Linux σας. 8 Απριλίου 2015 στις 11:57 π.μ

Εκτέλεση ενός σεναρίου PHP σε πρόγραμμα cron. Όταν όλα δεν είναι τόσο ξεκάθαρα

  • PHP
  • Ανάπτυξη ιστοσελίδας

Σε αυτό το άρθρο, θα μιλήσω για μερικές από τις περιπλοκές της εκτέλεσης σεναρίων PHP σε ιστότοπους φιλοξενίας, η άγνοια των οποίων μπορεί να χαλάσει πολλά νεύρα τόσο για αρχάριους όσο και για ενδιάμεσους προγραμματιστές.
Λόγος για τη σύνταξη αυτού του άρθρου:προβλήματα με την εκτέλεση σεναρίων σε ιστότοπους φιλοξενίας με διαφορετικές ρυθμίσεις. Και επειδή οι ρυθμίσεις μπορεί να είναι διαφορετικές, οι πληροφορίες που παρέχονται για γενικές περιπτώσεις μπορεί να μην είναι κατάλληλες και μπορεί να είναι παραπλανητικές.

Μια μικρή θεωρία σε αυτούς τους συνδέσμους: και, για όσους θέλουν να φρεσκάρουν τη μνήμη τους.

Περίπτωση πρώτη

Οι ρυθμίσεις του λειτουργικού συστήματος δεν καθορίζουν προεπιλεγμένες διαδρομές. Ως αποτέλεσμα, η επόμενη εντολή cron δεν θα εκτελεστεί.

Php /var/www/LOGIN/data/www/SITE/cron.php
Η σωστή εντολή θα ήταν η δεύτερη επιλογή, όπου θα γράψουμε την πλήρη διαδρομή προς τον διερμηνέα php.

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php
Υπάρχουν αρκετοί ακόμη τρόποι εκτέλεσης ενός σεναρίου PHP που περιγράφεται. Αυτό που θα είναι ενδιαφέρον εδώ είναι ότι το σενάριο php εκκινείται ως αρχείο με εντολές για την κονσόλα, και εδώ μπορείτε να γράψετε μια ολόκληρη δέσμη εντολών και να περιγράψετε όλα τα είδη επιλογών για κάθε γούστο. Ο κώδικας μοιάζει με αυτό.

#!/usr/bin/php
Η εντολή που θα εκτελεστεί στο cron καθορίζει τη διαδρομή προς το σενάριο και τίποτα περισσότερο. Το σενάριο περιέχει σύμβολα #!, και στη συνέχεια γράφουμε απλώς τις εντολές που χρειαζόμαστε στο bash.

Περίπτωση δεύτερη

Η εκτέλεση του σεναρίου όταν ζητηθεί από το πρόγραμμα περιήγησης έχει ως αποτέλεσμα η σελίδα να εμφανίζεται στο πρόγραμμα περιήγησης. Και κατά την εκτέλεση του σεναρίου μέσω cron, καταλήγει στην έξοδο του κειμένου της σελίδας στη γραμμή εντολών. Μπορεί να υπάρχουν πολλές επιλογές εδώ. Το σύστημα μπορεί να ρυθμιστεί ώστε να αποθηκεύει την έξοδο στην κονσόλα ως αρχείο. Επιπλέον, αυτό το αρχείο ενδέχεται να μην βρίσκεται στο πιο τυπικό μέρος. Σταδιακά, αυτό μπορεί να γεμίσει όλο το χώρο στο δίσκο. Συχνά, σε έναν ιστότοπο δίνεται χώρος 1 Gigabyte, 500 megabyte. Και υπήρχαν ακόμη και φιλοξενίες με 50 και 10 megabyte για τον ιστότοπο.

Εναλλακτικά, η έξοδος μπορεί να ανακατευθυνθεί σε ένα γραμματοκιβώτιο που σας έδωσε διακριτικά ένας φιλόξενος οικοδεσπότης και να εγγραφεί στις ρυθμίσεις φιλοξενίας ως το προεπιλεγμένο email. Κάθε φορά που εκτελείται το σενάριο, όλο το κείμενο που εξάγεται στην κονσόλα θα μορφοποιείται ως γράμμα. Τα προβλήματα μπορεί να ξεκινήσουν απροσδόκητα. Εάν μια εργασία cron εκτελείται συχνά και το email φιλοξενίας έχει ένα όριο στον αριθμό των email ανά ημέρα, το email απλά θα αποτύχει (θα αποκλειστεί από τον πάροχο ως πιθανό spammer). Και ως δυσάρεστες συνέπειες, θα λάβετε μια άρνηση εγγραφής χρηστών, ειδοποίησης χρηστών κ.λπ., η οποία συνδέεται με την αλληλογραφία.

Η λύση είναι τόσο παλιά όσο ο χρόνος. Είναι απαραίτητο να ανακατευθύνετε την έξοδο από την κονσόλα στο κενό. Αυτό γίνεται προσθέτοντας την εντολή στο τέλος της εντολής cron.

>>dev/null 2>&1
Μερικές φορές οι διαχειριστές φιλοξενίας αναλαμβάνουν να τις εγκαταστήσουν διακριτικά για τον χρήστη. Μπορεί επίσης να υπάρχει μια παγίδα εδώ.

Περίπτωση τρίτη

Η κατάσταση είναι απλή. Πρέπει να διορθώσουμε το σενάριο που ξεκίνησε από τον προγραμματιστή. Μπορείτε να δοκιμάσετε να το κάνετε αυτό χρησιμοποιώντας PHP, να αναγκάσετε το σενάριο να γράψει αρχεία καταγραφής κ.λπ. Αλλά υπάρχει ένας πολύ πιο απλός τρόπος, πρέπει να ανακατευθύνετε την έξοδο σε ένα αρχείο. Η εντολή είναι απλή, μια πρόσθετη παράμετρος στην εντολή μας:

>
Πρέπει να προστεθεί στο τέλος της εντολής:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html
Το σύμβολο ">" λέει στο σύστημα να ανακατευθύνει την έξοδο. Ακολουθεί το όνομα του αρχείου. Στην περίπτωσή μας, προσδιορίζεται η απόλυτη διαδρομή. Αυτό το παράδειγμα δεν είναι δύσκολο να βρεθεί στο Διαδίκτυο. Αλλά εδώ μπορεί να μας περιμένουν προβλήματα, που προκύπτουν από τη δεύτερη περίπτωση. Ένας στοχαστικός hoster προσθέτει αυτόματα μια ανακατεύθυνση εξόδου στο τέλος της γραμμής μας. Και μερικές φορές το συγκαλύπτει. Το αποτέλεσμα είναι μια εντολή όπως:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html >/dev/null 2>&1
Ως αποτέλεσμα, η έξοδος ανακατευθύνεται ξανά στο κενό και το αρχείο εξόδου θα είναι κενό. Εδώ μπορείτε να επισημάνετε στον οικοδεσπότη το λάθος του, ότι ήταν πολύ έξυπνος με τις ρυθμίσεις. Ή μπορείτε να χρησιμοποιήσετε αμέσως ένα δεκανίκι. Μετά την εντολή ανακατεύθυνσης σε αρχείο, τερματίστε την εντολή με χαρακτήρες &&. Αυτοί οι δύο χαρακτήρες χρησιμοποιούνται στη γραμμή εντολών για να συνδυάσουν πολλές εντολές σε μία γραμμή. Ενημερώνουν τη γραμμή εντολών ότι η εντολή ολοκληρώθηκε και έρχεται η επόμενη εντολή. Η ανακατεύθυνση στο κενό εφαρμόζεται σε αυτό. Ως αποτέλεσμα, η ανακατεύθυνση στο κενό παρέμεινε και το αρχείο καταγραφής γράφτηκε σωστά. Παράδειγμα εντολής:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html && >/dev/null 2>&1

Περίπτωση τέταρτη

Το σενάριο ξεκίνησε, αλλά δεν λειτουργεί σωστά. Ο λόγος για αυτό είναι ότι ο διερμηνέας php, όταν εκκινείται από τη γραμμή εντολών, αρχίζει να λειτουργεί σε ένα εσφαλμένα διαμορφωμένο περιβάλλον, διαφορετικό από αυτό που θα ήταν όταν εκκινείτο μέσω ενός διακομιστή HTTP. Το πρώτο σημάδι είναι ότι το σενάριο δεν βρίσκει αρχεία που βρίσκονται στον ίδιο κατάλογο με αυτό, αλλά αρχίζει να θεωρεί ότι βρίσκεται στον ριζικό κατάλογο του χρήστη, ο οποίος είναι αρκετοί φάκελοι υψηλότερα από τη ρίζα του ιστότοπου. Το πρώτο πράγμα που πρέπει να ελέγξετε είναι η μεταβλητή περιβάλλοντος και ο υπερ-καθολικός πίνακας $_SERVER.

Το πρώτο πράγμα που θα βρείτε στο Διαδίκτυο σχετικά με αυτό το πρόβλημα είναι η συμβουλή να γράψετε μια εντολή αλλαγής καταλόγου στο στέμμα:

Cd /var/www/LOGIN/data/www/SITE/
Αλλά σε ορισμένες περιπτώσεις αυτό δεν βοηθά. Υπάρχει έξοδος. Ένα από αυτά είναι να πάρετε τα πάντα στα χέρια σας και να ρυθμίσετε το περιβάλλον που λείπει για να λειτουργήσει το σενάριο. Υπάρχουν ήδη περισσότερες πληροφορίες σχετικά με αυτό στο Διαδίκτυο.

Μερικές φορές χρειάζεται απλώς να εισαγάγετε τον ακόλουθο κώδικα στην αρχή του σεναρίου και οι διαδρομές λειτουργούν ξανά.

$path_parts = pathinfo($_SERVER["SCRIPT_FILENAME"]); // καθορίζει τον κατάλογο σεναρίων chdir($path_parts["dirname"]); // ορίστε τον κατάλογο εκτέλεσης σεναρίου
Όπως μπορείτε να δείτε, όλα είναι γραμμένα σε λειτουργίες και δεν χρειάζεται να ασχοληθείτε με τις ρυθμίσεις.

συμπέρασμα

Αυτό είναι όλο. Τα προβλήματα και οι λύσεις δεν είναι ασήμαντα, και γενικά ένας τέτοιος συνδυασμός αποτυχημένων ρυθμίσεων είναι σπάνιος. Καλή τύχη καθώς αναπτύσσετε τα έργα σας και κινείστε.