Crontab
Bouba33
Messages postés
84
Statut
Membre
-
Bouba33 Messages postés 84 Statut Membre -
Bouba33 Messages postés 84 Statut Membre -
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
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
3 réponses
salut,
plein de
un script est normalement exécutable, il n'a pas besoin d'être appelé à l'aide d'un shell.
deux trois consultations sur la recherche
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(
plein de
sudodans un script, c'est pas "top"; écris-le avec
sudo, et exécute-le en l'appelant avec un seul
sudo.
un script est normalement exécutable, il n'a pas besoin d'être appelé à l'aide d'un shell.
deux trois consultations sur la recherche
crontab & screenindiquent d'utiliser les options
-det
-mde 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 avec
tail -f fichier.log, ou avec
less +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
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
Extrait du man :
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.
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.