Σελίδα 1 από 5

Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 19 Αύγ 2008, 12:02
από sudobash
Cron jobs
Για το χρονοπρογραμματισμό κάποιων εργασιών στο linux χρησιμοποιούνται τα cron jobs.

Προβολή ενεργών cron jobs
Για να δούμε τι προγραμματισμένες εργασίες (cron jobs) υπάρχουν ανά πάσα στιγμή στο pc μας, γράφουμε:
Κώδικας: Επιλογή όλων
crontab -l


Προσθήκη νέου cron job
Έτσι, έστω για παράδειγμα ότι έχουμε ένα εκτελέσιμο αρχείο (το my_script) και το οποίο θέλουμε να το προγραμματίσουμε να εκτελείται σε συγκεκριμένες χρονικές στιγμές. Αφού κάνουμε το αρχείο εκτελέσιμο γράφοντας
Κώδικας: Επιλογή όλων
chmod +x my_script

προγραμματίζουμε την εκτέλεση του με cron job. Για να προσθέσουμε κάποιο cron job, γράφουμε:
Κώδικας: Επιλογή όλων
crontab -e

οπότε και προσθέτουμε σε μια γραμμή το cron job σου σε μορφή:
Κώδικας: Επιλογή όλων
45     15     *     *     *         my_script

αυτό σημαίνει ότι κάθε μέρα θα εκτελεί στις 15:45 το αρχείο my_script.

Γενικές οδηγίες
Γενικότερα η σειρά μέσα στο cron έχει ως εξής:
Κώδικας: Επιλογή όλων
# +---------------- λεπτό (0 - 59)
# |  +------------- ώρα (0 - 23)
# |  |  +---------- ημέρα του μήνα (1 - 31)
# |  |  |  +------- μήνας (1 - 12)
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)
# |  |  |  |  |
  *  *  *  *  *  εντολή που θα εκτελεστεί

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

Πχ. το cron job:
Κώδικας: Επιλογή όλων
30     10     1     1,6,12     *     echo 'Hello world!'

θα τυπώσει το "Hello world!" στις 10:30 την 1η Ιανουαρίου, Ιουνίου και Δεκεμβρίου.

Αφαίρεση υπάρχοντος cron job
Για να αφαιρέσουμε κάποιο cron job, γράφουμε:
Κώδικας: Επιλογή όλων
crontab -e

και σβήνουμε τη γραμμή με το cron job.

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 21 Αύγ 2008, 04:00
από ftso
Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

το 7 πρέπει να είναι 6 νομίζω



Και μια ερώτηση: :?:
Αν δώσω το εξής :
Κώδικας: Επιλογή όλων
0     0     *     *     *     echo "Hello world!"

και εγώ έχω κλειστό το pc στις 00:00...θα εκτελεστεί μόλις το ανοίξω ή δεν θα εκτελεστεί ποτέ?

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 21 Αύγ 2008, 11:16
από bullgr
ftso έγραψε:Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

το 7 πρέπει να είναι 6 νομίζω

Συμφωνώ αφού το μηδέν στην ουσία αντιστοιχεί στην πρώτη μέρα οπότε για τις 7 μέρες της εβδομάδος έχουμε 0-6


ftso έγραψε:Και μια ερώτηση: :?:
Αν δώσω το εξής :
Κώδικας: Επιλογή όλων
0     0     *     *     *     echo "Hello world!"

και εγώ έχω κλειστό το pc στις 00:00...θα εκτελεστεί μόλις το ανοίξω ή δεν θα εκτελεστεί ποτέ?

Τα cronjobs εκτελούνται μόνο όταν εκείνη τη χρονική στιγμή ο υπολογιστής είναι ανοικτός. Οπότε εάν τον έχεις κλειστό εκείνη τη στιγμή παρακάμπτεται για την επόμενη προγραμματισμένη εκτέλεση. Με λίγα λόγια εάν τον έχεις τον υπολογιστή πάντοτε κλειστό εκείνη τη χρονική στιγμή, δεν θα εκτελεστεί ποτέ!!! :shock:

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 21 Αύγ 2008, 11:21
από sudobash
ftso έγραψε:Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

