Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/06/2014, à 10:31

Choudouou

Plusieurs commandes avec crontab

Bonjour à tous,

Je souhaite exécuter plusieurs commandes dans crontab mais je n'arrive pas à toutes les faires tourner.
Au début, je n'avais qu'une commande, j'ai utilisé:

crontab -e

Puis ai ajouté ma commande:

*/2 * * * * find /tmp/RtmpYzBjbS/ -type f -name "*.ff" -amin +2 -exec rm {} \;

Ca supprimait donc des fichiers plus vieux que 2 minutes dans ce dossier tmp toutes les deux minutes.
Il se trouve que j'ai besoin de faire ça dans deux dossiers qui sont dans tmp. J'ai donc remodifié:

crontab -e

Puis:

*/2 * * * * find /tmp/RtmpYzBjbS/ -type f -name "*.ff" -amin +2 -exec rm {} \;
*/2 * * * * find /tmp/Rtmp9V2919/ -type f -name "*.ff" -amin +2 -exec rm {} \;

Mais le problème est que seule la deuxième ligne fonctionnait, donc les seuls fichiers supprimés étaient dans Rtmp9V2919.
J'ai lu sur des forums qu'on ne pouvait pas exécuter plusieurs taches comme ça. J'ai donc créé un script que j'ai rendu exécutable par tous les utilisateurs et que j'ai placé dans mes documents. Voilà le script (script_cron.sh):

#!/bin/sh
find /tmp/RtmpYzBjbS/ -type f -name "*.ff" -amin +2 -exec rm {} \;
find /tmp/Rtmp9V2919/ -type f -name "*.ff" -amin +2 -exec rm {} \;

Puis, dans crontab -e:

*/2 * * * * /home/name/Documents/script_cron.sh

Et là, je n'ai toujours que la deuxième ligne qui marche...
Lorsque je copie colle les deux commandes dans une console, ça marche (avec un sudo devant car sinon j'ai besoin d'une permission)

Du coup j'aurais aimé savoir si vous pouviez m'aider à faire tourner les deux commandes à la fois..

Merci!

Hors ligne

#2 Le 04/06/2014, à 10:41

sinbad83

Re : Plusieurs commandes avec crontab

Salut,
tu devaris essayer de séparer ton script en deux avec deux noms différents.


La connaissance n'est pas une denrée rare, il faut la partager avec les autres.
Linux registered #484707
Site: www.coursinforev.org/doku.php
Desktop AMD Ryzen 5-3600, RAM 16GB, Ubuntu 20.10,   HP Pavillon G6 Ubuntu 20.10 et Ten, Serveur Ubuntu 18.04

Hors ligne

#3 Le 04/06/2014, à 11:31

jplemoine

Re : Plusieurs commandes avec crontab

je pense qu'il faut envoyer le résultat des commandes dans des fichiers log en y incluant les erreurs.
De mémoire, c'est un truc comme ça :

find /tmp/RtmpYzBjbS/ -type f -name "*.ff" -amin +2 -exec rm {} \ > /var/log/test1.log 2>&1;
find /tmp/Rtmp9V2919/ -type f -name "*.ff" -amin +2 -exec rm {} \  > /var/log/test2.log 2>&1;

Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#4 Le 04/06/2014, à 11:31

tiramiseb

Re : Plusieurs commandes avec crontab

Salut,

Je ne vois pas pourquoi ce que tu as essayé à l'origine ne fonctionne pas.
Tu peux tout à fait programmer deux jobs différents sur deux lignes différentes de crontab...

Je pense qu'il serait pertinent de s'y pencher à nouveau, plutôt que de compliquer tout ça.

J'ai lu sur des forums qu'on ne pouvait pas exécuter plusieurs taches comme ça

Tu pourrais retrouver où tu as lu ça ? Ça m'étonne...

Et là, je n'ai toujours que la deuxième ligne qui marche...

Donc ce n'est pas lié à crontab, mais ça semble bien être un problème avec ta première commande (dans le script, ça s'exécute l'un après l'autre, donc pas de conflit possible).

Es-tu sûr qu'il ne s'agit pas d'un problème de timing (genre les fichiers ne sont pas assez vieux quand la première commande s'exécute) ?

------

Cela étant dit, tu n'as pas besoin de deux commandes pour ça !

Vu que tu exécutes la même recherche puis la même opération sur les fichiers trouvés, fais ça en un seul job :

*/2 * * * * find /tmp/RtmpYzBjbS/ /tmp/Rtmp9V2919/ -type f -name "*.ff" -amin +2 -exec rm {} \;

Par ailleurs, pour que ce soit plus efficace, évite d'exécuter la commande "rm" pour chaque fichier trouvé : exécute-la une seule fois avec  tous les fichiers en argument. Cela se fait de cette manière :

*/2 * * * * find /tmp/RtmpYzBjbS/ /tmp/Rtmp9V2919/ -type f -name "*.ff" -amin +2 -exec rm {} +

Hors ligne

#5 Le 04/06/2014, à 11:58

Choudouou

Re : Plusieurs commandes avec crontab

Merci tiramiseb, ça marche avec cette solution.
Peut être que les deux commandes à la suite ne marchaient pas à cause du point virgule? Je ne sais pas trop.

J'avais trouvé le commentaire sur ce post:
http://www.developpez.net/forums/d71625 … te-moitie/

Hors ligne

#6 Le 04/06/2014, à 12:04

tiramiseb

Re : Plusieurs commandes avec crontab

Ce que le gars veut probablement dire, c'est qu'on ne peut pas mettre plusieurs commandes en un seul job cron, sur une seule ligne.
Pas qu'on ne peut pas mettre plusieurs lignes dans un cron smile

Menfin bon là on n'a pas résolu le problème d'origine, cet incompréhensible non fonctionnement de la première commande lorsqu'elle est suivie de la seconde...
Ce n'est pas lié au ";" je pense. C'est énervant de ne pas comprendre smile

Hors ligne

#7 Le 04/06/2014, à 14:18

Choudouou

Re : Plusieurs commandes avec crontab

Oui c'est vrai, vu qu'il n'exécutait que la deuxième ligne et non la première.. Bref!

Hors ligne