At : script ne se lance pas
eZula
Messages postés
3509
Statut
Contributeur
-
eZula Messages postés 3509 Statut Contributeur -
eZula Messages postés 3509 Statut Contributeur -
Salut,
j'ai un pb avec un script "W.sh" censé se lancer au bout de 20' par la commande suivante :
au bout de 20 minutes, le script ne se lance manifestement pas, je le sais parceque j'ai inclus dedans un truc tout bête dans le genre :
et que ça n'apparait pas dans "fichier" au bout de ces 20'
ce qui est bizarre, c'est qu'en lançant manuellement ce script W.sh, il fait très bien ce qu'on lui demande, d'ailleurs il contient des instructions très simple (2 variables, un cd, un WGET, rien d'impressionant)
Ce qui est encore plus bizarre, c'est que dans le output de at, il y a un message d'erreur (qui apparait au bout de 20 minutes, donc), qui me dit qu'il n'a pas pu entrer dans un répertoire avec cd alors qu'à aucun moment il n'est question d'aller dans ce répertoire dans ce script.
Je reste vague mais de manière générale y aurait-il des précautions particulières à prendre avec at ? qu'est-ce qui vous vient à l'esprit en lisant ces mots ?
j'ai un pb avec un script "W.sh" censé se lancer au bout de 20' par la commande suivante :
at -f ~/Chemin du Script/W.sh now + 20 minutes
au bout de 20 minutes, le script ne se lance manifestement pas, je le sais parceque j'ai inclus dedans un truc tout bête dans le genre :
echo coucou4 >> fichier
et que ça n'apparait pas dans "fichier" au bout de ces 20'
ce qui est bizarre, c'est qu'en lançant manuellement ce script W.sh, il fait très bien ce qu'on lui demande, d'ailleurs il contient des instructions très simple (2 variables, un cd, un WGET, rien d'impressionant)
Ce qui est encore plus bizarre, c'est que dans le output de at, il y a un message d'erreur (qui apparait au bout de 20 minutes, donc), qui me dit qu'il n'a pas pu entrer dans un répertoire avec cd alors qu'à aucun moment il n'est question d'aller dans ce répertoire dans ce script.
Je reste vague mais de manière générale y aurait-il des précautions particulières à prendre avec at ? qu'est-ce qui vous vient à l'esprit en lisant ces mots ?
A voir également:
- At : script ne se lance pas
- Seti at home - Télécharger - Web & Internet
- World at arms - Télécharger - Rôle RPG
- This is the mail system at host ✓ - Forum Mail
- Disc at once - Forum Gravure
- Irql gt zero at system service - Forum Windows 10
5 réponses
Bonjour,
Après une petite recherche, il serait peut-être utile de vérifier si l'utilisateur est autorisé à l'utiliser.
extrait du man at :
Le superutilisateur peut toujours employer ces commandes. Pour les autres utilisateurs, les permissions sont déterminées par les fichiers /etc/at.allow et /etc/at.deny.
Si le fichier /etc/at.allow existe, seuls les utilisateurs dont les noms sont mentionnés dans ce fichier peuvent utiliser at.
Si /etc/at.allow n'existe pas, at vérifie si /etc/at.deny existe, et tous les utilisateurs non mentionnés dans ce fichier ont alors le droit d'invoquer at.
Si aucun de ces deux fichiers n'existe, seul le superutilisateur a le droit d'appeler at.
Un fichier /etc/at.deny vide signifie que tous les utilisateurs ont le droit d'appeler ces commandes ; c'est la configuration par défaut.
Si ce n'est pas ça, il faudra attendre la réponse de quelqu'un d'autre, j'y connais trop peu pour aller plus loin..
Après une petite recherche, il serait peut-être utile de vérifier si l'utilisateur est autorisé à l'utiliser.
extrait du man at :
Le superutilisateur peut toujours employer ces commandes. Pour les autres utilisateurs, les permissions sont déterminées par les fichiers /etc/at.allow et /etc/at.deny.
Si le fichier /etc/at.allow existe, seuls les utilisateurs dont les noms sont mentionnés dans ce fichier peuvent utiliser at.
Si /etc/at.allow n'existe pas, at vérifie si /etc/at.deny existe, et tous les utilisateurs non mentionnés dans ce fichier ont alors le droit d'invoquer at.
Si aucun de ces deux fichiers n'existe, seul le superutilisateur a le droit d'appeler at.
Un fichier /etc/at.deny vide signifie que tous les utilisateurs ont le droit d'appeler ces commandes ; c'est la configuration par défaut.
Si ce n'est pas ça, il faudra attendre la réponse de quelqu'un d'autre, j'y connais trop peu pour aller plus loin..
Salut et merci,
je n'avais pas pensé du tout à ça, voici donc le contenu du fichier at.deny (il n'y a pas de fichier at.allow)
c'est bizarre, je m'attendais à voir des noms d'utilisateurs... Aparemment il faudrait que je mette mon nom d'utilisateur dans un fichier at.allow ?
Voici d'autre part ce qui me gêne dans le déroulement de ce script.
Grossomodo, un premier script 1.sh de 72 lignes effectue une série de tests sur des fichiers, il crée ensuite un répertoire nommé mkdir ~/Chemin/0REP, puis passe à une boucle (while read line). Dans cette boucle il y a une condition qui si elle est satisfaite lance un deuxième script 2.sh. C'est dans ce script que at intervient et planifie une action "now + 20 minutes, qui va lancer W.sh comme dit plus haut, et indépendante du script initial 1.sh). Tant que les conditions sont satisfaites, la boucle se répète et autant de jobs peuvent être créés par At. Quand il n'y a plus les conditions, on sort de la boucle, et le répertoire ~/Chemin/0REP est supprimé.
Mais quand je regarde le output de At, le message d'erreur est le suivant :
sh: line 90: cd: Chemin/0REP: Aucun fichier ou dossier de ce type
Execution directory inaccessible
-> D'une part, aucun des scripts intervenant dans ce mécanisme ne dépasse les 72 lignes (c'est le plus gros, 1.sh)
-> d'autre part, le seul moment dans lequel il est question d'aller dans ce répertoire Chemin/0REP, c'est au début du script 1.sh, ce qui ne devrait plus rien avoir avec ce qu'est censé faire le script lancé par At.
On dirait qu'il revient au script 1.sh
Une idée ?
je n'avais pas pensé du tout à ça, voici donc le contenu du fichier at.deny (il n'y a pas de fichier at.allow)
/etc # cat at.deny alias backup bin daemon ftp games gnats guest irc lp mail man nobody operator proxy qmaild qmaill qmailp qmailq qmailr qmails sync sys www-data
c'est bizarre, je m'attendais à voir des noms d'utilisateurs... Aparemment il faudrait que je mette mon nom d'utilisateur dans un fichier at.allow ?
Voici d'autre part ce qui me gêne dans le déroulement de ce script.
Grossomodo, un premier script 1.sh de 72 lignes effectue une série de tests sur des fichiers, il crée ensuite un répertoire nommé mkdir ~/Chemin/0REP, puis passe à une boucle (while read line). Dans cette boucle il y a une condition qui si elle est satisfaite lance un deuxième script 2.sh. C'est dans ce script que at intervient et planifie une action "now + 20 minutes, qui va lancer W.sh comme dit plus haut, et indépendante du script initial 1.sh). Tant que les conditions sont satisfaites, la boucle se répète et autant de jobs peuvent être créés par At. Quand il n'y a plus les conditions, on sort de la boucle, et le répertoire ~/Chemin/0REP est supprimé.
Mais quand je regarde le output de At, le message d'erreur est le suivant :
sh: line 90: cd: Chemin/0REP: Aucun fichier ou dossier de ce type
Execution directory inaccessible
-> D'une part, aucun des scripts intervenant dans ce mécanisme ne dépasse les 72 lignes (c'est le plus gros, 1.sh)
-> d'autre part, le seul moment dans lequel il est question d'aller dans ce répertoire Chemin/0REP, c'est au début du script 1.sh, ce qui ne devrait plus rien avoir avec ce qu'est censé faire le script lancé par At.
On dirait qu'il revient au script 1.sh
Une idée ?
Bonjour,
Si j'en crois le man, oui, le nom d'utiisateur doit être ajouté.
sh: line 90: cd: Chemin/0REP: Aucun fichier ou dossier de ce type : il semble pourtant qu'il fasse appel à la commande cd. Le script 01 ne recommence-t'il pas au départ en sortant de script 02 ? Il faudrait suivre le déroulement pas à pas pour savoir pourquoi il tente d'accéder au répertoire après sa suppression.
Quant au numéro de ligne, on peut supposer que l'interpréteur considère l'ensemble des scripts comme un seul ensemble. A moins qu'il ne fasse en interne une "traduction" vers un langage de base (appel de fonction ou d'interruption en langage d'assemblage, par exemple).
Pour ça et le reste, je ne sais pas, il faudra l'aide de quelqu'un plus compétant que moi en programmation. Peut-être poster un topic spécifique aux scripts dans le forum programmation.
Si j'en crois le man, oui, le nom d'utiisateur doit être ajouté.
sh: line 90: cd: Chemin/0REP: Aucun fichier ou dossier de ce type : il semble pourtant qu'il fasse appel à la commande cd. Le script 01 ne recommence-t'il pas au départ en sortant de script 02 ? Il faudrait suivre le déroulement pas à pas pour savoir pourquoi il tente d'accéder au répertoire après sa suppression.
Quant au numéro de ligne, on peut supposer que l'interpréteur considère l'ensemble des scripts comme un seul ensemble. A moins qu'il ne fasse en interne une "traduction" vers un langage de base (appel de fonction ou d'interruption en langage d'assemblage, par exemple).
Pour ça et le reste, je ne sais pas, il faudra l'aide de quelqu'un plus compétant que moi en programmation. Peut-être poster un topic spécifique aux scripts dans le forum programmation.
Le script 01 ne recommence-t'il pas au départ en sortant de script 02
c'est la seule explication possible puisque l'entrée dans ce répertoire n'apparait que deux fois dans l'ensemble des scripts (uniquement dans 1.sh, au début de la boucle), mais absolument pas dans W.sh ni dans aucun autre script
Il y a des éléments un peu confidentiels dans ces scripts alors voici le shéma (j'ai épuré un peu) :
1.sh mkdir ~/Chemin/0REP if grep "http" 0rep.txt then ( while read line do ( NoPost=$(echo $line | grep -o '\-[0-9]*\/' | sed 's/\-//g;s/\///g') cd ~/Chemin/0REP wget -ct inf -O $NoPost.html "$line" sed -n '/^.*erfervierh"/,/^.*<\/td\>.*$/p' ~/Chemin/0REP/$NoPost.html | sed 's/ons'enfout/g' > $NoPost.txt if egrep -io "(blabla|blibli|bloublou)" $NoPost.txt then ( echo $line >> ~/Chemin/Journal.txt egrep -io "(blabla|blibli|bloublou)" $NoPost.txt >> ~/Chemin/Journal.txt mkdir ~/Chemin/Reponse/$NoPost mv ~/Chemin/0REP/$NoPost.* ~/Chemin/Reponse/$NoPost echo `md5sum ~/Chemin/Reponse/$NoPost/$NoPost.txt | cut -d" " -f1` > ~/Chemin/Reponse/$NoPost/md5.txt recode ISO-8859-1..UTF-8 ~/Chemin/Reponse/$NoPost/$NoPost.html echo $(grep -o -m1 "blabla" ~/Chemin/Reponse/$NoPost/$NoPost.html | sed 's/blibli//g') > ~/Chemin/Reponse/$NoPost/h.txt echo "$line" > ~/Chemin/Reponse/$NoPost/URL.txt echo $NoPost > ~/Chemin/Reponse/$NoPost/REP.txt cat ~/Chemin/Reponse/Job_Reponse.txt > ~/Chemin/Reponse/$NoPost/$NoPost.sh chmod +x ~/Chemin/Reponse/$NoPost/$NoPost.sh export NoPost export Message export line export ComptNoRep ~/Chemin/Reponse/$NoPost/$NoPost.sh export NoPost cd ~/Chemin ./BMH.sh ComptNoRep=$(( $ComptNoRep + 1 )) ) fi ) done < 0rep.txt ) else echo "blablabla" >> ~/Chemin/Journal.txt fi if [ -e ~/Chemin/0REP ] then rm -rf ~/Chemin/0REP fi
ensuite, voici donc NoPost.sh (au-dessus je disais que c'était 2.sh, c'est donc lui qui lance At
echo $line > ~/Chemin/Reponse/URL$ComptNoRep.txt echo $NoPost > ~/Chemin/Reponse/REP$ComptNoRep.txt at -f ~/Chemin/Reponse/Wget_URL.sh now + 20 minutes
et enfin, Wget_URL.sh
#!/bin/bash cd ~/Chemin/Reponse URL=$(cat ~/Chemin/Reponse/URL0.txt) REP=$(cat ~/Chemin/Reponse/REP0.txt) cd ~/Chemin/Reponse/$REP wget -ct inf $URL cd ~/Chemin/Reponse rm REP0.txt rm URL0.txt if [ -e REP*.txt ] then ( for i in REP*; do numberREP=$(grep -o ':digit:' <<<$i); mv ${i} ${i/$numberREP/$(($numberREP -1))}; done for i in URL*; do numberURL=$(grep -o ':digit:' <<<$i); mv ${i} ${i/$numberURL/$(($numberURL -1))}; done ) fi
c'est ce dernier qui n'est pas lancé par At et pour lequel on obtient l'erreur
sh: line 90: cd: Chemin/0REP: Aucun fichier ou dossier de ce type Execution directory inaccessible
On dirait donc qu'il revient ici dans 1.sh
while read line do ( NoPost=$(echo $line | grep -o '\-[0-9]*\/' | sed 's/\-//g;s/\///g') cd ~/Chemin/0REP
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question