J'ai créé un script pour installer deux scripts sur la crontab.
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
Le script s'exécute et ajoute les deux lignes à la crontab. Mais si je lance à nouveau le script, il ajoute à nouveau ces lignes, donc j'aurai quatre lignes disant la même chose. Je veux que le script d'installation s'exécute de telle sorte que les lignes insérées dans la crontab ne se répètent pas. Comment puis je faire ça
Réponses:
Je recommanderais d'utiliser
/etc/cron.d
Overcrontab
.Vous pouvez placer des fichiers
/etc/cron.d
qui se comportent comme des entrées crontab. Bien que le format soit légèrement différent.Par exemple
/etc/cron.d/pcap
:La différence dans le format consiste à ajouter l'utilisateur pour exécuter le travail comme après la spécification d'heure.
Maintenant, vous pouvez simplement vérifier si le fichier existe et si vous le remplacez, cela n'a pas d'importance.
Notez qu'il est possible que votre démon cron n'en ait pas
/etc/cron.d
. Je ne sais pas quels démons cron l'ont, mais vixie cron est le démon cron standard sur linux, et c'est le cas.la source
Vous pouvez plutôt déclarer une fonction:
et l'invoquer en disant:
Cela ajouterait la ligne uniquement si elle n'existe pas dans le fichier.
la source
-F
feraitgrep
interpréter le motif comme une chaîne fixe.de bash j'utilise
Utilisez également ce script pour ajouter des entrées cron sur des serveurs distants
la source
Vous pouvez écrire un script et l'ajouter à crontab pour l'arrêter:
la source
kill -9
ne devrait être fait qu'en dernier recours - unix.stackexchange.com/questions/8916/…