télémaintenance sur ce process lancé au démarrage
Modérateur : Francois
télémaintenance sur ce process lancé au démarrage
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
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
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.
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.
-
- Raspinaute
- Messages : 1603
- Enregistré le : dim. 10 mai 2015 18:44
- Localisation : Dans la campagne à côté d'Annecy
- Contact :
Re: télémaintenance sur ce process lancé au démarrage
Salut,
Regarde du coté de la commande screen qui permet de conserver une console d'une connexion a l'autre.
A+
Regarde du coté de la commande screen qui permet de conserver une console d'une connexion a l'autre.
A+
- BananaPI : Gentoo, disque SATA de 2 To
- Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
- Multimedia par DNLA
- Et pleins d'idées ... et bien sûr, pas assez de temps.
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: télémaintenance sur ce process lancé au démarrage
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.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: télémaintenance sur ce process lancé au démarrage
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.
Mais là, tu partais juste d'un job qui se lance au boot sans préciser.
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: télémaintenance sur ce process lancé au démarrage
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
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: télémaintenance sur ce process lancé au démarrage
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
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
Salut à tous.
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.
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.
Pour lancer un programme au démarrage de la raspberry, j'utilise le fichier "/etc/rc.local".
Et j'insère ceci dedans :
Pour ce faire, vous devez redirigez le flux sortant de votre programme vers un fichier qui va stocker vos messages.
Vous devez faire :
@+
Je ne vois pas pourquoi il ne faut pas utiliser la crontab.cbalo a écrit :soit tu veux qu'il tourne éternellement (comme un service) auquel cas, il ne faut pas utiliser la crontab pour ça
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.
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.cbalo a écrit :Dans les 2 cas, comme il tourne en tâche de fond
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.
Il n'est pas nécessaire de passer par la crontab pour réaliser cela.Fred26100 a écrit :Je voudrais lancer un programme Python au démarrage du Pi.
Pour lancer un programme au démarrage de la raspberry, j'utilise le fichier "/etc/rc.local".
Et j'insère ceci dedans :
Code : Tout sélectionner
sudo python /home/pi/fichier.py
Donc vous utiliser les commandes "print" en python.Fred26100 a écrit :Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche
Pour ce faire, vous devez redirigez le flux sortant de votre programme vers un fichier qui va stocker vos messages.
Vous devez faire :
Code : Tout sélectionner
sudo python /home/pi/fichier.py > /home/pi/display.txt
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: télémaintenance sur ce process lancé au démarrage
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.
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.Artemus24 a écrit : ↑sam. 31 août 2019 23:52Donc vous utiliser les commandes "print" en python.Fred26100 a écrit :Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche
Pour ce faire, vous devez redirigez le flux sortant de votre programme vers un fichier qui va stocker vos messages.
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.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: télémaintenance sur ce process lancé au démarrage
Salut Bud Spencer.
Fred26100 a bien spécifié au début de son premier message :
Or il me semble que cela sort de son domaine de compétence.
@+
Fred26100 a bien spécifié au début de son premier message :
Et si sa demande concerne d'interagir au clavier, je ne vois que la création d'un service.Fred26100 a écrit :Tout d'abord Je ne suis pas un pro de bash / unix
Or il me semble que cela sort de son domaine de compétence.
J'ai du mal à te suivre. Peux-tu détailler un peu plus le fond de ta pensée, svp ?Bud Spencer a écrit :Il ne faut pas confondre ‘logger un processus’ et ‘Interagir avec un processus’.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32