télémaintenance sur ce process lancé au démarrage

Ici vous trouverez comment modifier les fichiers de configuration, mais aussi, pourquoi pas des applis comme apache, vsftp, samba et autres...

Modérateur : Francois

Fred26100
Messages : 3
Enregistré le : sam. 9 avr. 2016 18:39

télémaintenance sur ce process lancé au démarrage

Message par Fred26100 » sam. 9 avr. 2016 18:55

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

Avatar du membre
cbalo
Raspinaute
Messages : 132
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: télémaintenance sur ce process lancé au démarrage

Message par cbalo » sam. 24 août 2019 08:46

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.

destroyedlolo
Raspinaute
Messages : 1317
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

Message par destroyedlolo » sam. 24 août 2019 11:38

Salut,

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.
Un descriptif de ma domotique 100% fait maison.

Bud Spencer
Raspinaute
Messages : 644
Enregistré le : lun. 15 août 2016 21:38

Re: télémaintenance sur ce process lancé au démarrage

Message par Bud Spencer » dim. 25 août 2019 09:44

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 :lol: . 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).

Avatar du membre
cbalo
Raspinaute
Messages : 132
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: télémaintenance sur ce process lancé au démarrage

Message par cbalo » 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.
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Bud Spencer
Raspinaute
Messages : 644
Enregistré le : lun. 15 août 2016 21:38

Re: télémaintenance sur ce process lancé au démarrage

Message par Bud Spencer » mer. 28 août 2019 19:50

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 ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Avatar du membre
cbalo
Raspinaute
Messages : 132
Enregistré le : sam. 24 août 2019 06:05
Contact :

Re: télémaintenance sur ce process lancé au démarrage

Message par cbalo » mer. 28 août 2019 20:15

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
cbalo :lol: 2 Raspi3 dont 1 sous Retro Pie, l'autre pour Emby, 1 Raspi2 pour les Dev, 7 Raspi Zero

Artemus24
Raspinaute
Messages : 452
Enregistré le : ven. 15 sept. 2017 19:15

Re: télémaintenance sur ce process lancé au démarrage

Message par Artemus24 » sam. 31 août 2019 23:52

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 :

Code : Tout sélectionner

sudo python /home/pi/fichier.py
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 :

Code : Tout sélectionner

sudo python /home/pi/fichier.py > /home/pi/display.txt
@+
--> RPi0v1.3, RPi0W, Rpi3A+, Rpi3B+
--> Rpi0WH + Tuner TV HAT
--> RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
--> RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB

Bud Spencer
Raspinaute
Messages : 644
Enregistré le : lun. 15 août 2016 21:38

Re: télémaintenance sur ce process lancé au démarrage

Message par Bud Spencer » lun. 2 sept. 2019 20:48

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.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Artemus24
Raspinaute
Messages : 452
Enregistré le : ven. 15 sept. 2017 19:15

Re: télémaintenance sur ce process lancé au démarrage

Message par Artemus24 » lun. 2 sept. 2019 21:30

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 ?

@+
--> RPi0v1.3, RPi0W, Rpi3A+, Rpi3B+
--> Rpi0WH + Tuner TV HAT
--> RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
--> RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB

Répondre

Retourner vers « Les commandes Linux »