如何使用Upstart正确启动延迟作业?

量子

当前脚本:

start on (net-device-up
          and local-filesystems
          and runlevel [2345]
          and started rsyslog)
stop on runlevel [!2345]

respawn

exec /usr/sbin/openvpn --config /etc/openvpn/devops/config

问题是如果由于某些原因启动失败:

Sep 24 01:55:07 p vpn-devops[5075]: Cannot load certificate file /etc/openvpn/devops/server.crt: error:02001002:system library:fopen:No such file or directory
: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Sep 24 01:55:07 p vpn-devops[5075]: Exiting

新贵仍然认为它已启动并立即以0状态退出。

我的第一次尝试:

post-start script
  for try in $(seq 9); do
    if [ nc -q0 -zu localhost 1194 ]; then
      exit 0
    fi
    sleep 1
  done
  exit 1
end script

我以为它将起作用,但实际上却没有。原因是退出代码被忽略post-start

我的第二次尝试:

expect fork
respawn

pre-start script
  /usr/sbin/openvpn --config /etc/openvpn/devops/config
  if [ $? -ne 0 ]; then
    exit 1
  fi
end script

script
  while kill -0 $(cat /var/run/openvpn/devops.pid); do
    sleep 1
  done
end script

现在,如果发生故障,退出状态是正确的:

start openvpn-devops
start: Job failed to start

echo $?
1

start在正常情况下会挂起(不返回shell提示),尽管pid跟踪正确:

status openvpn-devops
openvpn-devops start/pre-start, process 7565

cat /var/run/openvpn/devops.pid
7565

如果我使用同一件事发生了:

expect daemon
/usr/sbin/openvpn --config /etc/openvpn/devops/config --daemon

我的第三次尝试:

expect fork
exec /usr/sbin/openvpn --config /etc/openvpn/devops/config --daemon

然后start工作,但它跟踪错误的pid,因为派生的数量不正确:

start openvpn-devops
openvpn-devops start/running, process 7720

status openvpn-devops
openvpn-devops start/running, process 7720

cat /var/run/openvpn/devops.pid
7715

ps -ef | grep vpn
nobody    7715     1  0 02:41 ?        00:00:00 /usr/sbin/openvpn --config /etc/openvpn/devops/config --daemon

我做错什么了?

法瓦第

当前的脚本是正确的,它可以执行该操作。

第二个脚本永远挂起,因为/usr/sbin/openvpn --config /etc/openvpn/devops/config永远不会退出,它在前台运行。

第三个脚本也会挂起,但是因为openvpn --daemon只有一次分叉。

expect daemon /usr/sbin/openvpn --config /etc/openvpn/devops/config --daemon

expect fork如果配置文件正确则将其更改为可以工作。如果配置文件错误,则openvpn不会派生,因此将无法正常工作。

TL; DR:只需坚持使用当前脚本即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用upstart正确启动gradle生成的脚本?

来自分类Dev

如何设置Upstart作业以手动启动?

来自分类Dev

如何使用Upstart配置启动服务?

来自分类Dev

如何使用Upstart配置启动服务?

来自分类Dev

如何自动运行Upstart会话作业?

来自分类常见问题

如何查看延迟的作业队列?

来自分类Dev

如何在upstart中正确启动节点服务器,以使apn正常工作

来自分类Dev

如何在upstart中正确启动节点服务器,以使apn正常工作

来自分类Dev

Upstart作业两次启动脚本

来自分类Dev

如何延迟功能的启动

来自分类Dev

如何在18.04中避免5分钟的启动延迟:“正在运行Raise网络接口的启动作业”

来自分类Dev

如何使用ubuntu的UPSTART功能重新启动python脚本而不以root用户身份启动?

来自分类Dev

如何确保一个Upstart作业先于其他Upstart作业开始?

来自分类Dev

如何确保一个Upstart作业先于其他Upstart作业开始?

来自分类Dev

如何使用 Python 代码启动数据流作业

来自分类Dev

如何检查延迟的作业是否真的在重试

来自分类Dev

如何处理延迟作业的循环

来自分类Dev

使用UPSTART失败一秒钟后,如何重新启动python脚本?

来自分类Dev

使用UPSTART失败一秒钟后,如何重新启动python脚本?

来自分类Dev

使用UPSTART失败一秒钟后,如何重新启动python脚本?

来自分类Dev

如何在Upstart中启用用户作业

来自分类Dev

如何从CloudFormation启动胶水作业?

来自分类Dev

如何从CloudFormation启动胶水作业?

来自分类Dev

如何创建延迟启动命令

来自分类Dev

如何延迟接近警报启动?

来自分类Dev

如何延迟 VMware 工具的启动?

来自分类Dev

为什么Upstart作业使用`start on runlevel [2345]`?

来自分类Dev

并行运行许多作业时Kubernetes作业状态更新出现延迟-如何缩放正确的k8s组件?

来自分类Dev

如何使用AWS服务(而非EC2)运行延迟或计划的作业?

Related 相关文章

  1. 1

    如何使用upstart正确启动gradle生成的脚本?

  2. 2

    如何设置Upstart作业以手动启动?

  3. 3

    如何使用Upstart配置启动服务?

  4. 4

    如何使用Upstart配置启动服务?

  5. 5

    如何自动运行Upstart会话作业?

  6. 6

    如何查看延迟的作业队列?

  7. 7

    如何在upstart中正确启动节点服务器,以使apn正常工作

  8. 8

    如何在upstart中正确启动节点服务器,以使apn正常工作

  9. 9

    Upstart作业两次启动脚本

  10. 10

    如何延迟功能的启动

  11. 11

    如何在18.04中避免5分钟的启动延迟:“正在运行Raise网络接口的启动作业”

  12. 12

    如何使用ubuntu的UPSTART功能重新启动python脚本而不以root用户身份启动?

  13. 13

    如何确保一个Upstart作业先于其他Upstart作业开始?

  14. 14

    如何确保一个Upstart作业先于其他Upstart作业开始?

  15. 15

    如何使用 Python 代码启动数据流作业

  16. 16

    如何检查延迟的作业是否真的在重试

  17. 17

    如何处理延迟作业的循环

  18. 18

    使用UPSTART失败一秒钟后,如何重新启动python脚本?

  19. 19

    使用UPSTART失败一秒钟后,如何重新启动python脚本?

  20. 20

    使用UPSTART失败一秒钟后,如何重新启动python脚本?

  21. 21

    如何在Upstart中启用用户作业

  22. 22

    如何从CloudFormation启动胶水作业?

  23. 23

    如何从CloudFormation启动胶水作业?

  24. 24

    如何创建延迟启动命令

  25. 25

    如何延迟接近警报启动?

  26. 26

    如何延迟 VMware 工具的启动?

  27. 27

    为什么Upstart作业使用`start on runlevel [2345]`?

  28. 28

    并行运行许多作业时Kubernetes作业状态更新出现延迟-如何缩放正确的k8s组件?

  29. 29

    如何使用AWS服务(而非EC2)运行延迟或计划的作业?

热门标签

归档