скрипт upstart для logstash, записывающий файл pid, который имеет дело с форком

Я использую пример сценария upstart для logstash, но у меня возникают проблемы запись файла pid для использования monit в /var/run/logstash.pid

Когда я использую «echo $$ > /var/run/logstash.pid», он записывает в файл неправильное значение pid, я думаю, что это часто значение перед разветвлением. Есть ли этому решение?

# logstash - agent instance
#

description     "logstash agent instance"

start on virtual-filesystems
stop on runlevel [06]

# Respawn it if the process exits
respawn
respawn limit 5 30
limit nofile 65550 65550
expect fork

# You need to chdir somewhere writable because logstash needs to unpack a few
# temporary files on startup.
chdir /home/logstash

script
  # This runs logstash agent as the 'logstash' user
  echo $$ > /var/run/logstash.pid
  su -s /bin/sh -c 'exec "$0" "$@"' logstash -- /usr/bin/java -jar logstash.jar agent -f /etc/logstash/agent.conf --log /var/log/logstash.log &
  emit logstash-agent-running
end script

person henry.oswald    schedule 21.07.2013    source источник
comment
Я не уверен, почему вы считаете, что вам нужен файл PID для демона, управляемого Upstart, но как насчет использования start-stop-daemon, как описано в stackoverflow.com/questions/9972023/?   -  person Magnus Bäck    schedule 11.01.2015