Estou tentando executar o supervisor do systemd e estou seguindo este tutorial aqui .
Ao criar este arquivo /etc/systemd/system/supervisord.service
com o seguinte conteúdo:
[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target
[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
Alias=supervisord.service
Quando executo, recebo o seguinte erro:
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Started Supervisor daemon.
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[8772]: supervisord.service: Failed to execute command: No such file or directory
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[8772]: supervisord.service: Failed at step EXEC spawning /usr/local/bin/supervisord: No such file or directory
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Main process exited, code=exited, status=203/EXEC
Mar 17 01:18:22 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Failed with result 'exit-code'.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Service hold-off time over, scheduling restart.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: supervisord.service: Scheduled restart job, restart counter is at 1.
Mar 17 01:19:04 ubuntu-s-1vcpu-1gb-nyc3-01 systemd[1]: Stopped Supervisor daemon.
Claramente diz que não existe tal diretório, mas criar um é realmente a maneira correta de resolver o problema?
A razão pela qual não tenho certeza é porque, ao analisar outros (eu acho) problemas semelhantes (exemplo: aqui ), eles parecem corrigi-lo de maneira diferente. Também no tutorial, ele não menciona esse caminho (aquele que não existe) em nenhum outro lugar além do conteúdo do supervisord.service
, então estou bastante confuso com o que está acontecendo aqui.
Alguém pode me explicar ou me indicar algo específico para ler a fim de resolver meu problema da maneira correta?
Obrigado!
ATUALIZAR
locate supervisord
rendimentos:
/etc/supervisor/supervisord.conf
/etc/systemd/system/supervisord.service
/usr/bin/echo_supervisord_conf
/usr/bin/supervisord
/usr/lib/python2.7/dist-packages/supervisor/supervisord.py
/usr/lib/python2.7/dist-packages/supervisor/supervisord.pyc
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisord.py
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisord.pyc
/usr/share/man/man1/echo_supervisord_conf.1.gz
/usr/share/man/man1/supervisord.1.gz
/var/log/supervisor/supervisord.log
locate supervisorctl
rendimentos:
/usr/bin/supervisorctl
/usr/lib/python2.7/dist-packages/supervisor/supervisorctl.py
/usr/lib/python2.7/dist-packages/supervisor/supervisorctl.pyc
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisorctl.py
/usr/lib/python2.7/dist-packages/supervisor/tests/test_supervisorctl.pyc
/usr/share/man/man1/supervisorctl.1.gz
Seu arquivo de serviço está especificando os locais errados para os binários.
No arquivo, altere
Para
E
Para
Em seguida, execute o comando
systemctl daemon-reload
e, em seguida,systemctl start supervisord
.Na verdade, você não seguiu esse tutorial e instalou o pacote supervisor via easy_install; é instalado a partir de pacotes do Ubuntu. O pacote já contém uma unidade systemd
supervisor.service
que você pode simplesmente iniciar. Você não precisa criar sua própria unidade.Esse tutorial também é muito ruim por não explicar por que eles tomaram as decisões estranhas que tomaram. Eu simplesmente jogaria fora esse tutorial e usaria a unidade supervisora existente que você já possui.
Claro, eu também jogaria fora o supervisord porque é redundante; praticamente tudo o que faz é coberto (e melhor) pelo systemd. Eu também jogaria fora qualquer tutorial que o levasse a tentar instalar o supervisord.