Ignorer les liens de navigation | |
Quitter l'aperu | |
Gestion des informations système, des processus et des performances dans Oracle Solaris 11.1 Oracle Solaris 11.1 Information Library (Français) |
1. Gestion des informations système (tâches)
2. Gestion des processus système (tâches)
3. Surveillance des performances du système (tâches)
4. Tâches de planification du système (tâches)
Méthodes d'exécution automatique des tâches système
Planification de travaux répétitifs : crontab
Planification d'un travail unique : at
Planification des tâches système
Création et modification de fichiers crontab (liste des tâches)
Planification d'une tâche système répétitive (cron )
Gestion de la planification par le démon cron
Syntaxe des entrées du fichier crontab
Création et modification de fichiers crontab
Création ou modification d'un fichier crontab
Vérification de l'existence d'un fichier crontab
Affichage des fichiers crontab
Affichage d'un fichier crontab
Suppression des fichiers crontab
Suppression d'un fichier crontab
Contrôle de l'accès à la commande crontab
Refus d'accès à la commande crontab
Restriction de l'accès à la commande crontab aux utilisateurs spécifiés
Planification de tâches à l'aide de la commande at
Utilisation de la commande at (liste des tâches)
Planification d'une seule tâche système (at)
Contrôle de l'accès à la commande at
Affichage de la file d'attente at
Refus d'accès à la commande at
Cette section inclut des tâches permettant de planifier les tâches système à l'aide de fichiers crontab.
|
Les sections suivantes décrivent la création, la modification, l'affichage et la suppression des fichiers crontab, ainsi que la façon d'en contrôler l'accès.
Le démon cron système planifie les tâches système en fonction des commandes contenues dans chaque fichier crontab. Un fichier crontab se compose de commandes, une par ligne, à exécuter à intervalles réguliers. Le début de chaque ligne indique la date et l'heure auxquelles le démon cron doit exécuter la commande.
Par exemple, un fichier crontab nommé root est fourni pendant l'installation du logiciel SunOS. Le contenu du fichier inclut les lignes de commande suivantes :
10 3 * * * /usr/sbin/logadm (1) 15 3 * * 0 /usr/lib/fs/nfs/nfsfind (2) 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3) 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4)
La section suivante décrit la sortie de chacune de ces lignes de commande :
La première ligne exécute la commande logadm à 3h10 chaque jour.
La deuxième ligne exécute le script nfsfind chaque dimanche à 3h15.
La troisième ligne exécute un script qui vérifie le passage à l'heure d'été (et apporte des corrections, si nécessaire) chaque jour à 2h10.
En l'absence de fuseau horaire HTR et de fichier /etc/rtc_config, cette entrée n'a aucun effet.
x86 uniquement - Le script /usr/sbin/rtc peut être exécuté uniquement sur un système x86.
La quatrième ligne recherche (et supprime) les entrées en double dans le tableau des services de sécurité génériques, /etc/gss/gsscred_db, chaque jour à 3h30.
Pour plus d'informations sur la syntaxe des lignes dans un fichier crontab, reportez-vous à la section Syntaxe des entrées du fichier crontab.
Les fichiers crontab sont stockés dans le répertoire /var/spool/cron/crontabs. Plusieurs fichiers crontab en plus de root sont fournis pendant l'installation du logiciel SunOS. Consultez le tableau ci-dessous.
Tableau 4-2 Fichiers crontab par défaut
|
Outre les fichiers crontab par défaut, les utilisateurs peuvent créer des fichiers crontab pour planifier leurs propres tâches système. D'autres fichiers crontab sont nommés d'après les comptes utilisateur dans lesquels ils sont créés, tels que bob, mary, smith ou jones.
Pour accéder aux fichiers crontab appartenant à root ou à d'autres utilisateurs, des privilèges de superutilisateur sont requis.
Les procédures de création, de modification, d'affichage et de suppression des fichiers crontab sont décrites dans les sections suivantes.
Le démon cron gère la planification automatique des commandes crontab. Le rôle du démon cron consiste à vérifier dans le répertoire /var/spool/cron/crontab la présence de fichiers crontab.
Le démon cron effectue les tâches suivantes au démarrage :
Il vérifie l'existence de nouveaux fichiers crontab.
Il lit les heures d'exécution qui sont répertoriées à l'intérieur de ces fichiers.
Il soumet l'exécution des commandes au bon moment.
Il reçoit les notifications des commandes crontab relatives aux fichiers crontab mis à jour.
De la même façon, le démon cron contrôle la planification des fichiers at. Ces fichiers sont stockés dans le répertoire /var/spool/cron/atjobs . Le démon cron reçoit également les notifications des commandes crontab relatives aux travaux at soumis.
Un fichier crontab comprend des commandes, une par ligne, qui s'exécutent automatiquement à l'heure spécifiée par les cinq premiers champs de chaque ligne de commande. Ces cinq champs, décrits dans le tableau suivant, sont séparés par des espaces.
Tableau 4-3 Valeurs acceptables pour les champs d'heure crontab
|
Suivez les instructions ci-dessous pour utiliser des caractères spéciaux dans les champs d'heure crontab :
Utilisez un espace pour séparer chaque champ.
Utilisez une virgule pour séparer plusieurs valeurs.
Utilisez un trait d'union pour définir une plage de valeurs.
Utilisez l'astérisque comme caractère générique pour inclure toutes les valeurs possibles.
Utilisez un signe de commentaire (#) au début d'une ligne pour indiquer un commentaire ou une ligne vierge.
Par exemple, l'entrée de commande crontab suivante affiche un message de rappel dans la fenêtre de la console utilisateur à 16 heures, le premier et le quinze de chaque mois.
0 16 1,15 * * echo Timesheets Due > /dev/console
Chaque commande contenue dans un fichier crontab doit comporter une ligne, même si cette dernière est très longue. Le fichier crontab ne reconnaît pas les retours chariot supplémentaires. Pour plus d'informations sur les entrées et options de commande crontab, reportez-vous à la page de manuel crontab(1).
La façon la plus simple de créer un fichier crontab consiste à utiliser la commande crontab -e. Cette commande ouvre l'éditeur de texte qui a été défini pour votre environnement système. L'éditeur par défaut de votre environnement système est défini dans la variable d'environnement EDITOR. Si cette variable n'a pas été définie, la commande crontab utilise l'éditeur par défaut, ed. Vous devez choisir, de préférence, un éditeur que vous connaissez bien.
L'exemple suivant illustre comment déterminer si un éditeur a été défini et comment configurer vi comme éditeur par défaut.
$ which $EDITOR $ $ EDITOR=vi $ export EDITOR
Lorsque vous créez un fichier crontab, il est automatiquement placé dans le répertoire /var/spool/cron/crontabs et reçoit votre nom d'utilisateur. Vous pouvez créer ou modifier un fichier crontab pour un autre utilisateur ou pour l'utilisateur root si vous disposez des privilèges d'utilisateur root.
Avant de commencer
Si vous créez ou modifiez un fichier crontab appartenant à root ou à un autre utilisateur, vous devez prendre le rôle root. Reportez-vous à la section Utilisation de vos droits d’administration du manuel Administration d’Oracle Solaris 11.1 : Services de sécurité.
Vous n'avez pas besoin de prendre le rôle root pour modifier votre propre fichier crontab.
# crontab -e [username]
où username indique le nom du compte utilisateur pour lequel vous souhaitez créer ou modifier un fichier crontab. Vous pouvez créer votre propre fichier crontab sans privilèges de superutilisateur, mais vous devez disposer des privilèges de superutilisateur pour créer ou modifier un fichier crontab pour root ou un autre utilisateur.
Suivez la syntaxe décrite dans Syntaxe des entrées du fichier crontab. Le fichier crontab est placé dans le répertoire /var/spool/cron/crontabs.
# crontab -l [username]
Exemple 4-1 Création d'un fichier crontab
L'exemple suivant décrit la création d'un fichier crontab pour un autre utilisateur.
# crontab -e jones
L'entrée de commande suivante ajoutée à un nouveau fichier crontab supprime automatiquement les fichiers journaux du répertoire personnel d'un utilisateur à 1:00 chaque dimanche matin. L'entrée de commande ne redirigeant pas la sortie, les caractères de redirection sont ajoutés à la ligne de commande après *.log. L'exécution correcte de la commande est ainsi garantie.
# This command helps clean up user accounts. 1 0 * * 0 rm /home/jones/*.log > /dev/null 2>&1
$ ls -l /var/spool/cron/crontabs
Vérifiez le contenu du fichier crontab de l'utilisateur en utilisant la commande crontab -l comme décrit dans la section Affichage d'un fichier crontab.
La commande crontab -l affiche le contenu d'un fichier crontab de la même façon que la commande cat affiche le contenu d'autres types de fichiers. Vous n'avez pas besoin d'accéder au répertoire /var/spool/cron/crontabs (contenant les fichiers crontab) pour utiliser cette commande.
Par défaut, la commande crontab -l affiche votre propre fichier crontab. Pour afficher les fichiers crontab qui appartiennent à d'autres utilisateurs, vous devez être connecté en tant que superutilisateur.
Avant de commencer
Prenez le rôle root pour afficher un fichier crontab appartenant à root ou à un autre utilisateur. Reportez-vous à la section Utilisation de vos droits d’administration du manuel Administration d’Oracle Solaris 11.1 : Services de sécurité.
Vous n'avez pas besoin de prendre le rôle root pour afficher votre propre fichier crontab.
# crontab -l [username]
où username indique le nom du compte utilisateur pour lequel vous souhaitez afficher un fichier crontab. L'affichage du fichier crontab d'un autre utilisateur exige des privilèges de superutilisateur.
Attention - Si, par mégarde, vous saisissez la commande crontab sans option, appuyez sur le caractère d'interruption de l'éditeur. Ce caractère vous permet de quitter sans enregistrer les modifications. En revanche, si vous avez enregistré les modifications et quitté le fichier, le fichier crontab est remplacé par un fichier vide. |
Exemple 4-2 Affichage d'un fichier crontab
Cet exemple illustre l'utilisation de la commande crontab -l pour afficher le contenu du fichier crontab par défaut de l'utilisateur.
$ crontab -l 13 13 * * * chmod g+w /home1/documents/*.book > /dev/null 2>&1
Exemple 4-3 Affichage du fichier root crontab par défaut
Cet exemple illustre l'affichage du fichier root crontab par défaut.
$ suPassword: # crontab -l #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ # # The root crontab should be used to perform accounting data collection. # # 10 3 * * * /usr/sbin/logadm 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
Exemple 4-4 Affichage du fichier crontab d'un autre utilisateur
Cet exemple illustre l'affichage du fichier crontab d'un autre utilisateur.
$ su Password: # crontab -l jones 13 13 * * * cp /home/jones/work_files /usr/backup/. > /dev/null 2>&1
Par défaut, les fichiers crontab sont protégés de sorte que vous ne puissiez pas supprimer par inadvertance un fichier crontab en utilisant la commande rm. Utilisez plutôt la commande crontab -r pour supprimer des fichiers crontab.
Par défaut, la commande crontab -r supprime votre propre fichier crontab.
Vous n'avez pas besoin d'accéder au répertoire /var/spool/cron/crontabs (contenant les fichiers crontab) pour utiliser cette commande.
Avant de commencer
Prenez le rôle root pour supprimer un fichier crontab appartenant à root ou à un autre utilisateur. Les rôles contiennent des autorisations et des commandes privilégiées. Reportez-vous à la section Utilisation de vos droits d’administration du manuel Administration d’Oracle Solaris 11.1 : Services de sécurité.
Vous n'avez pas besoin de prendre le rôle root pour supprimer votre propre fichier crontab.
# crontab -r [username]
où username indique le nom du compte utilisateur pour lequel vous souhaitez supprimer un fichier crontab. La suppression des fichiers crontab d'un autre utilisateur exige des privilèges de superutilisateur.
Attention - Si, par mégarde, vous saisissez la commande crontab sans option, appuyez sur le caractère d'interruption de l'éditeur. Ce caractère vous permet de quitter sans enregistrer les modifications. En revanche, si vous avez enregistré les modifications et quitté le fichier, le fichier crontab est remplacé par un fichier vide. |
# ls /var/spool/cron/crontabs
Exemple 4-5 Suppression d'un fichier crontab
L'exemple suivant illustre comment l'utilisateur smith emploie la commande crontab -r pour supprimer son propre fichier crontab.
$ ls /var/spool/cron/crontabs adm jones root smith sys uucp $ crontab -r $ ls /var/spool/cron/crontabs adm jones root sys uucp
Vous pouvez contrôler l'accès à la commande crontab en utilisant deux fichiers du répertoire /etc/cron.d : cron.deny et cron.allow. Ces fichiers permettent uniquement aux utilisateurs spécifiés d'exécuter les tâches de commande crontab telles que la création, la modification, l'affichage ou la suppression de leurs propres fichiers crontab.
Les fichiers cron.deny et cron.allow contiennent une liste de noms d'utilisateur, chaque ligne comportant un seul nom.
Ces fichiers de contrôle d'accès fonctionnent comme suit :
Si cron.allow existe, seuls les utilisateurs figurant dans ce fichier peuvent créer, modifier, afficher ou supprimer des fichiers crontab.
Si cron.allow n'existe pas, tous les utilisateurs peuvent soumettre des fichiers crontab, à l'exception de ceux qui figurent dans cron.deny.
Si ni cron.allow ni cron.deny n'existent, les privilèges de superutilisateur sont requis pour exécuter la commande crontab .
Les privilèges de superutilisateur sont requis pour modifier ou créer les fichiers cron.deny et cron.allow.
Le fichier cron.deny, qui est créé pendant l'installation du logiciel SunOS, contient les noms d'utilisateur suivants :
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess
Aucun des noms d'utilisateur du fichier cron.deny par défaut ne peut accéder à la commande crontab. Vous pouvez modifier ce fichier afin d'ajouter d'autres noms d'utilisateur qui n'auront pas accès à la commande crontab.
Aucun fichier cron.allow n'est fourni par défaut. Par conséquent, une fois le logiciel Oracle Solaris installé, tous les utilisateurs (à l'exception de ceux qui figurent dans le fichier cron.deny par défaut) peuvent accéder à la commande crontab. Si vous créez un fichier cron.allow, seuls ces utilisateurs peuvent accéder à la commande crontab.
Reportez-vous à la section Utilisation de vos droits d’administration du manuel Administration d’Oracle Solaris 11.1 : Services de sécurité.
$ su - Password: #
daemon bin smtp nuucp listen nobody noaccess username1 username2 username3 . . .
# cat /etc/cron.d/cron.deny daemon bin nuucp listen nobody noaccess
Reportez-vous à la section Utilisation de vos droits d’administration du manuel Administration d’Oracle Solaris 11.1 : Services de sécurité.
Si vous n'ajoutez pas root au fichier, l'accès superutilisateur aux commandes crontab sera refusé.
Ajoutez les utilisateurs qui seront autorisés à utiliser la commande crontab.
root username1 username2 username3 . . .
Exemple 4-6 Restriction de l'accès à la commande crontab aux utilisateurs spécifiés
L'exemple suivant illustre un fichier cron.deny qui empêche les noms d'utilisateur jones, temp et visitor d'accéder à la commande crontab.
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess jones temp visitor
L'exemple suivant illustre un fichier cron.allow. Les utilisateurs root, jones et smith sont les seuls à pouvoir accéder à la commande crontab.
$ cat /etc/cron.d/cron.allow root jones smith
Pour vérifier si un utilisateur spécifique peut accéder à la commande crontab, utilisez la commande crontab -l lorsque vous êtes connecté au compte d'utilisateur.
$ crontab -l
Si l'utilisateur peut accéder à la commande crontab et s'il a déjà créé un fichier crontab, le fichier s'affiche. Dans le cas contraire, si l'utilisateur peut accéder à la commande crontab, mais si aucun fichier crontab n'existe, un message similaire à celui ci-dessous s'affiche :
crontab: can't open your crontab file
Soit l'utilisateur est répertorié dans le fichier cron.allow (si ce fichier existe), soit il n'est pas répertorié dans le fichier cron.deny.
Si l'utilisateur ne peut pas accéder à la commande crontab, le message suivant s'affiche, qu'un fichier crontab antérieur existe ou non :
crontab: you are not authorized to use cron. Sorry.
Ce message signifie que l'utilisateur ne figure pas dans le fichier cron.allow (si ce fichier existe) ou qu'il figure dans le fichier cron.deny.