首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将参数传递给Linux守护进程/服务

问如何将参数传递给Linux守护进程/服务
EN

Stack Overflow用户
提问于 2012-07-05 06:03:50
回答 4查看 9.3K关注 0票数 6

我已经创建了一个Linux守护进程(用C语言),以便通过UDP将某些信息发送到另一台计算机。当然,它需要远程IP地址和端口号。我将这个守护进程存储在/usr/local/bin/中,还在/etc/init.d/中创建了一个脚本来启动|停止|重新启动该守护进程。

到目前为止,IP地址和端口号是通过脚本直接传递给守护进程的。例如,脚本的start()部分如下所示:

代码语言:javascript
复制
start() {
  /usr/local/bin/lvsload_udp_s 192.168.122.25 47239
}

因此,当远程IP和/或端口号发生变化时,我必须修改我的脚本,而不是修改一些配置文件。我知道,这是一种糟糕的做法。

将参数传递给我的守护进程的最佳方式是什么?谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-05 06:13:01

为什么你认为命令行参数不好?

配置文件是额外的工作,因为您需要解析它们。按照您的示例,修改配置文件=修改一个文件。修改脚本=修改一个文件。当你只有少量的参数时,似乎没有太大的区别。您甚至可以将参数放在脚本顶部的变量中,这使得它几乎就像一个配置文件:-)一些脚本甚至提供了这样的“变量设置脚本”,所以它看起来真的像一个配置文件。

如果你能找到命令行参数不好的原因,那么你也很有可能知道该用什么来代替。另一方面,如果你甚至不能解释为什么命令行参数不好,那么使用它们可能没有什么问题……

票数 6
EN

Stack Overflow用户

发布于 2012-07-05 06:08:27

Q:到目前为止,IP地址和端口号直接传递给守护进程...我知道,这是一种糟糕的做法。

你为什么认为这是“坏习惯”?

“良好做法”包括:

  • "DRY“(不要重复-将数据存储在一个且只有一个地方)
  • ”KISS“(保持简单,愚蠢)

我要说的是,一个脚本( init.d启动脚本)中的一个参数(命令行IP地址)很好地符合这两个原则:)

我的..。

PS:

如果你真的认为配置文件是合适的-如果有很多复杂的配置数据需要在启动时解析),那么有两个合适的地方:

  • 将配置文件存储在/etc中(将您的应用程序存储在/usr/local/bin中)

..。或者..

  • 将配置文件存储在应用程序的安装目录中(可能还会定义一个全局环境变量以指向安装目录)
票数 2
EN

Stack Overflow用户

发布于 2012-07-05 06:09:25

这是特定于发行版的。例如,在debian上,约定/etc/init.d/foo包含像"source /etc/default/foo“这样的行。该文件只包含环境变量,例如DAEMON_ARGS="--remote-ip=192.168.0.1“。

如果你使用debhelper构建一个debian包,它会自动为你创建这个结构。我相信也有类似的工具来创建“标准的”RPM。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11335860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档