什么是在Linux下编写/配置应用程序的正确方式,该应用程序一直运行并为外部请求(TCP,数据库,文件系统及其任何类型)提供服务。编写一个linux守护进程
我特别不会调用这个守护进程,因为这可能意味着我不希望它在Linux环境中。
我已经看过多个主题,其中包括:
best way to write a linux daemon
Best practice to run Linux service as a different user
但他们没有给出关于要使用的方法全面的比较。
我看到以下选项:
- 其中叉书面申请,要求setpid,umask的,等等。但这 需要应用本身进行许多步骤; (由init.d中自动启动 ?)
- 使用守护进程()的init.d函数执行大部分的这些步骤你(但它移植到所有/许多Linux发行版)
- 与&和信任正在运行的应用它在后台运行
但是,其中哪一个是的的方式去。或者,如果他们都可以使用,Linux中的守护进程是什么?
我正在寻找一个相当于正在运行的应用程序作为windows下的服务(并且任何.exe可以自动作为使用sc的服务运行)。
我的要求如下:开机后
- 启动(自动)
- 运行作为具体用户(不是root)
- 访问整个文件系统(/),但创建/修改文件作为运行应用程序的用户
- 可以通过控制服务启动,服务站
- 可能会自动崩溃后重新启动或杀死
- 可以写入到系统日志RHEL7 下
- 运行
我的应用程序的作者,但宁愿不改变它来处理守护进程。
我的猜测是编写自定义的init.d脚本,然后调用/etc/init.d/functions中的daemon()函数。我对吗?
我认为它,但我试图找到更便携的方式,特别是在不同的Linux发行版之间。 – Mios
@Mios您的一个需求是在RHEL7下运行,而不是其他Linux发行版。 – CDahn
我绝对不想陷入SystemD的火焰战中,但是......你们之后有哪些发行版?有[许多不Systemd(http://without-systemd.org/wiki/index.php/Main_Page#Free.2FOpen_Source_Operating_systems_without_systemd_in_the_default_installation),但是如果你不指望BSD和嵌入式老,有没有剩下多少有。即使是Debian [继续](http://arstechnica.com/information-technology/2015/05/debian-8-linuxs-most-reliable-distro-makes-its-biggest-change-since-1993/)到SystemD 。 –