<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le CyberZoide Qui Fretille &#187; shell</title>
	<atom:link href="https://blog.developpez.com/cyberzoide/pcategory/informatique/linux/shell/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/cyberzoide</link>
	<description></description>
	<lastBuildDate>Thu, 03 Jul 2014 09:43:37 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Création de fichiers temporaires</title>
		<link>https://blog.developpez.com/cyberzoide/p2412/informatique/linux/shell/creation_de_fichiers_temporaires</link>
		<comments>https://blog.developpez.com/cyberzoide/p2412/informatique/linux/shell/creation_de_fichiers_temporaires#comments</comments>
		<pubDate>Mon, 09 Oct 2006 14:05:00 +0000</pubDate>
		<dc:creator><![CDATA[cyberzoide]]></dc:creator>
				<category><![CDATA[shell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Quel admin système n&#8217;a jamais eu besoin de créer des fichiers temporaires dans ses scripts Shell ? Et ce n&#8217;est pas toujours facile, surtout quand ils doivent être créés en masse ou par un grand nombre d&#8217;instances du même script. Voici quelques méthodes que j&#8217;ai eu à utiliser. Nom unique Le nom du script (variable $0) ou son numéro de processus (variable $$) fournissent des données uniques spécifiques au script en cours. Exemple : $FILE=/tmp/`basename [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Quel admin système n&rsquo;a jamais eu besoin de créer des fichiers temporaires dans ses scripts Shell ? Et ce n&rsquo;est pas toujours facile, surtout quand ils doivent être créés en masse ou par un grand nombre d&rsquo;instances du même script.</p>
<p>Voici quelques méthodes que j&rsquo;ai eu à utiliser.</p>
<p><b>Nom unique</b></p>
<p>Le nom du script (variable <code class="codecolorer text default"><span class="text">$0</span></code>) ou son numéro de processus (variable <code class="codecolorer text default"><span class="text">$$</span></code>) fournissent des données uniques spécifiques au script en cours.<br />
Exemple : <code class="codecolorer text default"><span class="text">$FILE=/tmp/`basename $0`.$$.tmp</span></code></p>
<p>Le condensat MD5 du script en cours peut aussi fournir une telle information.<br />
Exemple : <code class="codecolorer text default"><span class="text">md5sum $0 | cut -d&quot; &quot; -f1</span></code></p>
<p>La date au format timestamp fourni une donnée unique toutes les secondes.<br />
Exemple : <code class="codecolorer text default"><span class="text">date +%s</span></code><br />
Mais cette donnée de varie pas suffisement dans le temps pour un usage intensif dans une boucle.</p>
<p>Un compteur dans le script permet de forger un identifiant unique à chaque pas dans une boucle.</p>
<p><b>Nom aléatoire</b></p>
<p>La commande <code class="codecolorer text default"><span class="text">mktemp</span></code> créé un fichier et fourni dans la sortie standard son nom. Formé par défaut comme suit  : <i>/tmp/tmp.LNfRsC6529</i><br />
Exemple : <code class="codecolorer text default"><span class="text">mktemp /tmp/appli.XXXXXXXX</span></code></p>
<p>Les périphériques <code class="codecolorer text default"><span class="text">/dev/random</span></code> (non bloquant) et <code class="codecolorer text default"><span class="text">/dev/urandom</span></code> (plus efficace mais bloquant et plus long) fournissent des données aléatoires. Ces données peuvent servir à la création de noms de fichiers.<br />
Exemple : <code class="codecolorer text default"><span class="text">dd if=/dev/urandom of=/var/random-seed count=1</span></code><br />
Le fichier random-seed peut être splité (<code class="codecolorer text default"><span class="text">split</span></code>) en de nombreux petits fichiers dont on calcule le condensat MD5 afin de créer massivement des noms de fichiers.</p>
<p>La commande <code class="codecolorer text default"><span class="text">uuidgen</span></code> génère une chaîne aléatoire au format <i>UUID</i> (Universally Unique ID), elle peut être considéré comme unique. Exemple d&rsquo;UUID : <i>4abb6101-46ef-40b7-b951-eb5081a41306</i>.<br />
Exemple : <code class="codecolorer text default"><span class="text">uuidgen -r</span></code></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Liste des fichiers les plus volumineux</title>
		<link>https://blog.developpez.com/cyberzoide/p2002/informatique/linux/shell/liste_des_fichiers_les_plus_volumineux</link>
		<comments>https://blog.developpez.com/cyberzoide/p2002/informatique/linux/shell/liste_des_fichiers_les_plus_volumineux#comments</comments>
		<pubDate>Wed, 17 May 2006 15:09:02 +0000</pubDate>
		<dc:creator><![CDATA[cyberzoide]]></dc:creator>
				<category><![CDATA[shell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une tâche souvent nécessaire à un administrateur système sous Linux : lister les fichiers les plus volumineux d&#8217;un disque. Pour cela, il existe différentes techniques possibles : find, ls, du&#8230; J&#8217;ai retenu du pour sa rapidité et sa simplicité : du -h &#124; egrep &#34;([0-9]{3}M)&#124;([0-9]G)&#34; &#124; egrep -v &#34;[^\.]/&#34; Liste récursive des sous-dossiers et fichiers d&#8217;un dossiers, avec leurs poids total : $ du j2sdk1.4.2_09 73164 j2sdk1.4.2_09/jre 15040 j2sdk1.4.2_09/lib 444 j2sdk1.4.2_09/man/ja_JP.eucJP/man1 448 j2sdk1.4.2_09/man/ja_JP.eucJP 436 j2sdk1.4.2_09/man/man1 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une tâche souvent nécessaire à un administrateur système sous Linux : lister les fichiers les plus volumineux d&rsquo;un disque. Pour cela, il existe différentes techniques possibles : <code class="codecolorer text default"><span class="text">find</span></code>, <code class="codecolorer text default"><span class="text">ls</span></code>, <code class="codecolorer text default"><span class="text">du</span></code>&#8230; J&rsquo;ai retenu <code class="codecolorer text default"><span class="text">du</span></code> pour sa rapidité et sa simplicité :</p>
<p><b><code class="codecolorer text default"><span class="text">du -h | egrep &quot;([0-9]{3}M)|([0-9]G)&quot; | egrep -v &quot;[^\.]/&quot;</span></code></b></p>
<p><b>Liste récursive des sous-dossiers et fichiers d&rsquo;un dossiers, avec leurs poids total :</b></p>
<pre>$ du j2sdk1.4.2_09
73164   j2sdk1.4.2_09/jre
15040   j2sdk1.4.2_09/lib
444     j2sdk1.4.2_09/man/ja_JP.eucJP/man1
448     j2sdk1.4.2_09/man/ja_JP.eucJP
436     j2sdk1.4.2_09/man/man1
888     j2sdk1.4.2_09/man
114280  j2sdk1.4.2_09</pre>
<p><b>Rajout de l&rsquo;option <code class="codecolorer text default"><span class="text">-h</span></code> pour un affichage humain (et pas en nombre de bloc)</b></p>
<pre>$ du -h j2sdk1.4.2_09
72M     j2sdk1.4.2_09/jre
15M     j2sdk1.4.2_09/lib
444K    j2sdk1.4.2_09/man/ja_JP.eucJP/man1
448K    j2sdk1.4.2_09/man/ja_JP.eucJP
436K    j2sdk1.4.2_09/man/man1
888K    j2sdk1.4.2_09/man
112M    j2sdk1.4.2_09</pre>
<p><b>Ne retenons que ceux dépassant 100 Mo (contrôle du motif du poids via un <code class="codecolorer text default"><span class="text">grep</span></code> rationnel) : </b></p>
<pre>$ du -h /usr/local | egrep "([0-9]{3}M)|([0-9]G)"
126M    ./src/mysql-4.1.14
763M    ./src
184M    ./tomcat/logs
249M    ./tomcat
100M    ./apache
111M    ./mysql
1.4G    .</pre>
<p><b>Et n&rsquo;affichons pas les sous répertoires de l&rsquo;arborescence (<code class="codecolorer text default"><span class="text">egrep</span></code> négatif sur le séparateur de dossiers <code class="codecolorer text default"><span class="text">/</span></code>) : </b></p>
<pre>$ du -h | egrep "([0-9]{3}M)|([0-9]G)" | egrep -v "[^\.]/"</pre>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
