#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..
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