το 7 πρέπει να είναι 6 νομίζω

Το έβαλα έτσι γιατί απλά κάποιες εκδόσεις δέχονται την Κυριακή και σαν 0 και σαν 7, γι'αυτό και έβαλα (0-7)...

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 13:52
από Alexandros
Που ακριβώς περνάμε αυτές τις εντολές; Και πώς τις αποθηκεύουμε;


Γράφω

crontab -e

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

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 14:08
από Dimitris
Σε βγάζει σε περιβάλλον vi, ο πιο ισχυρός κειμενογράφος που υπήρξε και θα υπάρξει ποτέ. Υπάρχουν δύο modes: command & edit. Όταν είσαι σε command mode πατάς i για να πας σε edit. Αν είσαι σε εdit πατας esc για να πας σε command. (Yπαρχει και ένα ακόμη record mode αλλά ξεχνα το, αν βρεθείς εκεί πατα απλώς esc).
Για αποθηκευση, από command mode,γράφεις
Κώδικας: Επιλογή όλων
:w

Για έξοδο, από command mode,γράφεις
Κώδικας: Επιλογή όλων
:q

Για να κάνεις και τα δυο ταυτόχρονα γράφεις
Κώδικας: Επιλογή όλων
:wq


Καιρός να γράψω έναν οδηγό για το vi. Πάντα το ήθελα.

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 14:14
από Alexandros
Μπα, δεν γίνεται τίποτα. Κάτι nano γράφει το παράθυρο και ούτε με i ούτε με esc αλλάζει κάτι.

Επίσης, εγώ αυτά τα γράφω σε command ή edit;;;

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 14:18
από Dimitris
Α, οκ. Σε μενα είναι το vi :D default. Nano είναι ένας άλλος κειμενογράφος, πολύ πιο εύχρηστος από το vi. Εκεί βλέπεις τις εντολές, γιατί ρωτάς; ^ σημαίνει cntrl. Tι πιο απλό; Στο vi να δεις γούστα που έψαχνα για κάτι μήνες να βρω το copy-paste :mrgreen:

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 14:28
από Alexandros
Επειδή για κάποιους από εμάς όλα αυτά ΔΕΝ είναι προφανή, μου εξηγείς σε παρακαλώ σε απλώ βήματα τι πρέπει να κάνω; :oops: :oops: :oops:

Γράφω cron -e και μου ανοίγει ένα "περίεργο" αρχείο. Εκεί δεν ξέρω που πρέπει να γράψω τι και επίσης δεν κάνει σε καμιά περίπτωση save.

Re: Προγραμματισμένες εργασίες με cron jobs

ΔημοσίευσηΔημοσιεύτηκε: 13 Φεβ 2009, 16:18
από Dimitris
Οκ, συγγνώμη, μη φωνάζεις. Το τι πρέπει να γράψεις το λέει ο οδηγός παραπάνω. Καλύτερα δε μπορώ να τα εξηγήσω. Αν τώρα όντως γράφει GNU nano τότε κάτω θα βλέπεις κάτι παρόμοιο:
Κώδικας: Επιλογή όλων
                                               [ New File ]
^G Get Help           ^O WriteOut           ^R Read File          ^Y Prev Page          ^K Cut Text           ^C Cur Pos
^X Exit               ^J Justify            ^W Where Is           ^V Next Page          ^U UnCut Txt          ^T To Spell

Aν τώρα πατήσεις ^G που όπως είπα παραπάνω σημαίνει ctrl G τότε θα σου βγάλει όλες τις επεξηγήσεις. Για να αποθηκεύσεις κάτι πατάς ^O (write out που λέει). Αν δοκιμάσεις να πατήσεις ^Χ, έξοδος δηλαδή, πριν σώσεις το αρχείο κατά την εξοδο θα σε ρωτήσει πως να το αποθηκεύσεις.

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