Um aplicativo de um fornecedor foi instalado com um usuário não raiz. Isso é suportado pelo fornecedor e tudo é bom. Portanto, o usuário não-root possui todos os executáveis e arquivos do aplicativo instalado. Um dos requisitos de software é definir uma variável de ambiente em qualquer perfil de usuário que usará o produto. Na instalação não-raiz, apenas o usuário que o instalou estará usando-o, portanto, tenho o seguinte definido no .bash_profile
:
export CFROOT=/usr/opt/tibco/mft/ps
e depois eu tenho
export PATH=$CFROOT:$PATH
e tudo está bem. O usuário pode estar logado e iniciar o daemon e a vida é boa. O usuário também pode efetuar logout e o deamon continuará a ser executado.
Eu quero que este produto seja iniciado na inicialização para eliminar a necessidade de fazer login como usuário e iniciá-lo.
Eu criei um arquivo mftps.service
no diretório /usr/lib/systemd/system
.
O arquivo de serviço contém as seguintes configurações:
[Unit]
Description=MFT Platform Server Service
After=network.target
[Service]
Type=simple
User=tibcomft
EnvironmentFile=/etc/sysconfig/mftps
ExecStart=/usr/opt/tibco/mft/ps/cfstart
ExecStop=/usr/opt/tibco/mft/ps/cfstop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Nota: Antes de adicionar o EnvironmentFile
, recebia constantemente um erro que CFROOT
não estava definido. Ao pesquisar essa configuração, encontrei informações sobre isso e adicionei o arquivo /etc/sysconfig/mftps
. Neste arquivo sysconfig eu tenho o seguinte:
CFROOT=/usr/opt/tibco/mft/ps
export CFROOT
Nota: As configurações acima são a única maneira de fazer com que o arquivo sysconfig funcione. Se eu tiver algo com o "$", por exemplo, export PATH=$CFROOT:$PATH
o systemctl start
falha.
Então, o que está acontecendo agora quando eu executo systemctl start mftps.service
e exibo o status Eu vejo isto:
[root@centos72sys jbarker]# systemctl status mftps.service
● mftps.service - MFT Platform Server Service
Loaded: loaded (/usr/lib/systemd/system/mftps.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Jan 13 13:12:11 centos72sys systemd[1]: Started MFT Platform Server Service.
Jan 13 13:12:11 centos72sys systemd[1]: Starting MFT Platform Server Service...
Jan 13 13:12:11 centos72sys cfstart[4237]: MFT Platform Server Responder will be started from /usr/opt/tibco/mft/ps
Jan 13 13:12:12 centos72sys cfstart[4237]: Failed To Start CyberResp process. Read /usr/opt/tibco/mft/ps/FailureReason.txt
[root@centos72sys jbarker]#
Quando vejo o FailureReason.txt
, declara o seguinte:
cfsend not found in PATH
O executável cfsend
está no caminho definido em $CFROOT
, mas nada é iniciado quando um usuário executa o comando cfstart
, portanto, não sei por que ele está emitindo esse erro.