Page 1 sur 5
télémaintenance sur ce process lancé au démarrage
Posté : sam. 9 avr. 2016 18:55
par Fred26100
Bonjour à tous,
Tout d'abord Je ne suis pas un pro de bash / unix et merci pour votre aide. Voilà mon problème:
Je voudrais lancer un progrramme Python au démarrage du Pi. Pour cela j'ajoute dans crontab une ligne du style :
@reboot python /home/pi/monprogramme.py
Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche (avec Putty en SSH) et intéragir avec lui au clavier.
Quelqu'un connait-il les commandes à taper pour y parvenir. En gros faire une sorte de télémaintenance sur ce process.
Je ne suis pas en environnement graphique, que de pur TTY.
J'ai vu que "ps -ef" me permet afficher le PID de mon programme, mais après ? car Google n'est plus mon ami à ce stade
Merci pour vos réponses
Re: télémaintenance sur ce process lancé au démarrage
Posté : sam. 24 août 2019 08:46
par cbalo
Bonjour.
Je ne sais pas exactement ce que fait ton programme , deux cas possibles :
- soit c'est un "one shot" genre, il se lance au démarrage, fait son job et s'arrête dès qu'il a fini
- soit tu veux qu'il tourne éternellement (comme un service) auquel cas, il ne faut pas utiliser la crontab pour ça
Dans les 2 cas, comme il tourne en tâche de fond, tu ne pourras pas intéragir avec mais il y a des moyens pour savoir ce qu'il fait (ou a fait)
Il suffit pour cela que tu modifies ton script python pour qu'il écrive ce que tu dois savoir dans un fichier de log.
Ou encore : plus simple :
Si c'est ton programme oneshot
il suffit qu'il interagisse avec la console (tu fais des print ?) : pas besoin de modifier le programme, et tu rediriges la sortie vers un fichier de log dans ta ligne de la crontab
Ex :
@reboot python /home/pi/monprogramme.py > /home/pi/monlog.txt 2>&1
Qu'est-ce que ça fait ?
1) ça redirige la sortie (signe >) vers le fichier /home/pi/monlog.txt
2) ça ne redirige pas que ce qu'affiche ton programme mais aussi toute erreur système que ton programme générerait 2>&1
Si c'est un service que tu fais, tu dois :
1) le retirer de ta contrab
2) utiliser systemctl pour enregistrer le service
3) pour savoir ce qu'il "aurait afficher à l'écran" , utiliser soit systemctl status nomdetonservice, soit journalctl -u nomdetonservice
Tu peux aussi faire en sorte que ton script python écrive dans un fichier de log si tu préfères.
Re: télémaintenance sur ce process lancé au démarrage
Posté : sam. 24 août 2019 11:38
par destroyedlolo
Salut,
Regarde du coté de la commande screen qui permet de conserver une console d'une connexion a l'autre.
A+
Re: télémaintenance sur ce process lancé au démarrage
Posté : dim. 25 août 2019 09:44
par Bud Spencer
cbalo a écrit : ↑sam. 24 août 2019 08:46
Dans les 2 cas, comme il tourne en tâche de fond, tu ne pourras pas intéragir avec ...
Mais si, je fais ça tous les jours

. Il existe une multitude de façons d’interagir avec un processus qui tourne en tache de fond ou un service. La plus élégante et la bonne pratique est de rediriger les entrées et sorties sur une liaison ipc (socket, named pipe …). La première instance du programme (le service ou programme en background) se comporte en tant que serveur et chaque nouvelle instance lancée en console devient cliente. Bon c’est clair que python n’est pas le plus pratique pour faire ce genre de chose et ça dépasse un peu le niveau débutant, mais ça se fait.
Re: télémaintenance sur ce process lancé au démarrage
Posté : mer. 28 août 2019 00:14
par cbalo
Oui, ça se fait, si ton programme est un service.
Mais là, tu partais juste d'un job qui se lance au boot sans préciser.
Re: télémaintenance sur ce process lancé au démarrage
Posté : mer. 28 août 2019 19:50
par Bud Spencer
cbalo a écrit : ↑mer. 28 août 2019 00:14
Oui, ça se fait, si ton programme est un service.
Mais là, tu partais juste d'un job qui se lance au boot sans préciser.
Service, job, programme … ne jouons pas avec les mots. Si c’est lancé en background au boot, ce n’est pas rattaché à une console, donc le seul moyens propre d’interagir avec (c’est bien précisé dans la demande) c’est d’utiliser une méthode ipc, tout le reste, c’est du blabla et du bricolage

