Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/12/2015, à 15:56

zodd

problème lancement de daemon et systemctl

Salut,

J'ai développé sous 14.04 un logiciel qui exploite la sortie "output" d'un démon (snmptrapd). En 14.04 tout fonctionne très bien, mon process intercepte l'output du démon.

j'ai tenté d'installer mon logiciel sur un Ubuntu 15.10. Et là j'ai un message qui montre que mon démon fait un start "via systemctl"  .. et mon logiciel n'intercepte plus l'output de celui-ci..

Voilà les résultats de ps aux | grep snmp  dans les deux versions de Ubuntu:

sur 15.10:

ps aux | grep snmp
toto      1848  0.0  0.0   4476   844 ?        S    14:54   0:00 sh -c sudo /etc/init.d/snmptrapd start
root      1849  0.0  0.2  58952  4040 ?        S    14:54   0:00 sudo /etc/init.d/snmptrapd start
root      1850  0.0  0.0   4476  1804 ?        S    14:54   0:00 /bin/sh /etc/init.d/snmptrapd start
root      1856  0.0  0.1  30300  2924 ?        S    14:54   0:00 /bin/systemctl start snmptrapd.service
root      1857  0.0  0.0   4476  1624 ?        Ss   14:54   0:00 /bin/sh /etc/init.d/snmptrapd start
root      1859  0.0  0.2  34792  5080 ?        S    14:54   0:00 /usr/local/sbin/snmptrapd -A -Lsd -u root -g root -c /usr/local/share/snmp/snmptrapd.conf -Lf /var/log/snmp/snmptrapd.log -p /var/run/snmptrapd.pid -f -Lo -Le -n
toto      1901  0.0  0.1  13732  2208 pts/17   S+   14:57   0:00 grep --color=auto snmp

alors que sur 14.04, j'avais ceci:

ps aux | grep snmp
toto      2131  0.0  0.0   4440   652 ?        S    15:02   0:00 sh -c sudo /etc/init.d/snmptrapd start
root      2132  0.0  0.1  71260  2136 ?        S    15:02   0:00 sudo /etc/init.d/snmptrapd start
root      2133  0.0  0.0   4440   656 ?        S    15:02   0:00 /bin/sh /etc/init.d/snmptrapd start
root      2135  0.0  0.1  34744  3128 ?        S    15:02   0:00 /usr/local/sbin/snmptrapd -A -Lsd -u root -g root -c /usr/local/share/snmp/snmptrapd.conf -Lf /var/log/snmp/snmptrapd.log -p /var/run/snmptrapd.pid -f -Lo -Le -n
toto  2341  0.0  0.0  15976   936 pts/13   S+   15:03   0:00 grep --color=auto snmp

Est ce que quelqu'un peut m’expliquer ce qui a changé?

A quoi correspond la ligne /bin/systemctl start snmptrapd.service   et pourquoi du coup j'ai deux fois  /bin/sh /etc/init.d/snmptrapd start sous le 15.10 ?

(j'en déduis/suppose, que mon logiciel attend les infos à la sortie du premier "shell" et que le démon en fait les renvoie dans le deuxième créé par systemctl...?)

Dernière modification par zodd (Le 07/12/2015, à 16:11)

Hors ligne

#2 Le 09/12/2015, à 16:00

zodd

Re : problème lancement de daemon et systemctl

Je remonte le message.

Personne n'a une idée sur comment lancer un daemon sur 15.10 de la même façon que sur 14.04 ?

j'essaie de préciser, comme vous pouvez le voir, mon démon est lancé avec les options -Lo -Le, ce qui veut dire qu'il "log" dans la sortie standard et celle d'erreur. du coup je crée un process qui intercepte la sortie associée au shell qui me sert à lancer le daemon. Le problème de systemd, c'est que visiblement il passe mon démon par systemctl et la sortie est donc associée à un autre Shell auquel je n'ai donc pas accès.

Dernière modification par zodd (Le 09/12/2015, à 16:03)

Hors ligne

#3 Le 05/01/2016, à 15:55

zodd

Re : problème lancement de daemon et systemctl

Personne n'a la moindre piste? mon problème reste entier.. sad

Hors ligne

#4 Le 13/01/2016, à 11:55

zodd

Re : problème lancement de daemon et systemctl

Salut,

Je suis tombé sur cet article qui m'a un peu éclairé mais sans me permettre de trouver une solution pour autant:
http://www.framboise314.fr/systemd-tout … au-ou-pas/

J'utilise Qt et je lance mon démon dans mon programme de cette façon:

    QString program = "sh";
    QStringList arguments;
    arguments << "-c" << "sudo /etc/init.d/snmptrapd start";
    myDaemon->start(program, arguments);

et je lis sa sortie dans un signal:

   connect(myDaemon, SIGNAL(readyRead()), this, SLOT(readDaemonOutput()));

....

void MainWindow::readDaemonOutput()
{

    myDaemon->waitForBytesWritten(100);
    QByteArray output = myDaemon->readAll();
.....
}

Le problème c'est que désormais la sortie du démon n'est plus accessible.. Une idée pour la rendre de nouveau accessible avec l'utilisation de systemd ?

Merci d'avance

Hors ligne