La cron est un programme (installé par défaut) qui est chargé de lancer d'autres programmes de manière périodique et automatique. Chaque utilisateur peut définir avec sa crontab les programmes qu'il veut lancer périodiquement. Il lui suffit d'éditer sa cron et de définir la commande et sa périodicité d'exécution.
Par exemple, je veux que mon ordinateur me réveille tous les matins à 7h12 en jouant un mp3. J'édite ma crontab :
%
crontab -e
Je me retrouve alors dans vim avec un fichier vide. J'ajoute la ligne :
12 7 * * * music123 ~/music/fichier.mp3
J'enregistre et je quitte ; les changements sont alors automatiquement pris en compte par le système.
Explications :
Les 5 premiers ensembles de caractères séparés par des espaces (ici, 12 7 * * *) définissent la fréquence. Dans l'ordre, on trouve :
les minutes,
les heures,
le jour du mois,
le mois,
le jour de la semaine (sachant que Lundi vaut 1, Mardi vaut 2, etc.).
Pour exécuter une commande chaque jour à 7h12, on fixe donc le champ minute à 12, le champ heure à 7, puis on met des étoiles dans les autres champs pour dire qu'il faut que ce soit exécuté tous les jours dans le mois, tous les mois et tous les jours de la semaine.
Enfin, on trouve la commande à exécuter : (ici, music123 ~/music/fichier.mp3).
Quand la cron lance un programme, elle envoie par mail à
l'utilisateur le texte que ce programme écrirait sur la console s'il
était lancé à la main ; sauf si le programme n'a rien écrit. Pour éviter
de recevoir un mail tous les matins qui me dit qu'il a bien joué mon
fichier mp3, je modifie l'entrée dans la cron en renvoyant la sortie
texte du programme vers /dev/null
:
12 7 * * * music123 ~/music/fichier.mp3 1>/dev/null 2>&1
Autre exemple : j'ai une connexion permanente à Internet et je veux aussi que fetchmail aille chercher mes mails tous les quarts d'heure. J'édite ma cron et je rajoute la ligne suivante :
*/15 * * * * fetchmail --silent
Explications :
Les 5 premiers ensembles de caractères */15 * * * * définissent la fréquence « toutes les quinze minutes ».
J'exécute fetchmail avec l'option --silent qui n'écrit dans sa sortie que les messages d'erreur ; comme ça, je ne recevrais un mail que quand le rapatriement des mails se passe mal.
Par exemple, pour exécuter les commandes date puis df -h le 28 septembre 2008 à midi 42, tapez :
%
at 12:42 28.09.2008
Vous voyez alors apparaître le prompt du programme at pour taper les commandes :
at>
date
at>
df -h
Une fois que vous avez fini de taper les commandes, utilisez la combinaison de touches Ctrl+d. Le résultat de la série de commandes, appelée job, vous sera envoyé par mail juste après leur exécution.
Pour voir la liste des jobs en attente, utilisez la commande atq. Pour annuler un job, tapez atrm numéro_du_job.
Comme vous l'avez peut-être déjà remarqué, certaines commandes pourtant courantes ne sont accessibles qu'à l'utilisateur root, par exemple les commandes pour éteindre l'ordinateur, pour le rebooter ou encore le mettre en veille. Si cela se comprend pour un serveur, c'est souvent gênant pour un ordinateur familial. La mauvaise solution serait de donner le mot de passe root à tout le monde ; la bonne solution est d'utiliser le programme sudo qui permet au root de spécifier que certains utilisateurs ont le droit d'exécuter certaines commandes avec les droits de root.
Attention | |
---|---|
La configuration du programme sudo
doit se faire avec attention, pour ne pas compromettre la sécurité
du système. Par exemple, si vous donnez à un utilisateur le droit
d'exécuter le programme |
Maintenant que vous êtes prévenu, vous pouvez installer le paquet :
#
aptitude install sudo
La configuration se fait dans le fichier
/etc/sudoers
. Mais attention, il ne faut pas éditer ce
fichier directement avec un éditeur de texte, mais utiliser le programme
visudo, qui vérifie que vous n'avez pas fait d'erreur
lorsque vous enregistrez les nouveaux réglages :
#
visudo
Vous vous retrouvez alors dans un Vim normal
en train d'éditer le fichier /etc/sudoers
. Pour
donner à l'utilisateur toto le droit d'exécuter
les commandes halt, reboot et
apm, rajoutez la ligne suivante :
toto ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /usr/bin/apm
Enregistrez et quittez, comme avec un Vim normal. L'utilisateur toto peut alors éteindre le système en tapant :
%
sudo halt
Si vous voulez obliger les utilisateurs à re-taper leur mot de passe quand ils utilisent le programme sudo (pour être sûr que quelqu'un n'est pas en train de profiter d'une console laissée ouverte) enlevez de la ligne le mot NOPASSWD: .
Pour en savoir plus sur la syntaxe du fichier
sudoers
, consultez
/usr/share/doc/sudo/examples/sudoers
.
Le paquet gzip qui supporte le
.gz est installé par défaut, mais ce n'est pas
forcément le cas des paquets qui concernent les .bz2
,
.lzma
, .xz
et .zip
:
#
aptitude install bzip2 zip unzip xz-utils
La commande à utiliser dépend de l'extension du fichier :
%
tar -xf archive.tar
%
tar -xf archive.tar.gz
%
tar -xf archive.tar.bz2
%
tar -xf archive.tar.lzma
%
tar -xf archive.tar.xz
%
gunzip archive.gz
%
bunzip2 archive.bz2
%
unlzma archive.lzma
%
unxz archive.xz
%
unzip archive.zip
Le but de ce paragraphe n'est pas de comparer la performance des différents algorithmes de compression, mais simplement de donner les commandes :
pour produire un fichier d'extension
.gz
:
%
gzip fichier1
pour produire un fichier d'extension
.bz2
:
%
bzip2 fichier1
pour produire un fichier d'extension
.lzma
:
%
lzma fichier1
pour produire un fichier d'extension
.xz
:
%
xz fichier1
pour produire un fichier d'extension
.zip
:
%
zip fichier1.zip fichier1
Par exemple, je veux comprimer en un seul fichier le contenu du
répertoire /etc/
avec en plus le fichier
/var/log/syslog
:
pour produire un fichier d'extension
.tar.gz
:
%
tar -acf archive.tar.gz /etc/ /var/log/syslog
pour produire un fichier d'extension
.tar.bz2
:
%
tar -acf archive.tar.bz2 /etc/ /var/log/syslog
pour produire un fichier d'extension
.tar.lzma
:
%
tar -acf archive.tar.lzma /etc/ /var/log/syslog
pour produire un fichier d'extension
.tar.xz
:
%
tar -acf archive.tar.xz /etc/ /var/log/syslog
pour produire un fichier d'extension
.zip
:
%
zip -r archive.zip /etc/ /var/log/syslog
Les outils réseau suivants peuvent être utiles pour résoudre un problème ou surveiller le trafic réseau (la plupart ne sont accessibles qu'en root) :
traceroute, qui se trouve dans le paquet du même nom, et qui permet de dessiner la route que prennent les packets pour aboutir à une machine distance ;
tcpdump, qui se trouve dans le paquet du même nom, et qui permet d'afficher tout le trafic qui passe par l'interface réseau ;
iptraf, un moniteur de trafic et de débit ;
les outils du paquet netdiag, qui permettent de diagnostiquer un problème de connexion.