我在 Ubuntu 14.04 上运行以下 init.d 脚本
# Logstash Service
description "Logstash"
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [016]
respawn limit 10 5
# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
console output
setuid tps
chdir /opt/logstash-1.4.2
env LS_HOME=/opt//logstash-1.4.2
env CONFIG_DIR=/opt/config/logstash
env JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64
env SINCEDB_DIR=/opt/config/logstash
env _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
exec $LS_HOME/bin/logstash -f $CONFIG_DIR -vvv | svlogd /opt/logs 2>&1
当我通过执行手动终止kill -9 <pid>
进程时,进程不会重生。有没有办法让它在终止后重生?
答案1
你没有让它重生。
正如新贵食谱说,
6.28
respawn
使用此节,每当主脚本/执行退出时,无需将作业的目标更改为停止,作业就会重新启动。
6.29
respawn limit
对,这就是不同的到一个简单的重生:指定
respawn limit
并不意味着respawn
。
换句话说,respawn
即使您有,也必须设置respawn limit
。
答案2
我认为您可以使用 inittab 文件来告诉它重生。
其中的条目如下所示:id:runlevels:action:process
重生可以被设置为动作之一。