{"id":86,"date":"2008-08-17T16:08:03","date_gmt":"2008-08-17T14:08:03","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=86"},"modified":"2008-08-17T16:08:03","modified_gmt":"2008-08-17T14:08:03","slug":"planification-de-taches-la-commande-at","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2008\/08\/planification-de-taches-la-commande-at\/","title":{"rendered":"Planification de t\u00e2ches &#8211; la commande at"},"content":{"rendered":"<p>Lorsque vous voulez planifier le lancement d&rsquo;une t\u00e2che de mani\u00e8re r\u00e9p\u00e9titive (tous le jours, toutes les heures, le 1er janvier&#8230;) vous utilisez la command <em>cron<\/em>. Par contre, si cette t\u00e2che ne doit \u00eatre lanc\u00e9e qu&rsquo;une seule fois, vous utiliserez la command <em>at<\/em>.<br \/>\nLa commande <em>at<\/em> est une commande tr\u00e8s facile \u00e0 utiliser. Il suffit de taper dans un terminal <em>at<\/em> suivi de l&rsquo;heure, le jour o\u00f9 la t\u00e2che devra \u00eatre ex\u00e9cut\u00e9e. Par exemple:<\/p>\n<pre class=\"codesource\">\r\n$ at 16:45\r\n$ at 16:45 010109\r\n$ at midnight\r\n$ at now  # tr\u00e8s utile pour les tests\r\n$ at 16:45 + 3 days\r\n<\/pre>\n<p>Elle s&rsquo;utilise soit de fa\u00e7on interactive soit en ligne de commande. <\/p>\n<h3>M\u00e9thode interactive<\/h3>\n<p>Vous tapez dans un terminal la commande <em>at<\/em> suivi de l&rsquo;heure, le jour&#8230; et en retour vous obtenez un prompt qui vous permet de taper la commande \u00e0 lancer \u00e0 l&rsquo;heure dite. Pour sortir, tapez <em>Ctrl+D<\/em>.<\/p>\n<pre class=\"codesource\">\r\n$ at 16:45\r\nwarning: commands will be executed using \/bin\/sh\r\nat> backup.sh\r\nat> <EOT>\r\njob 14 at Sun Aug 17 16:45:00 2008\r\n<\/pre>\n<p>Essayons maintenant de lancer la calculatrice <em>Gnome<\/em> \u00e0 une certaine heure:<\/p>\n<pre class=\"codesource\">\r\n$ at 16:45\r\nwarning: commands will be executed using \/bin\/sh\r\nat> gcalctool\r\nat> <EOT>\r\njob 15 at Sun Aug 17 16:45:00 2008\r\n<\/pre>\n<p>Et&#8230;\u00e0 l&rsquo;heure promise, rien ne se passe. Pourquoi?<br \/>\nParce que <em>at<\/em> utilise <em>\/bin\/sh<\/em> et que toutes les variables d&rsquo;environnement sont transmises \u00e0 l&rsquo;exception de TERM, DISPLAY et \u00ab\u00a0_\u00a0\u00bb. Cela signifie simplement, dans notre cas, que <em>at<\/em> ne sait pas dans quel DISPLAY afficher le programme puisque votre variable d&rsquo;environnement DISPLAY ne lui est pas transmise. Pour r\u00e9soudre ce probl\u00e8me, il suffit de dire \u00e0 la commande <em>at<\/em> sur quel DISPLAY afficher la calculatrice <em>Gnome<\/em>.<\/p>\n<pre class=\"codesource\">\r\n$ at 11:51\r\nwarning: commands will be executed using \/bin\/sh\r\nat> export DISPLAY=:0.0\r\nat> gcalctool\r\nat> <EOT>\r\njob 15 at Sun Aug 17 11:51:00 2008\r\n<\/pre>\n<p>Notez la commande export DISPLAY=:0.0.<\/p>\n<h3>M\u00e9thode en ligne de commande<\/h3>\n<p><em>at<\/em> attend la t\u00e2che \u00e0 ex\u00e9cuter sur son entr\u00e9e standard (stdin) et non pas comme param\u00e8tre de la commande. Cela signifie que la t\u00e2che ne peut pas \u00eatre transmise \u00e0 la commande at en argument. C&rsquo;est la que les redirections sous Linux interviennent. Relisez \u00e9ventuellement mon article <a href=\"http:\/\/linux.leunen.com\/?p=46\">Shell &#8211; Redirections de flux<\/a>.<br \/>\nNous allons utilser un pipe &lsquo;|&rsquo; pour rediriger la sortie standard (stdout) d&rsquo;un programme vers l&rsquo;entr\u00e9e standard (stdin) de la commande <em>at<\/em>.<\/p>\n<pre class=\"codesource\">\r\n$ echo \"backup.sh\" | at 16:45\r\n<\/pre>\n<p>On prend la sortie standard de la commande <em>echo<\/em> et on la redirige vers l&rsquo;entr\u00e9e standard de la commande <em>at<\/em> gr\u00e2ce au pipe. C&rsquo;est aussi simple que \u00e7a.<br \/>\nVous voulez lancer la calculatrice Gnome? L\u00e0 aussi, vous devez pr\u00e9ciser le DISPLAY \u00e0 utiliser.<\/p>\n<pre class=\"codesource\">\r\n$ echo \"export DISPLAY=:0.0;gcalctool\" | at 16:45\r\n<\/pre>\n<p>Pour supprimer une t\u00e2che, utilisez <em>atrm<\/em> suivi du num\u00e9ro de la t\u00e2che. Pour afficher toutes les t\u00e2ches qui sont pendantes, utilisez <em>atq<\/em>.<br \/>\nN&rsquo;oubliez pas de consulter la page de manuel de <em>at<\/em> pour avoir tous les d\u00e9tails.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsque vous voulez planifier le lancement d&rsquo;une t\u00e2che de mani\u00e8re r\u00e9p\u00e9titive (tous le jours, toutes les heures, le 1er janvier&#8230;) vous utilisez la command cron. Par contre, si cette t\u00e2che ne doit \u00eatre lanc\u00e9e qu&rsquo;une seule fois, vous utiliserez la command at. La commande at est une commande tr\u00e8s facile \u00e0 utiliser. Il suffit de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/86"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=86"}],"version-history":[{"count":3,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/86\/revisions"}],"predecessor-version":[{"id":89,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/86\/revisions\/89"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=86"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=86"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}