Aide-mémoire pour les tâches cron

Ce petit aide-mémoire n’est pas de moi, mais il est très pratique pour s’initier à la crontab ou en cas d’oubli sur l’ordre des paramètres. Un must have à placer en entête de chaque table cron qu’on peut utiliser…

#       minute (de 0 à 59)
 
#       |       heure (de 0 à 23)
 
#       |       |       jour (de 1 à 31)
 
#       |       |       |       mois (de 1 à 12)
 
#       |       |       |       |       jour de la semaine (de 0 à 6, 0 = dimanche)
 
#       |       |       |       |       |       commande
 
        *       *       *       *       *       /bin/bash /tmp/test.sh


 Utiliser des variables dans MySQL

Dans le développement de pages web, la notion de variable est très fréquemment associée au langage de script (ASP, PHP). Mais MySQL peut en utiliser également, ce qui peut s’avérer être plus simple à administrer pour le développeur, et moins gourmand en ressources.

mysql> select * from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    4 | ddd  |
|    5 | eee  |
+------+------+
5 rows in set (0.00 sec)
 
mysql> select @total := COUNT(*) as "@total" from t1;
+--------+
| @total |
+--------+
|      5 |
+--------+
1 row in set (0.01 sec)
 
mysql> select * from t1 where c1 = @total;
+------+------+
| c1   | c2   |
+------+------+
|    5 | eee  |
+------+------+
1 row in set (0.01 sec)

Il est également possible d’affecter directement une valeur à une variable :

mysql> select * from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    4 | ddd  |
|    5 | eee  |
+------+------+
5 rows in set (0.00 sec)
 
mysql> set @valeur = 4;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select * from t1 where c1 = @valeur;
+------+------+
| c1   | c2   |
+------+------+
|    4 | ddd  |
+------+------+
1 row in set (0.00 sec)

Notez que dans ce cas, il faut utiliser simplement le signe « = » et non « := » comme précédemment.

Un exemple d’utilisation concrète : comment faire pour qu’une table aux clés primaires décousues (1,3,8,14,15…) soit de nouveau bien ordonnée (1,2,3,4,5…) [1] ? Sélectionner chaque entrée de la table et l’ajouter dans une autre table ? C’est lourd… Faire une boucle et envoyer une instruction UPDATE pour chaque entrée de la table ? C’est lourd…

MySQL le fait avec seulement une variable et une requête :

mysql> select * from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    3 | bbb  |
|    8 | ccc  |
|   14 | ddd  |
|   15 | eee  |
+------+------+
5 rows in set (0.00 sec)
 
mysql> set @valeur = 0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> update t1 set c1 = @valeur := @valeur + 1;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 5  Changed: 4  Warnings: 0
 
mysql> select * from t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    4 | ddd  |
|    5 | eee  |
+------+------+
5 rows in set (0.00 sec)

[1] : avec un champ auto-incrémenté et des instructions DELETE à répétition, on a vite fait de se retrouver dans ce genre de situation.



 TeamViewer pour Linux n’est pas si Linux que cela

Le logiciel TeamViewer, permettant le partage d’un même écran entre deux utilisateurs (utile pour assister quelqu’un à distance), est récemment sorti pour Linux. Initiative louable, d’autant que le logiciel existe en version DEB (Debian / Ubuntu) et RPM (Fedora / CentOS / Mandriva / …).

Seulement voilà, comme le fait justement remarquer sebsauvage sur son excellent blog, il s’agit tout bêtement d’une version émulée grâce à l’outil Wine, bien connu des linuxiens souhaitant retrouver sur Linux des outils Windows.

Voici ce que donne TeamViewer « pour Linux » (sous Fedora) :

Visuellement, il y a de quoi avoir déjà un très gros doute !

Et voici la confirmation, avec la réponse de la commande top (ou sa version améliorée htop) :

USER       PID %CPU %MEM START TIME COMMAND
nicolas   9463  0.4  1.6 22:01 0:03 c:\Program Files\TeamViewer\Version5\TeamViewer.exe
nicolas   9488  0.1  0.2 22:01 0:00 /opt/teamviewer/teamviewer/5/wine/bin/wineserver
nicolas   9492  0.0  0.1 22:01 0:00 C:\windows\system32\services.exe

De plus, la fermeture de TeamViewer provoque l’ouverture d’une page sur votre navigateur par défaut…

Doit-on vraiment qualifier ceci de « version Linux » ? Je ne pense pas…



 Freebox HD : impossible de supprimer un dossier vide ?

Sur la Freebox HD, il est possible de transférer dans le dossier Vidéos un dossier depuis la machine locale, que l’on peut ensuite supprimer… à condition qu’il ne soit pas vide.

Pour supprimer un dossier sur la Freebox HD, il faut impérativement que ce dossier contienne au moins un fichier, peu importe son type.

Avec gFTP 2.0.19, la consultation et la suppression d’un dossier vide sur la Freebox HD est impossible :

LIST -aL
226 Closing data connection.
Réponse « 2 » non valide reçue du serveur.

Problème : si gFTP coupe la connexion avant même d’avoir pu envoyer un fichier dans le dossier concerné, il paraît donc impossible de réussir à supprimer un dossier vide de la Freebox HD avec cet outil.

L’alternative FileZilla (version 3.2.7.2) permet d’ajouter des fichiers dans les dossiers vides. Une fois le dossier non vide, il est possible de le supprimer.

Ce n’est pas le seul outil pouvant remplacer gFTP sur ce point, mais il n’est pas dépaysant par rapport à gFTP et reste répandu. Les puristes se tourneront vers lftp ou yafc :)

Free promet une correction de ce bug dans un prochain firmware ; en attendant, les linuxiens utilisateurs de la Freebox HD devront se tourner vers un autre client FTP que gFTP, client FTP associé à GNOME.



 Modifier le message « Appuyez sur une touche pour continuer… »

En batch, la commande pause affiche le message suivant dans le script :

Appuyez sur une touche pour continuer...

Il est possible de personnaliser ce message, tout en conservant sa fonction d’arrêt temporaire du déroulement du script, par ce moyen :

@echo off
echo Appuyez sur la touche de votre choix pour poursuivre...
pause>nul
exit

Cette personnalisation n’a pas qu’un but esthétique, elle peut-être nécessaire dans plusieurs cas :

Utilisation de PowerBatch

PowerBatch est un outil permettant entre autres de compiler des fichiers .bat pour les transformer en applications DOS/Windows. C’est un outil très intéressant, cependant le résultat de la commande pause s’affiche dans la langue de Shakespeare…

Ceci dit, il était peut-être préférable d’éviter le français à chaque message, si ça pouvait aider à éviter ce genre d’horreur orthographique :

Dans le cas où vous souhaiteriez créer un fichier .com à partir de votre fichier .bat, il semble donc préférable de contrôler réellement les messages d’information pouvant être affichés et les personnaliser si besoin.

Exécution sur un environnement en langue étrangère

Quoi, vous pensiez que sur un système en anglais, vous auriez un beau message de pause en français ? Il ne faut pas rêver… Cette méthode vous permet donc d’éviter l’aberration suivante :

Mon système est en anglais.
Mon script est en français.
 
Press any key to continue...