Το σχέδιο των εργασιών είναι ένα ουσιαστικό μέρος της διαχείρησης των κεντρικών υπολογιστών Linux. Ρίξαμε μια ματιά στο πώς να σχεδιάσουμε τις εργασίες στη χρησιμοποίηση μηχανών Linux cron εντολή νωρίτερα. Εδώ είναι μια εναλλακτική λύση cron - [[at]]. Η αρχική διαφορά μεταξύ των δύο είναι ότι όταν σχεδιάζετε έναν στόχο χρησιμοποιώντας cron αυτό εκτελέστε επανειλημμένα χωρίς την ανάγκη για. Με [[at]], αφ' ενός, ο σχεδιασμός ενός στόχου είναι μόνο για μια ενιαία εκτέλεση. Και οι δύο εντολές έχουν τη χρήση τους, και θα πρότεινα ότι κατανοείτε καλή τους και οι δύο.
Εξετάστε το πώς να σχεδιάσει έναν στόχο να εκτελεσθεί μόνο μιά φορά να χρησιμοποιήσει [[at]] εντολή. Αρχικά σιγουρευτείτε ότι στο daemon τρέχει χρησιμοποιώντας μια εντολή όπως αυτό:
# CP - EF | grep atd
ρίζα 8231 1 0 18:10; 00:00: 00 /usr/sbin/atd
Εάν δεν βλέπετε atd το τρέξιμο τον αρχίζει με αυτήν την εντολή:
# έναρξη του /etc/init.d/atd
Μόλις αρχίσει επιτυχώς το daemon μπορείτε να σχεδιάσετε [[at]] στόχος που χρησιμοποιεί τις δύο επιλογές - φ, για το αρχείο που εκτελείται, και - β, για το χρόνο στον οποίο πρέπει να εκτελεσθεί. Έτσι εάν θέλετε να εκτελέσετε το χειρόγραφο κοχυλιών shellscript.sh στον ΠΡΩΘΥΠΟΥΡΓΟ 6:30 θα τρέχατε την ακόλουθη εντολή:
# - φ shellscript.sh - στο β 18:30
Θυμηθείτε αυτού με [[at]] διατάξτε το χειρόγραφο shellscript.sh θα εκτελέσει στον ΠΡΩΘΥΠΟΥΡΓΟ 6:30 και έπειτα ο σχεδιασμός θα εξαφανιστεί. Έτσι εάν αυτό δεν είναι αυτό που επιθυμείτε, είστε καλύτερη χρησιμοποίηση cron.
[[at]] η εντολή είναι αρκετά έξυπνη δεδομένου ότι μπορεί να πάρει μερικές διαταγές στα αγγλικά εάν συμπαθείτε. Παραδείγματος χάριν, μπορείτε να σχεδιάσετε τις εργασίες χρησιμοποιώντας την ακόλουθη σύνταξη επίσης:
# - φ shellscript.sh 10pm αύριο
# - Τρίτη φ shellscript.sh 2:50
# - φ shellscript.sh 6:00 11 Ιουλίου
# - φ shellscript.sh 2:00 την προσεχή εβδομάδα

























{ 2 comments… read them below or add one }
If you don’t see atd running start it with this command:
# /etc/init.d/atd start
More correctly, if it isn’t running, it probably is not configured to startup when the system is restarted. Which may also keep the above command from working as expected. To correct this, use:
# chkconfig atd --level 234 on
# service atd start
and check again to make sure it is running, if it is, continue with the instructions (which are very good BTW).
I have another followup for you on use of the at command.
I’ve run into situations where I’ve needed a command run every hour BUT I needed the command to run ONLY if the previous run has completed. It might not be hung but it might be very very busy. I don’t mind skipping an hour’s execution if the process is still busy.
When this situation arises, I don’t use cron, I use ‘at’ and the last thing I put in my script is the at command itself to resubmit the job for execution.
Now, even if the job takes three hours, at the top of the following hour, the at command will launch the job as expected without cron jobs bumping into each other.
Yes, there’s ways to put the logic into a script for cron to deal with it but that can also be difficult to maintain and not as obvious (to some) as this approach.
Leave a Comment