J'ai entendu dire que crontab était un bon choix, mais comment puis-je écrire la ligne et où la placer sur le serveur?
Voici un bon tutoriel sur ce qu'est crontab et comment l'utiliser sur Ubuntu. Votre ligne crontab ressemblera à quelque chose comme ceci:
00 00 * * * Ruby path/to/your/script.rb
(00 00
indique minuit - 0 minute et 0 heure - et le *
signifie tous les jours de chaque mois.)
Syntaxe: Mm hh jj mt wd commande Mm minute 0-59 Hh heure 0-23 Jj jour du mois 1-31 mt mois 1-12 jj jour de la semaine 0-7 (dimanche = 0 ou 7) Commande : ce que vous voulez exécuter toutes les valeurs numériques peuvent être remplacées par *, ce qui signifie toutes les
depuis la page de manuel
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Il est bon de noter les "surnoms" spéciaux qui peuvent être utilisés (documentés dans la page de manuel), en particulier "@reboot" qui n’a pas d’alternative à l’heure et à la date.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
Vous pouvez également utiliser cette astuce pour exécuter votre travail cron plusieurs fois par minute.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Pour ajouter un travail cron, vous pouvez faire l’une des trois choses suivantes:
ajoutez une commande à la crontab d'un utilisateur, comme indiqué ci-dessus (et à partir de la crontab, section 5, page de manuel).
crontab -e -u <username>
crontab -e
EDITOR
env EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
crée un script/programme en tant que tâche cron et l'ajoute aux répertoires anacron /etc/cron.*ly
du système
chmod a+x /etc/cron.daily/script_runs_daily.sh
- le rendre exécutableman anacron
chmod a+x <file>
/etc/crontab
ou /etc/anacrontab
pour s'exécuter à une heure définie./etc/anacrontab
et cron.hourly dans /etc/cron.d/0hourly
Ou, on peut créer des crontables système dans /etc/cron.d
.
/etc/cron.d
n'ont pas besoin d'être exécutables.someuser
, et l'utilisation de /bin/bash
en tant que shell est forcée. File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
Shell=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Parfois, vous devrez spécifier PATH et GEM_PATH en utilisant crontab avec rvm.
Comme ça:
# top of crontab file
PATH=/home/user_name/.rvm/gems/Ruby-2.2.0/bin:/home/user_name/.rvm/gems/Ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/Ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/Ruby-2.2.0:/home/user_name/.rvm/gems/Ruby-2.2.0@global
# jobs
00 00 * * * Ruby path/to/your/script.rb
00 */4 * * * Ruby path/to/your/script2.rb
00 8,12,22 * * * Ruby path/to/your/script3.rb
Guide rapide pour configurer un travail cron
Créez un nouveau fichier texte, exemple: mycronjobs.txt
Enregistrez les échéances dans mycronjobs.txt pour chaque travail quotidien (00:00, 03:45).
00 00 * * * Ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
Envoyez les tâches à cron (chaque fois que vous exécutez ceci, cron supprime ce qui a été stocké et met à jour les nouvelles informations dans mycronjobs.txt )
crontab mycronjobs.txt
Informations utiles supplémentaires
Voir les emplois cron actuels
crontab -l
Supprimer tous les travaux cron
crontab -r
Vous pouvez exécuter un script shell de deux manières: en utilisant le travail cron ou en écrivant un script shell.
Supposons que votre nom de script est "yourscript.sh"
Commencez par vérifier l'autorisation utilisateur du script. Utilisez la commande ci-dessous pour vérifier les permissions du script.
ll script.sh
Si le script est à la racine, utilisez la commande ci-dessous
Sudo crontab -e
Deuxièmement, si le script contient l'utilisateur "ubuntu", utilisez la commande ci-dessous
crontab -e
Ajoutez la ligne suivante dans votre crontab: -
55 23 * * * /path/to/yourscript.sh
Une autre façon de faire est d’écrire un script et de le lancer en tâche de fond.
Voici le script où vous devez mettre votre nom de script (par exemple: - youscript.sh) qui sera exécuté à 23h55 tous les jours
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done
enregistrez-le dans un fichier (nommez-le "every-day.sh")
sleep 1d - signifie qu'il attend un jour puis il s'exécute à nouveau.
donnez maintenant la permission à votre commande script.use ci-dessous: -
chmod + x every-day.sh
maintenant, exécutez ce script Shell en arrière-plan en utilisant "Nohup". Ceci continuera à exécuter le script même après vous être déconnecté de votre session.
utilisez la commande ci-dessous pour exécuter le script.
Nohup ./every-day.sh &
Remarque: - pour exécuter "yourscript.sh" à 23h55 chaque jour, vous devez exécuter le script "every-day.sh" à exactement 23h55.
Placez cette phrase dans un fichier crontab: 0 0 * * */usr/local/bin/python /opt/ByAccount.py> /var/log/cron.log 2> & 1