web-dev-qa-db-fra.com

Crontab une fois par jour dans Ubuntu 12.04

J'ai installé un VPS avec Ubuntu 12.04 et je souhaite maintenant exécuter un cronjob une fois par jour.

La ligne de commande est la suivante:

    mono /root/Folder/Aplication.exe

J'ai regardé et regardé sur Internet, mais je n'arrive pas à comprendre comment le faire. Par exemple, je souhaite exécuter cette commande toutes les 24 heures à minuit.

Merci d’avance de lire ma question et bien sûr pour toutes les réponses.

1
ManouHH

Puisqu'il y a des différences complémentaires entre @ Guss et ma réponse, je la quitterai.

Voici une illustration de cronjobs setup ( source ):

* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
  • Si vous voulez exécuter un travail avec votre $ USER tous les jours à 00h15, vous devez éditer le fichier utilisateur crontab (situé dans /var/spool/cron/crontabs/<user_name>). Vous pouvez le faire avec la commande crontab -e. (Peut-être apparaitra-t-il une boîte de dialogue dans laquelle vous devrez choisir l'éditeur de texte du terminal par défaut.) À la fin du fichier crontab, ajoutez la ligne suivante:

    15 0 * * * /usr/bin/mono /root/Folder/Aplication.exe > /var/log/mono.daily.log 2>&1
    
    • /usr/bin/mono il est recommandé d'utiliser le chemin complet de la commande dans Cron. Pour le trouver, vous pouvez utiliser Sudo updatedb && Sudo whereis mono.
    • > /var/log/mono.daily.log cette partie redirige la sortie vers un fichier journal, au cas où vous voudriez suivre ce qui se passe avec votre cronjob. Si vous souhaitez conserver les données du journal des jours précédents, vous pouvez utiliser >> au lieu de >.
    • 2>&1 cette partie mettra les messages d'erreur dans le fichier journal.
  • Si vous souhaitez exécuter un travail avec root , vous devez modifier son fichier crontab: Sudocrontab -e et ajoutez la ligne indiquée ci-dessus.

  • De plus, pour tous les jours cronjobs, vous pouvez ajouter un fichier exécutable dans le dossier /etc/cron.daily. Pour trouver un exemple, vérifiez certains fichiers existants dans ce dossier.

1
pa4080

Vous exécutez des travaux planifiés dans Ubuntu (et d’autres Linux) à l’aide de cron. Une chose importante à retenir à propos de cron est qu’il existe des "tables utilisateur" et des "tables système".

Si vous souhaitez que votre application s'exécute dans le contexte d'un utilisateur, sa procédure est relativement simple: connectez-vous en tant qu'utilisateur et exécutez crontab -e. Vous entreriez dans un éditeur où vous éditeriez la table cron manuellement.

Sous une table utilisateur cron, vous avez 6 champs:

<minute> <hour> <day-of-month> <month> <day-of-week> <command ...>

Les champs sont séparés par des espaces, à l'exception de "command", qui s'étend jusqu'à la fin de la ligne (avec certaines mises en garde). Lisez man 5 crontab pour les détails sanglants.

Pour exécuter quelque chose tous les jours, vous pouvez choisir une heure, puis la programmer dans les deux premiers champs, en laissant tous les autres champs sous forme d’astérisque (c’est-à-dire "tout ce qui se passe"). Donc l'expression

1 2 * * * mono /root/Folder/Aplication.exe

Lancez votre application mono tous les jours (tous les jours de chaque mois, quel que soit le jour de la semaine - ce sont les 3 astérisques) à 2h01 du matin (les deux premiers champs).

Maintenant, parce que je vois que vous avez installé votre application sous /root, je suppose que vous souhaiterez peut-être exécuter cette application en tant qu'application système - ce qui est également plus logique lors de la configuration d'un serveur dans un VPS. Une crontab système est très similaire à une crontab utilisateur, à la différence qu’elle est stockée dans un fichier du répertoire /etc et qu’elle contient un champ supplémentaire spécifiant sous quel utilisateur vous voulez l’exécuter - qui sera probablement root. Donc, l'expression pourrait ressembler à ceci:

1 2 * * * root mono /root/Folder/Aplication.exe

et vous voulez probablement mettre cela dans un nouveau fichier que vous créeriez sous /etc/cron.d/ - peut-être /etc/cron.d/myapp (notez qu'il n'y a pas d'extension - c'est fait exprès). Sous /etc/, il existe plusieurs autres fichiers et répertoires crontab, ce qui peut s'avérer très utile pour des tâches telles que les exécutions quotidiennes, telles que /etc/cron.daily, à lire dans la page de manuel relative aux fichiers crontab mentionnée ci-dessus.

Remarques

  1. Ne pas exécuter Ubuntu 12.04 - c'est super obsolète. Mieux essayer 16.04
  2. Checkout (Crontab.Gur pour tous vos besoins d’expression crontab.
1
Guss