Estou com o CentOS 7 e quero iniciar o produtor autônomo Kafka (File Connector) como um serviço. O comando é:
/opt/kafka/bin/connect-standalone.sh /opt/kafka/config/connect-standalone.properties /opt/kafka/config/connect-file-source.properties
E, obviamente, não tem comando de parada. Normalmente, eu apenas Ctrl+Cparo como um processo de primeiro plano.
Mas quando eu testei, achei muito tedioso abrir várias sessões de console de terminal para executar vários processos (Zookeeper, servidor Kafka, produtor Kafka, Storm jar, etc.) então troquei o Zookeeper e o servidor Kafka como serviço, que têm seu stop
script. Mas neste caso, não.
Já tentei systemctl start kafka-producer
e systemctl stop kafka-producer
, mas o serviço entrou em failed
status, e não está parado. Tive que excluir o serviço, recarregar o daemon e mudar para manual novamente.
kafka-producer.service
:
[Unit]
Description=Kafka Producer
After=network.target
[Service]
Type=simple
ExecStart=/opt/kafka/bin/connect-standalone.sh /opt/kafka/config/connect-standalone.properties /opt/kafka/config/connect-file-source.properties
Restart=on-abort
[Install]
WantedBy=default.target
Enfim para manipular um serviço sem ExecStop
comando?
Se você normalmente para o processo com CTRL+C de seu shell, um
SIGINT
(sinal de interrupção) é enviado ao processo. (verman signal
)Quando o systemd tenta parar um processo sem
ExecStop=
ele envia umKillSignal=
cujo padrão éSIGTERM
(sinal de encerramento), aguarda uma resposta do processo e, se não parar dentro de um prazo, o systemd envia umSIGKILL
que simplesmente encerra o processo à força. o comportamento do systemd pode ser modificado comKillSignal=
(consulte Recursosman systemd.kill
).No seu caso, eu tentaria adicionar
KillSignal=SIGINT
para emular o CTRL+C que você costuma usar no shell. Você sabe que seu processo captura e responde a esse sinal, mas não sabemos como ele responde ao SIGTERM.Tendo HDP 2.6.4 com Kafka 0.10.1 instalado, o script relatou
uma propriedade para executar como daemon usando a opção
-daemon
.Isso seria algo viável para você?