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

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

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

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

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

Δημοσίευσηαπό sudobash » 19 Αύγ 2008, 12:02

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.
Ubuntu 9.10 32bit | 2 x Intel Core 2 Duo T5500 @ 1.66GHz | 2GB DDR2 RAM | Intel 950 Graphics
Richard Stallman wrote the compiler God used. The Big Bang was the Universe's first segfault.
Άβαταρ μέλους
sudobash
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 876
Εγγραφή: 13 Μάιος 2008, 20:11
Τοποθεσία: Κρήτη
Εκτύπωση

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

Δημοσίευσηαπό ftso » 21 Αύγ 2008, 04:00

Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

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



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

και εγώ έχω κλειστό το pc στις 00:00...θα εκτελεστεί μόλις το ανοίξω ή δεν θα εκτελεστεί ποτέ?
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

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

Δημοσίευσηαπό bullgr » 21 Αύγ 2008, 11:16

ftso έγραψε:Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

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

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


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

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

Τα cronjobs εκτελούνται μόνο όταν εκείνη τη χρονική στιγμή ο υπολογιστής είναι ανοικτός. Οπότε εάν τον έχεις κλειστό εκείνη τη στιγμή παρακάμπτεται για την επόμενη προγραμματισμένη εκτέλεση. Με λίγα λόγια εάν τον έχεις τον υπολογιστή πάντοτε κλειστό εκείνη τη χρονική στιγμή, δεν θα εκτελεστεί ποτέ!!! :shock:
ΕΠΙΤΡΕΠΕΤΑΙ ΝΑ ΠΕΣΕΙΣ, ΕΠΙΒΑΛΛΕΤΑΙ ΝΑ ΣΗΚΩΘΕΙΣ... HASTA SIEMPRE...
Άβαταρ μέλους
bullgr
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 1853
Εγγραφή: 10 Μάιος 2008, 21:45
Εκτύπωση

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

Δημοσίευσηαπό sudobash » 21 Αύγ 2008, 11:21

ftso έγραψε:Ένα λάθος: :)
Κώδικας: Επιλογή όλων
# |  |  |  |  +---- μέρα της εβδομάδας (0 - 7)

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

Το έβαλα έτσι γιατί απλά κάποιες εκδόσεις δέχονται την Κυριακή και σαν 0 και σαν 7, γι'αυτό και έβαλα (0-7)...
Ubuntu 9.10 32bit | 2 x Intel Core 2 Duo T5500 @ 1.66GHz | 2GB DDR2 RAM | Intel 950 Graphics
Richard Stallman wrote the compiler God used. The Big Bang was the Universe's first segfault.
Άβαταρ μέλους
sudobash
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 876
Εγγραφή: 13 Μάιος 2008, 20:11
Τοποθεσία: Κρήτη
Εκτύπωση

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

Δημοσίευσηαπό Alexandros » 13 Φεβ 2009, 13:52

Που ακριβώς περνάμε αυτές τις εντολές; Και πώς τις αποθηκεύουμε;


Γράφω

crontab -e

και μου ανοίγει κάτι αλλά δεν έχει δυνατότητα αποθήκευσης...
ACER ASPIRE 5920G-934G32Bn, Intel Core 2 Duo T9300 (2.5 GHz FSB, 6MB L2 Cache, 800 MHz FSB), 4GB (2x2 GB) DDR2, Nvidia, GEFORCE 9500M-GS 512MB, 15.4 WXGA CB,802.11N - https://www.viralnews.gr/index.php/ygeia-kathimerinotita/item/392-seminario-facebook
Alexandros
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 981
Εγγραφή: 08 Ιούλ 2008, 14:07
Εκτύπωση

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

Δημοσίευσηαπό Dimitris » 13 Φεβ 2009, 14:08

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

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

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


Καιρός να γράψω έναν οδηγό για το vi. Πάντα το ήθελα.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

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

Δημοσίευσηαπό Alexandros » 13 Φεβ 2009, 14:14

Μπα, δεν γίνεται τίποτα. Κάτι nano γράφει το παράθυρο και ούτε με i ούτε με esc αλλάζει κάτι.

Επίσης, εγώ αυτά τα γράφω σε command ή edit;;;
ACER ASPIRE 5920G-934G32Bn, Intel Core 2 Duo T9300 (2.5 GHz FSB, 6MB L2 Cache, 800 MHz FSB), 4GB (2x2 GB) DDR2, Nvidia, GEFORCE 9500M-GS 512MB, 15.4 WXGA CB,802.11N - https://www.viralnews.gr/index.php/ygeia-kathimerinotita/item/392-seminario-facebook
Alexandros
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 981
Εγγραφή: 08 Ιούλ 2008, 14:07
Εκτύπωση

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

Δημοσίευσηαπό Dimitris » 13 Φεβ 2009, 14:18

Α, οκ. Σε μενα είναι το vi :D default. Nano είναι ένας άλλος κειμενογράφος, πολύ πιο εύχρηστος από το vi. Εκεί βλέπεις τις εντολές, γιατί ρωτάς; ^ σημαίνει cntrl. Tι πιο απλό; Στο vi να δεις γούστα που έψαχνα για κάτι μήνες να βρω το copy-paste :mrgreen:
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

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

Δημοσίευσηαπό Alexandros » 13 Φεβ 2009, 14:28

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

Γράφω cron -e και μου ανοίγει ένα "περίεργο" αρχείο. Εκεί δεν ξέρω που πρέπει να γράψω τι και επίσης δεν κάνει σε καμιά περίπτωση save.
ACER ASPIRE 5920G-934G32Bn, Intel Core 2 Duo T9300 (2.5 GHz FSB, 6MB L2 Cache, 800 MHz FSB), 4GB (2x2 GB) DDR2, Nvidia, GEFORCE 9500M-GS 512MB, 15.4 WXGA CB,802.11N - https://www.viralnews.gr/index.php/ygeia-kathimerinotita/item/392-seminario-facebook
Alexandros
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 981
Εγγραφή: 08 Ιούλ 2008, 14:07
Εκτύπωση

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

Δημοσίευσηαπό Dimitris » 13 Φεβ 2009, 16:18

Οκ, συγγνώμη, μη φωνάζεις. Το τι πρέπει να γράψεις το λέει ο οδηγός παραπάνω. Καλύτερα δε μπορώ να τα εξηγήσω. Αν τώρα όντως γράφει 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 που λέει). Αν δοκιμάσεις να πατήσεις ^Χ, έξοδος δηλαδή, πριν σώσεις το αρχείο κατά την εξοδο θα σε ρωτήσει πως να το αποθηκεύσεις.

Ό,τι απορία έχεις μη διστάσεις να ρωτήσεις. Απλώς καμιά φορά αν δε πειραματιστούμε και μόνοι μας δε μαθαίνουμε.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Επόμενο

Επιστροφή στο Οδηγοί - How to - Tutorials