在 Ubuntu 中创建 Shell 服务

在 Ubuntu 中创建 Shell 服务

我想创建一个服务,它接收来自 shell 脚本的输入并返回输出。

我应该从哪里开始,做什么?请给我一步一步的指导或参考。

谢谢。

答案1

我不确定您所说的“服务”是什么意思。您是指可以调用并在后台运行的东西吗?如果是这样,您的需求可能可以通过一个 Bash 脚本来满足,该脚本轮询文件以获取输入,在文件中找到输入时接受输入(大概是管道输入通过生成输入的 shell 脚本),然后通过您选择的任何机制输出。您​​可以使用语句将轮询包装在一个无限循环中sleep,并通过以下方式让脚本在后台连续运行:禁止手册页)。话虽如此,我不确定这是否足以满足您的目的,主要是因为我不确定您在问什么。所以让我们退后几步:

在 Unix 中,有很多方法可以编写守护进程/服务,如果您需要分步说明,您的问题应该更具体一些。一些好的起点可能是:您想用什么语言编写它?这项服务将接受哪些类型的输入?它将以什么形式输出什么,输出到哪里/为谁/什么接收者?在更高的层次上:你真的需要为此服务吗,或者你想要的是某种可以作为独立可执行文件运行的持久缓存数据处理器?后者通常是更好的选择,尤其是在从头开始时,因为您可以将许多快速顺序/同时调用问题外包给后端持久性提供程序(在我的想象中,类似于sqlite)。

如果你想用 Bash 来写(这可能不是最好的选择),我建议从这里。确保您完全理解 UNIX 进程分叉和监控的基础知识,否则编写执行任意功能的守护进程可能会成为一把相当大的“脚枪”。

正如我之前所说,Bash 不一定是这里的最佳选择。Perl 包含一个非常强大的内置工具来执行此操作,即 Proc::Daemon。这个问题如果您选择 Perl,应该会为您指明正确的方向。

Python 也具有这种能力。可以找到 Python 守护进程的典型示例,其中包含 double-fork 魔法和简要说明这里

C/C++ 也是编写守护进程的常用语言,而且有很多指南。我喜欢这个,但我在该领域的经验比上述其他语言更有限。

除了以上所有之外,这个问题可能属于堆栈溢出

答案2

如果你想写一个守护进程,而且你是一个 C 程序员,那么请获取一份Linux 编程接口:Linux 和 UNIX 系统编程手册;它有一整章的内容,非常有价值。

相关内容