在Linux下编写/配置应用程序的 正确方法是什么?它始终运行并提供外部请求(TCP,数据库,文件系统,任何类型)。
我特意不要调用这个守护进程,因为它可能意味着我不想在Linux环境中使用它。
我已经阅读了多个主题,包括:
best way to write a linux daemon
Best practice to run Linux service as a different user
但是没有一个能够充分比较使用哪种方法。
我看到以下选项:
但是他们中哪一个 的方式去了。或者,如果它们都可以使用,那么Linux中守护进程的构成是什么?
我正在寻找相当于在Windows下运行应用程序的服务(任何.exe都可以自动生成,作为使用 sc 的服务运行。)
我的要求如下:
我是该应用程序的作者,但不希望改变它以处理守护进程。
我的猜测是编写自定义init.d脚本,然后从/etc/init.d/functions调用daemon()函数。我是对的吗?
答案 0 :(得分:6)
RHEL7使用 systemd 作为其初始化系统,它将满足您的大部分要求。您应该为您的守护程序编写一个systemd unit file(在systemd用语中称为service)。然后它可以:
systemctl enable yourservice
。User
键。service start
进行控制:是,或通过systemctl start
。Restart
键(例如,on-failure
或always
)。journalctl
查看和/或写入syslog。在现代init系统下运行时,您的应用程序不需要(也不应该)守护自身。这不仅适用于systemd,也适用于暴发户,以及runit,daemontools,supervisord和其他大多数主管。守护进程有点挑剔,容易出错。只需按照惯例编写应用程序,然后让init系统完成它的工作。
答案 1 :(得分:2)
如果我理解正确,特别是关于RHEL 7要求,Systemd Unit is your friend。如果是您因任何原因尝试或丢弃的内容,请进一步详细说明。