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 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 :

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.

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"

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)

Hors ligne

#5 Le 01/02/2022, à 13:45

grraougrraou

Re : [RESOLU]problème avec la commande "at -f"

bruno a écrit :

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"

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 ?

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"

Watael a écrit :
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"

Watael a écrit :

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"

grraougrraou  a écrit :

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 wink

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! smile


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"

Tawal a écrit :

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 wink

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"

bruno a écrit :

Cela semble un cas typique de problème XY wink

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 wink)


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