编写init.d脚本的最佳方式

我试图想出一个不错的init.d脚本来启动一个psgi应用程序,使用start_server和starman。 它需要具有以下功能:

  • 在RedHat上运行(即Debian的start-stop-daemon不可用)
  • 以另一个用户start_server运行start_server
  • 可维护。
  • 理想情况下,我想使用/etc/init.d/functions附带的内容为脚本提供任何ol'RedHat init.d脚本的外观和风格。

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

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

  • 你可以尝试跑步,这是另一位主管。 现在,使用这些东西中的一种似乎是一种好习惯。 在这里你可以阅读不同主管的比较。

    最佳实践:

  • 守护一个没有自带的程序--daemonize选项
  • 你不必守护程序,runit会照顾它。

  • 在另一个UID下运行守护进程。
  • 在这里你可以使用chpst


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


    以下是我们使用的init脚本:starman-init

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

  • 使用start_server支持正常重启
  • 作为非特权用户/组运行无人/无人运行
  • 使用/etc/init.d/functions
  • 请注意,它假设您为应用程序安装了本地Perl(例如plenv或perlbrew)。 你需要为你的环境定制。

    链接地址: http://www.djcxy.com/p/13163.html

    上一篇: Best way to write an init.d script for start

    下一篇: Haskell package missing c library