Commande crontab
Objectif
Soumet, édite, répertorie ou supprime des travaux cron.
Syntaxe
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | Fichier ]
Descriptif
La commande crontab soumet, édite, répertorie ou supprime des travaux cron. Un travail cron est une commande exécutée par le démon cron à intervalles réguliers. Pour soumettre un travail cron, spécifiez la commande crontab avec l'indicateur -e . La commande crontab appelle une session d'édition qui vous permet de créer un fichier crontab . Vous créez des entrées pour chaque travail cron dans ce fichier. Chaque entrée doit être dans un format acceptable pour le démon cron . Pour plus d'informations sur la création d'entrées, voir The crontab File Entry Format.
Lorsque vous avez terminé de créer des entrées et de quitter le fichier, la commande crontab le copie dans le répertoire /var/spool/cron/crontabs et le place dans un fichier nommé d'après votre nom d'utilisateur en cours. Si un fichier portant votre nom existe déjà dans le répertoire crontabs , la commande crontab l'écrase.
Vous pouvez également créer un fichier crontab en spécifiant le paramètre Fichier . Si le fichier existe, il doit être au format attendu par le démon cron . Si le fichier n'existe pas, la commande crontab appelle l'éditeur. Si la variable d'environnement EDITOR existe, la commande appelle l'éditeur qu'elle spécifie. Sinon, la commande crontab utilise l'éditeur vi .
Pour répertorier le contenu de votre fichier crontab , spécifiez la commande crontab avec l'indicateur -l . Pour supprimer un fichier existant, utilisez l'indicateur -r .
Le paramètre facultatif UserName peut être utilisé par le propriétaire du fichier crontab ou par le superutilisateur pour éditer, répertorier, supprimer ou vérifier le statut des travaux cron pour l'utilisateur spécifié. Si UserName n'est pas valide, un message d'erreur est généré et le programme se ferme.
Si le paramètre facultatif UserName n'est pas spécifié, les indicateurs crontab sont disponibles pour l'utilisateur root et l'utilisateur en cours.
Security
Seul le superutilisateur ou le propriétaire du fichier crontab peut utiliser UserName après les indicateurs -e, -l, -ret -v pour éditer, répertorier, supprimer ou vérifier le fichier crontab de l'utilisateur spécifié.
Le démon cron
Le démon cron exécute les commandes en fonction des entrées du fichier crontab . Sauf si vous redirigez la sortie d'un travail cron vers une sortie ou une erreur standard, le démon cron vous envoie une sortie de commande ou des erreurs. Si vous spécifiez un travail cron de manière incorrecte dans votre fichier crontab , le démon cron n'exécute pas le travail.
Le démon cron examine les fichiers crontab uniquement lorsque le démon cron est initialisé. Lorsque vous apportez des modifications à votre fichier crontab à l'aide de la commande crontab , un message indiquant la modification est envoyé au démon cron . Cela élimine le temps système nécessaire à la vérification des fichiers nouveaux ou modifiés à intervalles réguliers.
Contrôles relatifs à l'utilisation de la commande crontab
Les fichiers /var/adm/cron/cron.allow et /var/adm/cron/cron.deny contrôlent les utilisateurs qui peuvent utiliser la commande crontab . Un superutilisateur peut créer, éditer ou supprimer ces fichiers. Les entrées de ces fichiers sont des noms de connexion utilisateur avec un nom sur une ligne. Si votre ID de connexion est associé à plusieurs noms de connexion, la commande crontab utilise le premier nom de connexion figurant dans le fichier /etc/passwd , quel que soit le nom de connexion que vous utilisez. En outre, pour permettre aux utilisateurs de démarrer des travaux cron , l'attribut de démon dans le fichier /etc/security/user doit être défini sur TRUE, à l'aide de la commande chuser .
Voici un exemple de fichier cron.allow :
root
nick
dee
sarah
Si le fichier cron.allow existe, seuls les utilisateurs dont les noms de connexion y apparaissent peuvent utiliser la commande crontab . Le nom de journal de l'utilisateur root doit apparaître dans le fichier cron.allow s'il existe. Un administrateur système peut explicitement empêcher un utilisateur d'utiliser la commande crontab en répertoriant le nom de connexion de l'utilisateur dans le fichier cron.deny . Si seul le fichier cron.deny existe, tout utilisateur dont le nom n'apparaît pas dans le fichier peut utiliser la commande crontab .
Un utilisateur ne peut pas utiliser la commande crontab si l'une des conditions suivantes est vérifiée:
- Le fichier cron.allow et le fichier cron.deny n'existent pas (autorise uniquement l'utilisateur root).
- Le fichier cron.allow existe mais le nom de connexion de l'utilisateur n'y est pas répertorié.
- Le fichier cron.deny existe et le nom de connexion de l'utilisateur y est répertorié.
Si ni le fichier cron.allow ni le fichier cron.deny n'existent, seul un utilisateur disposant des droits d'accès superutilisateur peut soumettre un travail à l'aide de la commande crontab .
Format d'entrée du fichier crontab
Un fichier crontab contient des entrées pour chaque travail cron. Les entrées sont séparées par des caractères de retour à la ligne. Chaque entrée de fichier crontab contient six zones séparées par des espaces ou des tabulations au format suivant:
minute hour day_of_month month weekday command
Ces zones acceptent les valeurs suivantes:
| Article | Descriptif |
|---|---|
| minutes | 0 à 59 |
| heure | 0 à 23 |
| jour_du_mois | 1 à 31 |
| mois | 1 à 12 |
| jour de la semaine | 0 à 6 pour le dimanche au samedi |
| Commande | une commande shell |
Vous devez spécifier une valeur pour chaque zone. A l'exception de la zone command , ces zones peuvent contenir les éléments suivants:
- Nombre compris dans la plage spécifiée. Pour exécuter une commande en mai, indiquez 5 dans la zone mois .
- Deux nombres séparés par un tiret pour indiquer une plage inclusive. Pour exécuter un travail cron du mardi au vendredi, entrez 2 à 5 dans la zone weekday .
- Liste de nombres séparés par des virgules. Pour exécuter une commande le premier et le dernier jour de janvier, vous devez indiquer 1,31 dans la zone jour_du_mois .
- Une combinaison de deux nombres séparés par un tiret pour indiquer une plage inclusive et une liste de nombres séparés par des virgules peut être utilisée conjointement. Pour exécuter une commande le premier, le dixième à le seizième et le dernier jour de janvier, vous devez indiquer entre 1,10 et 16,31 dans la zone jour_du_mois. Les deux points ci-dessus peuvent également être utilisés en combinaison.
- Un * (astérisque), signifiant toutes les valeurs autorisées. Pour exécuter un travail toutes les heures, indiquez un astérisque dans la zone d'heure.
0 0 1,15 * 1 command
exécute la commande le premier et le quinzième jour de chaque mois, ainsi que chaque lundi. Pour spécifier les jours par une seule zone, l'autre zone doit contenir un * .
Indication de commandes
Le démon cron exécute la commande nommée dans la sixième zone à la date et à l'heure sélectionnées. Si vous incluez un% (signe de pourcentage) dans la sixième zone, le démon cron traite tout ce qui le précède comme l'appel de commande et met tout ce qui le suit à la disposition de l'entrée standard, sauf si vous mettez en échappement le signe de pourcentage (\ %). Les lignes vides et les lignes dont le premier caractère non blanc est le signe dièse (#) seront ignorées. Si les arguments de la commande comportent une barre oblique inversée ('\'), celle-ci doit être précédée d'une autre barre oblique inversée.
Le démon cron démarre un sous-shell à partir de votre répertoire HOME . Si vous planifiez l'exécution d'une commande alors que vous n'êtes pas connecté et que vous souhaitez exécuter des commandes dans votre fichier .profile , la commande doit explicitement lire votre fichier .profile .
Le démon cron fournit un environnement par défaut pour chaque shell, en définissant HOME, LOGNAME, SHELL (=/usr/bin/sh), et PATH (=/usr/bin).
Utilisation des événements d'audit
Si le sous-système d'audit est correctement configuré et activé, la commande crontab génère l'enregistrement d'audit suivant (événement) chaque fois que la commande est exécutée:
| Evénement | Informations |
|---|---|
| CRON_JobRemove | Répertorie les utilisateurs qui ont supprimé un fichier crontab et quand. |
| CRON_JobAdd | Répertorie les utilisateurs qui ont édité un fichier crontab et quand. |
Attention aux utilisateurs RBAC: cette commande peut effectuer des opérations privilégiées. Seuls les utilisateurs privilégiés peuvent exécuter des opérations privilégiées. Pour plus d'informations sur les autorisations et les privilèges, consultez la base de données des commandes privilégiées disponible dans Sécurité. Pour la liste des privilèges et autorisations associés à cette commandes, reportez-vous à la commande lssecattr ou à la sous-commande getcmdattr.
Indicateurs
| Article | Descriptif |
|---|---|
| -e UserName | Edite une copie du fichier crontab de l'utilisateur ou crée un fichier vide à éditer si le fichier crontab n'existe pas pour un UserNamevalide. Une fois l'édition terminée, le fichier est copié dans le répertoire crontab en tant que fichier crontab de l'utilisateur. |
| -l UserName | Répertorie le fichier crontab de l'utilisateur. |
| -r UserName | Supprime le fichier crontab de l'utilisateur du répertoire crontab . |
| -v UserName | Répertorie le statut des travaux cron de l'utilisateur. |
Statut de sortie
Cette commande renvoie les valeurs de sortie suivantes :
| Article | Descriptif |
|---|---|
| 0 % | L'opération a abouti. |
| >0 | Une erreur s'est produite. |
Exemples
- Pour copier un fichier appelémycronjobsdans le répertoire /var/spool/cron/crontabs , entrez ce qui suit:
Le fichier sera copié en tant que:crontab mycronjobs
où <nom_utilisateur> est votre nom d'utilisateur actuel./var/spool/cron/crontabs/<username> - Pour écrire l'heure sur la console toutes les heures, entrez:
0 * * * * echo The hour is `date` . >/dev/console - Pour exécuter la commande calendar à 6:30 a.m. tous les lundis, mercredis et vendredis, entrez:
30 6 * * 1,3,5 /usr/bin/calendar - Pour exécuter la commande calendar tous les jours de l'année à 6:30, entrez la commande suivante:
30 6 * * * /usr/bin/calendar - Pour exécuter un script appelémaintenancetous les jours à minuit en août, entrez ce qui suit:
0 0 * 8 * /u/harry/bin/maintenance - Pour définir le texte de l'entrée standard dans une commande, entrez:
Le texte qui suit le signe % (pourcentage) définit l'entrée standard de la commande wall comme suit:0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to turn in your time card.HAPPY HOLIDAY! Remember to turn in your time card.
Fichiers
| Article | Descriptif |
|---|---|
| /var/adm/cron/FIFO | Canal de communication nommé qui envoie des messages au démon cron lorsque de nouveaux travaux sont soumis avec la commande crontab ou at . |
| /var/spool/cron/crontabs | Indique la zone de spoule crontab. |
| /var/adm/cron/cron.allow | Indique la liste des utilisateurs autorisés à accéder à la commande crontab . |
| /var/adm/cron/cron.deny | Indique la liste des utilisateurs auxquels l'accès à la commande crontab a été refusé. |