J'utilise crontab pour la première fois. Vous voulez écrire quelques tâches cron de test très simples et les exécuter.
$crontab * * * * * echo "Hi"
ne produit rien.
crontab */1 * * * * echo "hi"
dit */1: No such file or directory
.
En outre, comment puis-je répertorier les tâches cron en cours d'exécution (pas seulement celles que je possède, mais celles démarrées par d'autres utilisateurs comme root également).
Et comment supprimer une tâche cron particulière?
Réponses:
Vous ne pouvez pas utiliser
crontab
comme ça. Utilisezman crontab
pour lire comment appeler correctement cet utilitaire.Vous voudrez utiliser
crontab -e
pour modifier les entrées cron de l'utilisateur actuel (vous pouvez ajouter / modifier / supprimer des lignes). Utilisezcrontab -l
pour voir la liste actuelle des tâches configurées.Quant à voir les crontabs des autres utilisateurs, ce n'est pas possible sans être root sur les installations par défaut. Voir Comment puis-je répertorier tous les travaux cron pour tous les utilisateurs pour quelques façons de tout répertorier (en tant que root)
Remarque: soyez très prudent lorsque vous utilisez des caractères globbing shell sur la ligne de commande (
*
et?
surtout).*
sera étendu à la liste des fichiers du répertoire courant, ce qui peut avoir des effets inattendus. Si vous voulez passer*
comme argument à quelque chose, citez-le ('*'
).la source
mail
de la ligne de commande doit accéder à votre boîte de courrier local, si elle est configurée.) Pour voir le « salut » dans un environnement graphique, vous pouvez définir la tâche:* * * * * export DISPLAY=:0; xmessage 'hi'
.Il y a deux façons de modifier sa version
crontab
:de manière interactive, en utilisant
crontab -e
, qui ouvriracrontab
l'éditeur dans l'éditeur spécifié par$VISUAL
ou$EDITOR
, oude manière non interactive, en utilisant
crontab crontab.txt
, qui importera simplement lescrontab
entrées du fichiercrontab.txt
, remplaçant la crontab active existante pour l'utilisateur actuel.Le problème que vous avez est que vous utilisez simplement la
crontab
commande de manière incorrecte.Ce qui suit concerne la manipulation non interactive de crontab:
De manière à supprimer des tâches particulières par programme, vous pouvez faire quelque chose comme
où
PATTERN
est une expression régulière qui correspondra aux tâches que vous souhaitez supprimer. Ici,crontab -l
vous donnera votre courantcrontab
.Ou, si vous avez des entrées dans un fichier appelé
crontab-fragment.txt
que vous souhaitez supprimer de la crontab active,Cela lit la crontab actuelle et filtre (supprime) toute ligne qui se produit également dans le fichier
crontab-fragment.txt
dans le répertoire en cours (en utilisant une comparaison de chaîne de ligne complète). Le résultat est enregistrécrontab.txt
puis chargé à partir de là pour remplacer la crontab actuelle.Pour ajouter une ou plusieurs tâches , faites quelque chose comme
Cela suppose que le fichier
crontab-fragment.txt
contient les entrées que vous souhaitez ajouter. Il lit la crontab actuelle, ajoute les entrées decrontab-fragment.txt
à ceci et créecrontab.txt
. Lecrontab.txt
fichier remplace alors la crontab actuelle.la source
Si vous souhaitez modifier la crontab de manière interactive, exécutez la commande
crontab -e
, sans aucune autre option. Cela lancera un éditeur sur une copie de la crontab; lorsque vous quittez l'éditeur , la copie modifiée devient la nouvelle crontab. Vous pouvez contrôler quel éditeur est démarré via les variables d'environnementVISUAL
etEDITOR
. Pour répertorier votre crontab, exécutezcrontab -l
.Si vous souhaitez modifier la crontab dans un script, définissez
VISUAL
etEDITOR
sur le chemin d'accès à un script ou à un extrait de shell qui modifie le fichier fourni sur place. L'éditeured
est une possibilité ici, oused -i
si votre implémentation desed
a cette option. Si vous souhaitez ajouter inconditionnellement une ligne, vous pouvez utiliserecho … >>
. Prenez soin de citer; en cas de doute, écrivez un script et passez le nom du script commeEDITOR
.la source
C'est un peu tard, mais pour ceux qui cherchent ici. Il existe des moyens plus simples que de manipuler les flux d'entrée / sortie avec
VISUAL
etEDITOR
.Vous pouvez simplement écrire votre planning cron dans un fichier, 1 job par ligne, et utiliser la commande
crontab [filename]
pour pouvoir y fairecat
vos jobs dansfilename
le cadre de votre script et enfin appeler crontab à la fin si vous le souhaitez.en fait, c'est l'utilisation la plus courante sous forme d'
man crontab
indices en la répertoriant d' abordla source
Si vous souhaitez ajouter des entrées à l'
crontab
automatisation par ou à partir de la ligne de commande, vous pouvez le faire (définir les heures que vous souhaitez avoir)Alors:
pour recharger les crontabs.
la source
/var/spool/cron
. Une meilleure façon serait d'utiliser lacrontab(1)
commande.Essayez-le avec cette commande:
puis ajoutez votre tâche cron:
dans ce fichier.
la source
Je voudrais souligner la façon dont je décris ci-dessous, même si cela a déjà été mentionné dans un autre commentaire. Je l'ai trouvé extrêmement utile lors de l'ajout des entrées dans un fichier, puis dans le fichier crontab. Ce fichier contiendrait les deux entrées ci-dessous et le nom du fichier serait
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Ensuite, j'ai exécuté la commande ci-dessous pour ajouter ces entrées à la crontab.
$ crontab hello-world-crontab.txt
L'étape suivante consiste à vérifier que ces entrées ont été ajoutées.
$ crontab -l
Une brève explication sur ce que fait chaque entrée:
/home/user/greeting.txt
tous les jours à 9h.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
la source