systemctl .service não está funcionando como esperado

1

Estou trabalhando com os arquivos de serviço no Centos 7 e estou criando um para o xymon. O problema que estou enfrentando é que eu estou tentando configurar iniciar, parar e reiniciar. Eu fui tão longe quanto usar um arquivo de serviço existente como modelo, mas não importa qual opção eu escolha, a opção "stop" é usada sem falhas.

# more xymon.service
[Unit]
Description=Xymon Monitor Service
After=network.target
[Service]
Type=simple
#User=xymon
ExecStart=/home/xymon/startup/xymon-init.d start
ExecReload=/home/xymon/startup/xymon-init.d restart
ExecStop=/home/xymon/startup/xymon-init.d stop
[Install]
WantedBy=multi-user.target

Eu tentei simples, bifurcada e algumas outras variantes sem sucesso. Eu coloquei um script fictício em que imprimia o primeiro parâmetro e sempre paro no arquivo de log. Eu fiz outros tipos de arquivos de serviço sem problema no passado, mas esta é a minha primeira incursão neste systemctl. Qualquer ajuda seria apreciada.

    
por John Langbein 25.05.2016 / 00:23

2 respostas

0

Normalmente o systemd pode converter scripts init.d em serviços sem que você tenha que gerar um arquivo de unidade .service - se os scripts estiverem no diretório init.d, são executáveis e podem ser analisados com sucesso pelo systemd, então (sem a. arquivo de serviço) executando o status do systemctl xymon deve apenas funcionar. Isso, obviamente, nem sempre é o caso. O único serviço que tenho na minha máquina centos 7 é a estação de trabalho VMWare - nesse caso, ela simplesmente funciona sem um arquivo de serviço.

Aqui está o arquivo de serviço recomendado para iniciar o xymon usando o systemd e nenhum script init.d. Você provavelmente terá que movê-los para fora da área init.d assim que estiver funcionando (e definitivamente antes de reiniciar). Presumivelmente eles não estão trabalhando em seu estado atual, mas eles ainda poderiam estar fazendo o suficiente para interferir.

Existem rpms (e srpms) disponíveis para o el7 neste site: link Eles são, aparentemente, versões beta, mas contêm a configuração systemd, que não está nos downloads oficiais da fonte.

# xymonlaunch.service
# systemd file for Fedora 18 and up, or RHEL 7 and up

[Unit]
Description=Xymon systems and network monitor
Documentation=man:xymon(7) man:xymonlaunch(8) man:xymon(1)
After=network.target

[Install]
# Compatibility with "xymon" and "xymon-client"
Alias=xymon.service
Alias=xymon-client.service
WantedBy=multi-user.target


[Service]
EnvironmentFile=/etc/sysconfig/xymonlaunch
User=xymon
# We wrap in xymoncmd to eliminate the need for the bulk of the old init script
ExecStart=/usr/bin/xymoncmd /usr/sbin/xymonlaunch --no-daemon $XYMONLAUNCHOPTS
Type=simple

# Kill xymonlaunch, but don't send kills to the underlying procs, since they
# might be doing important things (like writing checkpoints and flushing caches)
KillMode=process
# SendSIGHUP=yes
SendSIGKILL=no
    
por 25.05.2016 / 04:41
1

NOTA - A resposta dos Argonauts funcionou com alguns mods. Aqui está a versão de trabalho no meu ambiente com base em uma instalação padrão:

# xymonlaunch.service
# systemd file for Fedora 18 and up, or RHEL 7 and up

[Unit]
Description=Xymon systems and network monitor
Documentation=man:xymon(7) man:xymonlaunch(8) man:xymon(1)
After=network.target

[Install]
# Compatibility with "xymon" and "xymon-client"
Alias=xymon.service
Alias=xymon-client.service
WantedBy=multi-user.target


[Service]
#EnvironmentFile=/etc/sysconfig/xymonlaunch
User=xymon
# We wrap in xymoncmd to eliminate the need for the bulk of the old init script
ExecStart=/home/xymon/server/bin/xymoncmd /home/xymon/server/bin/xymonlaunch --no-daemon $XYMONLAUNCHOPTS
Type=simple

# Kill xymonlaunch, but don't send kills to the underlying procs, since they
# might be doing important things (like writing checkpoints and flushing caches)
KillMode=process
# SendSIGHUP=yes
SendSIGKILL=no
    
por 25.05.2016 / 16:16