#1 Le 01/02/2022, à 11:27
- grraougrraou
[RESOLU]problème avec la commande "at -f"
Bonjour
J'ai cherché dans les forums, mais je n'ai pas trouvé de réponse.
Je suis sous xubuntu (Ubuntu 18.04.6)
Je cherche à utiliser la commande "at -f" dans un script.
#!/bin/csh
at now + 0 hours -f /home/edith/lancer_calculs_58.sh
le fichier /home/edith/lancer_calculs_58.sh est executable
le script aussi
Quand je lance le script, la console m'affiche :
warning: commands will be executed using /bin/sh
job 291 at Tue Feb 1 10:53:00 2022
mais il ne se passe rien
quand je lance directement la commande
at now + 0 hours -f /home/edith/lancer_calculs_58.sh
j'ai exactement la meme chose :
la console affiche
warning: commands will be executed using /bin/sh
job 291 at Tue Feb 1 10:53:00 2022
mais il ne se passe rien
quand je lance la commande dans la console
at now + 0 hours
warning: commands will be executed using /bin/sh
at> /home/edith/Bureau/lancer_calculs_58.sh
at> <EOT>
job 288 at Tue Feb 1 10:36:00 2022
le calcul démarre et se poursuit tranquillement.
J'en déduis qu'il y a un problème avec la commande
at -f
, mais je ne vois pas du tout pourquoi.
quelqu'un aurait il une explication?
Je vous remercie
Dernière modification par grraougrraou (Le 02/02/2022, à 13:40)
Hors ligne
#2 Le 01/02/2022, à 12:30
- Watael
Re : [RESOLU]problème avec la commande "at -f"
salut,
je n'ai pas ce souci : at -f est bien exécuté dans un script "test".
quelles sont tes intentions en utilisant at ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 01/02/2022, à 12:47
- bruno
Re : [RESOLU]problème avec la commande "at -f"
Bonjour,
Les tâches lancées par la commande at ne s’exécutent pas dans le contexte de l'utilisateur connecté. Elles sont exécutées dans un shell non connecté, c'est tout à fait analogue a cron.
Tu ne verras donc rien sur la sortie standard. Les retours sont envoyés par courriel à l'utilisateur qui a lancé la commande :
L'appelant recevra par courriel les messages écrits sur les flux de sortie standard et d'erreur standard, s'il y en a. Le courriel sera envoyé en utilisant la commande /usr/sbin/sendmail.
Si la machine n'est pas configurée pour transférer les courriels locaux vers l'extérieur, tu trouveras les retours dans /var/mail/nom_utilisateur
EDIT : merci de modifier ton premier message et d'utiliser les balises [ code ] pour les commandes et leur retour.
Dernière modification par bruno (Le 01/02/2022, à 13:00)
#4 Le 01/02/2022, à 13:32
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
salut,
je n'ai pas ce souci : at -f est bien exécuté dans un script "test".
quelles sont tes intentions en utilisant at ?
Bonjour
en fait, je dois faire le calcul dans 80 repertoires differents....
J'ai donc essayé de faire une boucle (je n'ai mis dans mon post que le premier calcul mais il y en a beacoup d'autres)
Hors ligne
#5 Le 01/02/2022, à 13:45
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Bonjour,
Les tâches lancées par la commande at ne s’exécutent pas dans le contexte de l'utilisateur connecté. Elles sont exécutées dans un shell non connecté, c'est tout à fait analogue a cron.
Tu ne verras donc rien sur la sortie standard. Les retours sont envoyés par courriel à l'utilisateur qui a lancé la commande :man at a écrit :L'appelant recevra par courriel les messages écrits sur les flux de sortie standard et d'erreur standard, s'il y en a. Le courriel sera envoyé en utilisant la commande /usr/sbin/sendmail.
Si la machine n'est pas configurée pour transférer les courriels locaux vers l'extérieur, tu trouveras les retours dans /var/mail/nom_utilisateur
EDIT : merci de modifier ton premier message et d'utiliser les balises [ code ] pour les commandes et leur retour.
Desoléé pour les balises
Il n'y a rien dans /var/mail
et je ne sais pas du tout où chercher.... J'ai vu qu'il existait un /var/spool/cron/atspool ou devraient se trouver les jobs, mais je n'ai rien...
Hors ligne
#6 Le 01/02/2022, à 13:47
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Et en complément de mon message
J'utilise une autre machine, (sous centos 6.9) où je lance les memes calculs, et il n'y a aucun probleme
Hors ligne
#7 Le 01/02/2022, à 13:49
- Watael
Re : [RESOLU]problème avec la commande "at -f"
Watael a écrit :salut,
je n'ai pas ce souci : at -f est bien exécuté dans un script "test".
quelles sont tes intentions en utilisant at ?
Bonjour
en fait, je dois faire le calcul dans 80 repertoires differents....
J'ai donc essayé de faire une boucle (je n'ai mis dans mon post que le premier calcul mais il y en a beacoup d'autres)
en quoi at t'aide-t-il ?
Dernière modification par Watael (Le 01/02/2022, à 14:12)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 01/02/2022, à 13:53
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
grraougrraou a écrit :Watael a écrit :salut,
je n'ai pas ce souci : at -f est bien exécuté dans un script "test".
quelles sont tes intentions en utilisant at ?
Bonjour
en fait, je dois faire le calcul dans 80 repertoires differents....
J'ai donc essayé de faire une boucle (je n'ai mis dans mon post que le premier calcul mais il y en a beacoup d'autres)en quoi at t'aide-t-il ?
IL faut attendre que le calcul soit terminé pour lancer le suivant
du coup, je lance un calcul toutes les 8 heures en changeant de script (dans lequel se trouve un nom de repertoire different)
suis je claire?
voila le script en question :
#!/bin/csh
@ i = 57
@ j = 57
@ ti = 0
at now + $ti hours -f /home/edith/lancer_calculs_58.sh
while ( $i < 84 )
@ i++
@ j = $i + 1
@ ti = $ti + 13
cp lancer_calculs_$i.sh lancer_calculs_$j.sh
sed "s/M$i/M$j/" lancer_calculs_$j.sh > temp
mv temp lancer_calculs_$j.sh
at now + $ti hours -f /home/edith/lancer_calculs_$j.sh
end
comme j'en ai certains qui sont partis et que je ne veux pas perdre de temps a chercher pourquoi ca ne marche pas, j'en ai envoye quelques uns "a la main" et comme je l'ai dit, sur ma machine qui est sous centos 6.9, cela marche bien (donc je commence a 58 car les 57 precedents sont deja partis ou sur l'autre machine)
Dernière modification par grraougrraou (Le 01/02/2022, à 13:57)
Hors ligne
#9 Le 01/02/2022, à 14:15
- bruno
Re : [RESOLU]problème avec la commande "at -f"
Tu n'a pas besoin de la commande at pour lancer un script (ou une commande) après que le précédent soit terminé.
truc1 ; truc2
ou
truc1
truc2
truc2 est exécuté après que truc1 soit terminé.
truc1 && truc2
truc2 est exécuté après que truc1 ait été terminé avec succès
#10 Le 01/02/2022, à 14:17
- Watael
Re : [RESOLU]problème avec la commande "at -f"
Il faut attendre que le calcul soit terminé pour lancer le suivant
il n'est pas dit qu'après huit heures le script précédent soit bien terminé, ou qu'un script finisse bien avant huit heures (ce qui te fait perdre du temps).
chaque script ne pourrait-il pas plutôt appeler le suivant ... ?
ou simplement, exécuter ton script pour qu'il appelle chaque script l'un après l'autre (séquentiellement), ainsi chaque script s'exécute uniquement lorsque le précédent est bien fini... ?
et, pourquoi csh ? et pas un shell compatible POSIX ?
Dernière modification par Watael (Le 01/02/2022, à 14:18)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 01/02/2022, à 14:27
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Il faut attendre que le calcul soit terminé pour lancer le suivant
il n'est pas dit qu'après huit heures le script précédent soit bien terminé, ou qu'un script finisse bien avant huit heures (ce qui te fait perdre du temps).
chaque script ne pourrait-il pas plutôt appeler le suivant ... ?
ou simplement, exécuter ton script pour qu'il appelle chaque script l'un après l'autre (séquentiellement), ainsi chaque script s'exécute uniquement lorsque le précédent est bien fini... ?et, pourquoi csh ? et pas un shell compatible POSIX ?
en fait, le calcul ne s'execute pas dans le terminal et si je les lance les uns a la suite des autres, ils vont tous s'executer en meme temps.
J'aurais pu essayer de trouver le PID du calcul en cours et lancer le suivant si ce PID n'est plus trouvé, mais je ne sais pas comment faire.
et j'ai mis 8 heures car c'est une moyenne (et je sais que certains calculs dureront plus ou moins longtemps, mais c'est la facon la plus realisable pour moi que j'ai trouvée...)
Pour le shell csh, en fait, je ne connais que csh et tcsh.... (je n'ai meme pas essaye d'en trouver un autre...)
Hors ligne
#12 Le 01/02/2022, à 14:38
- Watael
Re : [RESOLU]problème avec la commande "at -f"
en fait, le calcul ne s'execute pas dans le terminal et si je les lance les uns a la suite des autres, ils vont tous s'executer en meme temps.
un script attend toujours* qu'une commande soit terminée pour exécuter la suivante.
--
* sauf , bien sûr, si on demande explicitement à une commande de passer en tâche de fond.
Dernière modification par Watael (Le 01/02/2022, à 14:41)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 01/02/2022, à 14:39
- bruno
Re : [RESOLU]problème avec la commande "at -f"
si je les lance les uns a la suite des autres, ils vont tous s'executer en meme temps.
Si je fais un script (en bash) :
#!/usr/bin/bash
./test1.sh
./test2.sh
test2.sh est exécuté après que test1.sh se soit terminé. Et c'est pareil si j'exécute test.sh dans un boucle qui parcourt tous les dossiers à traiter.
EDIT : bon je laisse Watael répondre
Dernière modification par bruno (Le 01/02/2022, à 14:41)
#14 Le 01/02/2022, à 14:42
- Watael
Re : [RESOLU]problème avec la commande "at -f"
done!
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 01/02/2022, à 14:52
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Je suis en train de tester
Hors ligne
#16 Le 01/02/2022, à 15:15
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
merci a tous
ca marche
mais par contre, je n'ai toujours pas compris pourquoi mon script marche sous centos, et pas sous ubuntu....
Hors ligne
#17 Le 01/02/2022, à 15:40
- Tawal
Re : [RESOLU]problème avec la commande "at -f"
Hello,
Peut-être que les versions de csh sont différentes sur chaque machine/système.
Et donc, réagissent différemment.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#18 Le 01/02/2022, à 15:45
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Hello,
Peut-être que les versions de csh sont différentes sur chaque machine/système.
Et donc, réagissent différemment.
il y a des chances....
En tous cas merci a ceux qui m'ont aide.
Ca va me simplifier la vie. Et je vais surement perdre beaucoup moins de temps....
Hors ligne
#19 Le 01/02/2022, à 15:57
- bruno
Re : [RESOLU]problème avec la commande "at -f"
Cela semble un cas typique de problème XY
mais par contre, je n'ai toujours pas compris pourquoi mon script marche sous centos, et pas sous ubuntu....
Parce que ta version de CentOS utilise csh comme shell par défaut et qu'Ubuntu utilise dash. Et tu vois bien dans tes retours (Warning) de commande at que c'est /bin/sh qui va être utilisé, donc csh dans un cas et dash dans l'autre.
#20 Le 01/02/2022, à 16:17
- Watael
Re : [RESOLU]problème avec la commande "at -f"
c'est /bin/sh qui va être utilisé, donc csh dans un cas et dash dans l'autre.
pour les commandes qu'on lui passe.
ici, la commande qu'on lui passe est un script csh, c'est donc csh qui exécutera le script.
ce serait pareil avec un script python, c'est bien python qui va l'exécuter, pas sh
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#21 Le 01/02/2022, à 16:32
- grraougrraou
Re : [RESOLU]problème avec la commande "at -f"
Cela semble un cas typique de problème XY
mais par contre, je n'ai toujours pas compris pourquoi mon script marche sous centos, et pas sous ubuntu....
Parce que ta version de CentOS utilise csh comme shell par défaut et qu'Ubuntu utilise dash. Et tu vois bien dans tes retours (Warning) de commande at que c'est /bin/sh qui va être utilisé, donc csh dans un cas et dash dans l'autre.
je ne comprends pas trop ce que tu veux dire.
si je mets #! /bin/csh au debut de mon script, il ne l'utilise pas?
Hors ligne
#22 Le 01/02/2022, à 16:34
- Watael
Re : [RESOLU]problème avec la commande "at -f"
si, si, bien sûr.
et si csh n'était pas installé sur la machine, il y aurait un autre avertissement indiquant que le shell dans le shebang n'est pas connu, et le script ne serait pas exécuté.
Dernière modification par Watael (Le 01/02/2022, à 16:34)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#23 Le 01/02/2022, à 16:35
- Tawal
Re : [RESOLU]problème avec la commande "at -f"
Si justement ! (Cf. la réponse de Watael au dessus )
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#24 Le 01/02/2022, à 16:45
- bruno
Re : [RESOLU]problème avec la commande "at -f"
Non, pas dans le cas d'une commande at. La page de man spécifie bien que -f lit la tâche depuis le fichier plutôt que l'entrée standard. Cela n'exécute pas le script passé en argument, mais exécute ligne par ligne les commandes qu'il contient. Je t'invite à essayer.
#25 Le 01/02/2022, à 17:13
- Tawal
Re : [RESOLU]problème avec la commande "at -f"
En effet !
Et donc chaque ligne est exécutée par le shell /bin/sh.
La 1ère ligne (le shebang) est prise comme un commentaire.
Me trompe-je ?
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne