Problemas a la hora de crear un servicio del sistema con systemd[SOLUCIONADO]

Todo lo relacionado con los entornos de escritorio, todas las aplicaciones, tanto KDE, Gnome y otros. Si tenes un problema con un programa, muy probablemente este sea el foro indicado.
Responder
sylar
Archer
Archer
Mensajes: 58
Registrado: 10 Sep 2009, 18:29
Ubicación: Santiago de Cuba, Cuba
Contactar:

Problemas a la hora de crear un servicio del sistema con systemd[SOLUCIONADO]

Mensaje por sylar » 12 Nov 2015, 16:47

Saludos a todos(a), estoy actualmente tratando de montar una aplicación con la cual estoy trabajando como un proceso del sistema. Ya que quisiera que se ejecutara automáticamente en el inicio del sistema, pero sucede lo siguiente. NO LEVANTAA!!! y quisiera que me ayudaran a entender esto lo mejor posible.

Yo en debian la puse a correr automáticamente a nivel de runlevels y todo va de maravilla pero no se por qué en arch es tan complicado, por lo menos desde mi perspectiva lo veo un tanto complicado y es que systemd no lo entiendo mucho, pero en fin aqui todos estamos para aprender algo nuevo cada dia. A continuación les explico detalladamente lo que hice.

1- cree un archivo dcm4chee.service en esta ubicacion: /usr/lib/systemd/system/dcm4chee.service y contiene lo siguiente:
[Unit]
Description=Servidor dcm4chee

[Service]
ExecStart=/usr/bin/dcm4chee.sh start

[Install]
WantedBy=sysinit.target



No se si está bien pero si no le pongo el start al final cuando le hago un systemctl a la aplicacion me devuelve el siguiente mensaje:

[[email protected] ~]$ sudo systemctl status dcm4chee.service
dcm4chee.service - Servidor dcm4chee
Loaded: loaded (/usr/lib/systemd/system/dcm4chee.service; enabled)
Active: inactive (dead) since Thu 2015-11-12 09:35:49 CST; 3s ago
Process: 1259 ExecStart=/usr/bin/dcm4chee.sh (code=exited, status=0/SUCCESS)
Main PID: 1259 (code=exited, status=0/SUCCESS)

Nov 12 09:35:49 germany systemd[1]: Started Servidor dcm4chee.
Nov 12 09:35:49 germany dcm4chee.sh[1259]: JBOSS_CMD_START = cd /home/destroyer/Workspace/dcm4chee-2.17.1-psql/bin; /home/destroyer/Workspace/dcm4chee-2.17.1-p...-c default
Nov 12 09:35:49 germany dcm4chee.sh[1259]: usage: /usr/bin/dcm4chee.sh (start|stop|restart|help)
Hint: Some lines were ellipsized, use -l to show in full.


2 - Luego de esto realice lo siguiente:
sudo ln -s /usr/lib/systemd/system/dcm4chee.service /etc/systemd/system/getty.target.wants/

3 - Luego ejecuté el comando systemctl enable dcm4chee.service
Y reinicié el sistema operativo. Pero cuando reinicio el sistema en el inicio me muestra este mensaje:
[ 4.317872] systemd [1] : job dcm4chee.service/start deleted to break ordering

Y no se que sucede.

Sin mas
Espero su pronta ayuda
Última edición por sylar el 13 Nov 2015, 14:45, editado 1 vez en total.
Esto es lo mejor que suena ahora
Arch la maravilla natural

Avatar de Usuario
cuentos
Equipo Hispano
Equipo Hispano
Mensajes: 544
Registrado: 25 Mar 2012, 03:24
Contactar:

Re: Problemas a la hora de crear un servicio del sistema con systemd

Mensaje por cuentos » 12 Nov 2015, 17:46

Bueno en lo que vi en la wiki y el man de systemd.service
Prueba modificando:

Código: Seleccionar todo

[Service]
Type=forking 
ExecStart=/usr/bin/dcm4chee.sh

La wiki: https://wiki.archlinux.org/index.php/Sy ... s_unidades
Type=forking: systemd considera que el servicio debe ser iniciado antes que el proceso se rompa y el antecesor se haya terminado. Para los demonios clásicos use este tipo a menos que sepa que no es necesario, ya que la mayoría de los demonios usan doble bifurcación para indicar que están listos. Debe especificar también PIDFile= para que systemd puede realizar un seguimiento del proceso principal.
https://wiki.archlinux.org/index.php/Sy ... s_unidades

el man de systemd
Example 4. Traditional forking services

Many traditional daemons/services background (i.e. fork, daemonize) themselves when starting. Set Type=forking in the service's unit file to support this
mode of operation. systemd will consider the service to be in the process of initialization while the original program is still running. Once it exits
successfully and at least a process remains (and RemainAfterExit=no), the service is considered started.

Often a traditional daemon only consists of one process. Therefore, if only one process is left after the original process terminates, systemd will consider
that process the main process of the service. In that case, the $MAINPID variable will be available in ExecReload=, ExecStop=, etc.

In case more than one process remains, systemd will be unable to determine the main process, so it will not assume there is one. In that case, $MAINPID will
not expand to anything. However, if the process decides to write a traditional PID file, systemd will be able to read the main PID from there. Please set
PIDFile= accordingly. Note that the daemon should write that file before finishing with its initialization, otherwise systemd might try to read the file
before it exists.

The following example shows a simple daemon that forks and just starts one process in the background:

[Unit]
Description=Some simple daemon

[Service]
Type=forking
ExecStart=/usr/sbin/my-simple-daemon -d

[Install]
WantedBy=multi-user.target

Please see systemd.kill(5) for details on how you can influence the way systemd terminates the service.
twitter @mcuentos

sylar
Archer
Archer
Mensajes: 58
Registrado: 10 Sep 2009, 18:29
Ubicación: Santiago de Cuba, Cuba
Contactar:

Re: Problemas a la hora de crear un servicio del sistema con systemd

Mensaje por sylar » 13 Nov 2015, 14:32

Gracias... lo modifiqué y ya me carga lo que en el type lo puse en oneshot.
Lo que me sucedía era que lo habia puesto multi-user.target, en default.target y cuando reiniciaba no sabia cual iniciar y ahi mismo lo mataba pero una vez definido bien el demonio todo me inició perfectamente asi que lo puedo marcar como solucionado...aunque no se como jeje!! gracias
Esto es lo mejor que suena ahora
Arch la maravilla natural

Responder