Re: télémaintenance sur ce process lancé au démarrage
Posté : mer. 28 août 2019 20:15
par cbalo
Je ne joue pas sur les mots si ces mots existent ils ont une raison simple.
Programme sequentiel et service ne fonctionne pas du tout de la même manière.
En informatique, si on ne précise pas de quoi on parle, tu te retrouves avec une pomme au lieu d'un Arbre.
Ca me rappelle une collègue qui m'a dit un jour "Où sont mes tabulations ??" J'ai répondu, "sur ton clavier !"
et Elle : "mais non regardes mon écran"
je regarde l'écran, elle a ouvert son explorateur de fichier.
Et là je me rappelle un livre sur les débuts de l'informatique (sur la fameuse tabulatrice d'IBM qui a réalisé le 1er recensement de population informatisé dans les années 1930)
Je lui dis : "tu cherches des fichiers ??"
Et elle "Ben oui, mes tabulations !!"
Et moi : Mais..... une tabulation c'est ça (en ajoutant le geste d'une pression sur la touche TAB)
Et elle : Oh ne joue pas sur les mots, Fichiers, Tabulations, c'est la même chose !!
Cet exemple est le plus extravagants mais j'en ai mille autre bien plus récents
Re: télémaintenance sur ce process lancé au démarrage
Posté : sam. 31 août 2019 23:52
par Artemus24
Salut à tous.
cbalo a écrit :soit tu veux qu'il tourne éternellement (comme un service) auquel cas, il ne faut pas utiliser la crontab pour ça
Je ne vois pas pourquoi il ne faut pas utiliser la crontab.
Si vous avez besoin de déclencher un traitement à heure fixe, ou périodiquement, c'est la crontab dont vous avez besoin.
Un service, c'est pour un traitement qui "tourne éternellement" comme vous dites.
Ce sont des déclarations un peu plus lourde à faire, que dans le cas de la crontab, et le besoin est différent.
cbalo a écrit :Dans les 2 cas, comme il tourne en tâche de fond
Ce ne sont pas des tâches de fond car un service est indépendant d'une session ouverte, tout comme une application lancée par la crontab.
Une tâche de fond est une application qui est lancée dans une session ouverte en utilisant le caractère & à la fin de la commande.
Fred26100 a écrit :Je voudrais lancer un programme Python au démarrage du Pi.
Il n'est pas nécessaire de passer par la crontab pour réaliser cela.
Pour lancer un programme au démarrage de la raspberry, j'utilise le fichier "/etc/rc.local".
Et j'insère ceci dedans :
Fred26100 a écrit :Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche
Donc vous utiliser les commandes "print" en python.
Pour ce faire, vous devez redirigez le flux sortant de votre programme vers un fichier qui va stocker vos messages.
Vous devez faire :
@+
Re: télémaintenance sur ce process lancé au démarrage
Posté : lun. 2 sept. 2019 20:48
par Bud Spencer
Artemus24 a écrit : ↑sam. 31 août 2019 23:52
Un service, c'est pour un traitement qui "tourne éternellement" comme vous dites.
Non, pas nécessairement. Un services peut démarrer pour exécuter des taches bien définies et s’arrêter une fois le boulot fait. Il y a aussi des services qui interagissent entre eux, à savoir qu’ils peuvent démarrer d’autres services et meme etre arrêté par un service qu’ils ont eux meme démarré. Il y a aussi des services qui sont exclusivement en démarrage manuel et qui attendent une commande (d’un utilisateur autorisé ou d’un programme ouvert sous session) pour démarrer.
Artemus24 a écrit : ↑sam. 31 août 2019 23:52
Fred26100 a écrit :Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche
Donc vous utiliser les commandes "print" en python.
Pour ce faire, vous devez redirigez le flux sortant de votre programme vers un fichier qui va stocker vos messages.
Meme remarque que j’ai fait plus haut. Il ne faut pas confondre ‘logger un processus’ et ‘Interagir avec un processus’. Rediriger simplement les sorties vers un fichier permet tout au plus de savoir
ce qu’a fait le programme, mais
pas ce qu’il fait et encore moins de lui passer des commandes.
La demande semble pourtant bien explicite :
Fred21600 a écrit :pour des raison de maintenance je voudrais voir ce qu'il affiche (avec Putty en SSH) et intéragir avec lui au clavier.
Re: télémaintenance sur ce process lancé au démarrage
Posté : lun. 2 sept. 2019 21:30
par Artemus24
Salut Bud Spencer.
Fred26100 a bien spécifié au début de son premier message :
Fred26100 a écrit :Tout d'abord Je ne suis pas un pro de bash / unix
Et si sa demande concerne d'interagir au clavier, je ne vois que la création d'un service.
Or il me semble que cela sort de son domaine de compétence.
Bud Spencer a écrit :Il ne faut pas confondre ‘logger un processus’ et ‘Interagir avec un processus’.
J'ai du mal à te suivre. Peux-tu détailler un peu plus le fond de ta pensée, svp ?
@+