<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs - matrix788</title>
		<link>https://www.developpez.net/forums/blogs/4472-matrix788/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Fri, 10 Apr 2026 11:50:31 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs - matrix788</title>
			<link>https://www.developpez.net/forums/blogs/4472-matrix788/</link>
		</image>
		<item>
			<title>Automate de commandes, sans crontab - Part 2</title>
			<link>https://www.developpez.net/forums/blogs/4472-matrix788/b1280/automate-commandes-crontab-part-2/</link>
			<pubDate>Mon, 04 Apr 2016 18:00:31 GMT</pubDate>
			<description>On a vu dans le billet...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">On a vu dans le billet précédent qu'il y avait un outil assez intéressant pour celui qui recherchait comme une alternative à la crontab, la commande &quot;watch&quot;.<br />
<br />
On avait vu qu'il était possible d'effectuer une exécution de la commande selon un intervalle de temps défini (par défaut, ou via l'utilisateur, dans la limite minimale de 1s).<br />
<br />
Une option supplémentaire peut venir s'ajouter à cette option d'intervalle dans le cas où on est assez pointilleux sur cela. L'option &quot;-p&quot;, ou --precise, permet d'affiner la durée pour l'intervalle de temps, au centième de secondes près.<br />
<br />
Exemple avec ces 2 commandes. La première est dans l'option &quot;precise&quot;, et la seconde avec. Je joint le compte rendu juste après:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 &quot;date '+%H:%M:%S.%N'&gt;&gt; date_noprecise.log&quot;</pre>
</div><font color="#B22222"><i>20:40:34.153833722<br />
20:40:35.159911022<br />
20:40:36.165803010<br />
20:40:37.171942544</i></font><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 --precise &quot;date '+%H:%M:%S.%N'&gt;&gt; date_precise.log&quot;</pre>
</div><font color="#B22222"><i>20:40:02.379605641<br />
20:40:03.379820037<br />
20:40:04.379646544<br />
20:40:05.379736789</i></font><br />
<br />
Comme on le voit, le rafraîchissement avec l'option &quot;précise&quot; s'effectue toutes les 1 secondes et 379 centièmes.<br />
<br />
<br />
Voilà pour les intervalles de temps, passons maintenant aux autres options...<br />
<br />
Il peut arriver que vous lanciez une commande qui n'existe pas, ou qui entraîne une sortie en erreur.<br />
Lorsque une erreur se produit, la commande watch reste figée à la page principal, et offre la possibilité de sortir via une commande quelcquonque du clavier. Cela se fait avec l'option : &quot;-e&quot;, ou &quot;--errexit&quot;:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 -e date!</pre>
</div><font color="#B22222"><br />
<i>sh: 1: date!: not found<br />
command exit with a non-zero status, press a key to exit</i></font><br />
<br />
Bon, c'est vrai, on pourrait automatiser tout çà pour que le programme quitte de lui-même après une erreur. Utiliser alors le nohup pour passer le job en fond. Mais l'intérêt réside ici dans le fait d'afficher en console ce qui s'est passé. C'est plus pertinent avec une commande plus complexe que &quot;date&quot;, qui est susceptible de changer, ou pour des fichiers &quot;mobiles&quot; par exemple.<br />
 <br />
L'autre possibilité de watch, c'est de quitter juste après un changement dans la sortie de la commande. Cela se fait avec l'option : &quot;-g&quot;, ou &quot;--chgexit&quot;:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 -g date</pre>
</div>Dans cette exemple, watch se termine de lui-même (on revient au prompt, et on ne reste pas en console, sauf erreur dans la commande) après que les secondes ait été modifiées, donc, après 1 seconde d'exécution étant donné qu'on est sur un intervalle n1.<br />
<br />
Et si on mettait un peu de couleur dans tout çà. En effet, il peut arriver que dans une commande, ou le résultat d'une commande, on ait un caractère ANSI à interprété. De base, ca n’affichera que le texte avec le code ANSI. Il faut passer par l'option &quot;-c&quot; ou &quot;--color&quot; pour demander à watch d’interpréter la séquence de code ANSI.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 &quot;echo '\033[36mTexte en bleu\033[0m'&quot;</pre>
</div></blockquote>

]]></content:encoded>
			<dc:creator>matrix788</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/4472-matrix788/b1280/automate-commandes-crontab-part-2/</guid>
		</item>
		<item>
			<title>Automate de commandes, sans crontab</title>
			<link>https://www.developpez.net/forums/blogs/4472-matrix788/b1277/automate-commandes-crontab/</link>
			<pubDate>Sun, 03 Apr 2016 18:11:52 GMT</pubDate>
			<description>Pour automatiser une tâche...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Pour automatiser une tâche rapidement, sans passer par la case crontab, il y a une commande assez intéressante pour çà: <b>watch</b><br />
<br />
Non, non, ce n'est pas un nouveau prototype de montre, et comme l'exemple aide souvent à mieux comprendre, voyons cela de suite…<br />
<br />
Prenons le cas basique où j'ai besoin d'afficher continuellement, et ce dans un intervalle de 2s (c'est l'intervalle par défaut de la commande watch), l'activité mémoire de mon système:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch free -m</pre>
</div>Pour sortir de la fenêtre, il faut faire CTRL+C, c'est l'inconvénient, par rapport à un simple «q» lors du top. Sympa non?<br />
<br />
Bon, ça reste basique, donc voyons comment on peut améliorer cette analyse. Comme vous l'avez constaté, il faut être attentif à chaque modification qui ont lieu, et l'exemple pris contient justement beaucoup d'information. On peut vite passer à côté d'un changement.<br />
Dans ce cas, il faut utiliser l'option «-d» qui va mettre en surbrillance ce qui a évolué entre deux rafraîchissements*:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -d free -m</pre>
</div>Si vous voulez voir plus de changement, passer au format plus long en kilobytes, en enlevant l'option «-m»<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -d free</pre>
</div><div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p205809d1459706955/java/general-java/api-standards-tierces/windows-acces-base-registre-windows/watch_d.jpg/" border="0" alt="Nom : watch_d.jpg
Affichages : 124
Taille : 12,1 Ko"  style="float: CONFIG" /></div><br />
Ça va pas assez vite pour vous? Demandez un rafraîchissement toutes les secondes (on peut pas descendre en dessous d'1 seconde), via l'option «-n»:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 -d free</pre>
</div>L'en tête vous gêne? Enlevez-le avec l'option «-t»:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">watch -n 1 -d -t free</pre>
</div>Un autre inconvénient, c'est qu'on peut pas concaténer les options, on est obligé de les passer en arguments chacun:<br />
<br />
<font color="#FF0000">watch -ndt 1 free &#8658; ne fonctionne pas.</font><br />
<br />
<br />
On peut allez encore plus loin avec cet outil...</blockquote>

]]></content:encoded>
			<dc:creator>matrix788</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/4472-matrix788/b1277/automate-commandes-crontab/</guid>
		</item>
	</channel>
</rss>
