La Crontab

Le mécanisme cron permet l’exécution régulière et automatique de commandes. A chaque démarrage de la machine (en fait suivant le niveau d’init) un service (daemon) est lancé, généralement appelé cron ou crontab (/usr/sbin/cron, /etc/cron, /sbin/cron, …) qui lit une table spécifique appelée crontab.

La crontab est généralement placée dans /var/adm/cron ou /etc/cron ou /usr/lib/cron. Tous les utilisateurs n’ont pas forcément le droit d’utiliser la crontab (cron.allow et cron.deny).

La commande crontab permet d’accéder et de modifier les données de la table.

Pour lister une crontab, on utilise l’option -l. L’option -r permet de supprimer tous les ordres de sa crontab. Pour éditer sa crontab personnelle, on utilise l’option -e. Un éditeur vi est lancé. A la sauvegarde, le contenu qui aura été saisi sera le contenu de la crontab de l’utilisateur. le format est le suivant :

  1. minutes (0 à 59)
  2. heures (0 à 23)
  3. jour dans le mois (1 à 31)
  4. mois ( de 1 à 12)
  5. jour de la semaine ( de 0 dimanche à 6 samedi)
  6. commande

Une étoile * à la place d’un paramètre indique que se paramètre ne doit pas être pris en compte. Le tiret entre deux valeur définit une plage. Par exemple :

0 0 * * * rm -rf /tmp/* >/dev/null 2>&1

va exécuter la commande rm (ici effacement du contenu de /tmp) tous les jours à minuit pile.

0,30 9-18 * * 1-5 who >> /tmp/presence

Toutes les demi-heures, de 9 heures à 18 heures, du lundi au vendredi, liste de tous les utilisateurs connectés.

Messages aux utilisateurs

La commande write permet d’envoyer un message à un utilisateur. Par défaut l’utilisateur doit être connecté sur la même machine (sur un autre terminal). On peut aussi tenter d’écrire à un utilisateur sur une autre machine. La syntaxe est :

write user terminal [ligne]
write user@machine [ligne]
write -n machine user [ligne]

La commande *write est interactive, une fois la connexion établie les utilisateurs peuvent communiquer en direct. Pour quitter la saisie : ctrl+d.

La commande wall permet d’envoyer une information à tous les utilisateur connectés.

L’utilisateur qui ne souhaite pas voir les messages, ou l’administrateur qui veut en empêcher l’utilisation abusive, peut utiliser la commande mesg.

mesg y (autorisation)
mesg n (interdiction)

FTP

Bien que n’étant pas une commande propre à Unix, il est utile de connaître la commande ftp. Elle permet le transfert de fichiers entre deux machines. Elle prend comme paramètre le nom de la machine distante. Pour que la commande ftp fonctionne, il faut que le service FTP fonctionne sur la machine distante et sur le port 21.

Voici un exemple (peu pratique) de connexion avec erreur et nouvel essai.

ftp\> open
(to) machine
Connected to machine.
220 machine FTP server (Digital UNIX Version 5.60) ready.
Name (machine:root): root
331 Password required for root.
Password:
530 Login incorrect.
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp\> user
(username) root
331 Password required for root.
Password:
230 User root logged in.
ftp\> pwd
257 "/" is current directory.

Le plus simple est tout de même :

$ ftp machine
Connected to machine.
220 machine FTP server (Digital UNIX Version 5.60) ready.
Name (machine:root): root
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp\>

Voici une liste de commandes ftp.

Commande Action
open Suivi d’un nom de machine, ouvre une connexion sur la machine spécifiée.
user Saisie de l’utilisateur distant pour une connexion.
quit Fin de la connexion et fin de la commande ftp.
ascii Transfert des fichiers en mode ASCII (conversion des caractères spéciaux et fin de ligne en MS et Unix par exemple).
binary Transfert des fichiers en mode binaire.
glob Supprime l’interprétation des caractères spéciaux.
help Affiche l’aide.
prompt Suivi de on ou off, active ou désactive la confirmation individuelle de transfert pour chaque fichier (mget ou mput).
pwd Affiche le répertoire distant courant.
cd Suivi du chemin, déplacement dans l’arborescence distante.
ls liste les fichiers de la machine distante.
delete Suivi d’un nom de fichier, supprime le fichier distant.
mdelete Multiple. Supprime les fichiers distants.
get Récupère le fichier distants.
mget Multiple. Récupère les fichiers distants (liste ou modèle).
put Envoie le fichier local vers la machine distante.
mput Multiple. Envoie les fichiers locaux sur la machine distante (liste ou modèle).
close / disconnect ferme la session actuelle.
lcd Change de répertoire sur la machine locale.
hash Durant les transferts, écrit un « # » sur écran pour chaque buffer transféré.
system Informations sur le système distant.
recv Réception d’un fichier.
send Envoi d’un fichier.
rename renomme un fichier distant.
mkdir Crée un répertoire sur la machine distante.
rmdir Supprime un répertoire sur la machine distante.
!commande exécute la commande locale

Photo de Bruno Nascimento sur unsplash