Crontab
Bouba33
Messages postés
76
Date d'inscription
Statut
Membre
Dernière intervention
-
Bouba33 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
Bouba33 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
j'utilise des pi (distri rasbian, enfin assez proche de debian) depuis un petit moment et il y a une chose que je n'arrive pas à faire dans crontab.
J'ai suivi quelques tutos pour mettre en place quelques scripts et ça fonctionne bien jusque-là.
Ce genre de script sont placés dans /root et ils sont là pour "automatiser" de petites lignes de commandes que je tapais régulièrement.
Ex dans le crontab :
* 6 * * 0 /root/maj.sh
et le maj.sh a cette tête :
#! /bin/sh
sudo apt-get update
sudo apt-get upgrade -y
sudo shutdown -r now
Voilà, en gros le genre de trucs qui fonctionnent nickel.
Mais il y en a un qui me résiste et je comprend pas pourquoi il veut pas se lancer.
J'ai installé un programme dans le /home/pi/ que je vais appeler toto.
J'ai créé un script dans le /home/pi qui permet de lancer toto avec des paramètres spéciaux (pour l'exemple scripttoto.sh)
Pour suivre l'évolution de toto, j'ai mis screen qui permet de récupérer la session
Donc quand je lance manuellement la commande :
screen -S youpi sudo sh -u pi /home/pi/scripttoto.sh
ben pas de soucis, le script se lance bien dans un screen que je peux récupérer dans n'importe quelle session.
Mais si je crée un script qui résume la commande ci-dessus et que je mette ce script dans crontab, ben ça ne se lance pas.
J'ai même ajouté quelques lignes à crontab :
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
Mais ça n'a rien fait.
J'avais pas précisé mais tout ça est dans le crontab "général". Je fais sudo crontab -e
J'ai essayé de mettre mon script récalcitrant dans un crontab utilisateur (pi en l'occurrence) mais rien de mieux.
Est-ce que quelqu'un aurait une piste pour que ça puisse fonctionner ?
Merci
--
Y'a écrit: appuyer sur une touche... Mais laquelle, y'en a plein!
j'utilise des pi (distri rasbian, enfin assez proche de debian) depuis un petit moment et il y a une chose que je n'arrive pas à faire dans crontab.
J'ai suivi quelques tutos pour mettre en place quelques scripts et ça fonctionne bien jusque-là.
Ce genre de script sont placés dans /root et ils sont là pour "automatiser" de petites lignes de commandes que je tapais régulièrement.
Ex dans le crontab :
* 6 * * 0 /root/maj.sh
et le maj.sh a cette tête :
#! /bin/sh
sudo apt-get update
sudo apt-get upgrade -y
sudo shutdown -r now
Voilà, en gros le genre de trucs qui fonctionnent nickel.
Mais il y en a un qui me résiste et je comprend pas pourquoi il veut pas se lancer.
J'ai installé un programme dans le /home/pi/ que je vais appeler toto.
J'ai créé un script dans le /home/pi qui permet de lancer toto avec des paramètres spéciaux (pour l'exemple scripttoto.sh)
Pour suivre l'évolution de toto, j'ai mis screen qui permet de récupérer la session
Donc quand je lance manuellement la commande :
screen -S youpi sudo sh -u pi /home/pi/scripttoto.sh
ben pas de soucis, le script se lance bien dans un screen que je peux récupérer dans n'importe quelle session.
Mais si je crée un script qui résume la commande ci-dessus et que je mette ce script dans crontab, ben ça ne se lance pas.
J'ai même ajouté quelques lignes à crontab :
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
Mais ça n'a rien fait.
J'avais pas précisé mais tout ça est dans le crontab "général". Je fais sudo crontab -e
J'ai essayé de mettre mon script récalcitrant dans un crontab utilisateur (pi en l'occurrence) mais rien de mieux.
Est-ce que quelqu'un aurait une piste pour que ça puisse fonctionner ?
Merci
--
Y'a écrit: appuyer sur une touche... Mais laquelle, y'en a plein!
3 réponses
-
salut,
plein desudo
dans un script, c'est pas "top"; écris-le avecsudo
, et exécute-le en l'appelant avec un seulsudo
.
un script est normalement exécutable, il n'a pas besoin d'être appelé à l'aide d'un shell.
deux trois consultations sur la recherchecrontab & screen
indiquent d'utiliser les options-d
et-m
de screen.
si ce n'est que pour suivre l'activité de ton script, tu ferais mieux d'envoyer une trace de ce dernier vers un fichier log(/chemin/nomDuScript 2>&1 >fichier.log
), que tu pourrras ensuite lire "en direct" soit avectail -f fichier.log
, ou avecless +F fichier.log
. -
Je n'ai pas réussi à lancer ce programme via crontab
Du coup, j'ai essayé différemment et ça fonctionne.
J'ai fait un script dans /etc/init.d et update-rc.d <service> default. Comme ça, il se lance au démarrage.
Et ça me suffit largement
Je laisse le post comme non résolu au cas où quelqu'un ait une idée
-
Salut,
Rajoute les options-d -m
à screen :screen -dmS youpi sudo sh -u pi /home/pi/scripttoto.sh
Extrait du man :-d -m Start screen in "detached" mode. This creates a new session but doesn't attach to it. This is useful for system startup scripts.
-
J'ai essayé mais ça ne veut pas.
Donc j'ai fait un service qui se lance au démarrage. Et si j'ai besoin, j'ai toujours mes 2 scripts qui permettent de lancer et arrêter le logiciel par ligne de commande (en utilisant le start ou stop du service).
Sinon, j'ai effectivement mis -dmS en option de screen et la commande que t'as écrite est exactement celle qui est dans le service. -
-
-