为start_server和starman编写init.d脚本的最佳方法?

时间:2013-04-28 11:40:47

标签: perl shell redhat init

我正在尝试使用start_serverstarman创建一个启动psgi应用的漂亮的init.d脚本。它需要具备以下功能:

  • 在RedHat上运行(即Debian的start-stop-daemon不可用)
  • 以另一位用户身份运行start_server
  • 可维护。

理想情况下,我想使用/etc/init.d/functions附带的内容为脚本提供任何'RedHat init.d脚本的外观和感觉。

更具体地说,我正在寻找最佳实践:

  • 守护程序没有自己的--daemonize选项
  • 在另一个UID下运行守护程序。

3 个答案:

答案 0 :(得分:1)

你可以尝试runit,这是另一位主管。现在,使用其中一种似乎是一种好习惯。这里you could read对不同的主管进行比较。

最佳做法:

  
      
  • 守护程序没有自带的--daemonize选项
  •   

你不必守护程序,runit会处理它。

  
      
  • 在另一个UID下运行守护程序。
  •   

您可以使用chpst

答案 1 :(得分:1)

如果perl正在运行,那么使用Ubic怎么样?它是一个基于perl的管理程序,使LSB /etc/init.d/兼容性相当容易。我倾向于使用runit / daemontools / s6的方式(在单独的服务/目录中)但你有很大的灵活性。由于您可以在脚本中使用perl,因此有很多有趣的可能性。此外,Ubic为您提供可移植性,因为它可以在不同平台(BSD,Linux,Solaris,OS / X等)上以相同的方式工作。

答案 2 :(得分:1)

这是我们正在使用的初始化脚本: starman-init

它具有您提到的所有功能:

  • 使用start_server支持正常重启
  • 作为无特权的用户/组无人/无人
  • 运行
  • 使用/etc/init.d/functions

请注意,它假设您为应用程序安装了本地Perl(例如plenvperlbrew)。您需要根据您的环境对其进行自定义。