现在该程序可以在linux终端上启动。一旦运行,您可以键入各种命令,程序将在机器上执行操作,直到用户退出。
我想将程序变成用户运行的服务,然后转到后台。然后用户应该能够向它发出命令。就像开始和停止一样,写一些东西到日志和我的程序所做的其他事情。请注意,我需要发送我的程序将处理的任意命令,而不仅仅是启动和停止。也许这意味着它不再是一个守护进程 - 我不知道。我该怎么做?
此外,如果这不是太难,我希望能够运行此服务的多个实例。但这不是必需的。
答案 0 :(得分:2)
为守护程序使用更复杂的命令通道,例如D-Bus或JSON-RPC,然后编写一个帮助程序,将在命令行传递给它的参数转换为D-Bus或JSON-RPC调用,然后显示返回的对象/结果。
答案 1 :(得分:1)
听起来你想要一个named pipe。用户可以将命令写入管道,并且您的守护程序可以从中读取。
编辑:如果您的程序已经从标准输入读取,那么您甚至不需要更改它。请参阅链接的维基百科文章中的gzip示例。
编辑2:要将其置于后台,您可以在Bash中执行常规program &
。如果您希望将它放在后台,那么您可以在Linux上使用daemon
函数。
答案 2 :(得分:1)
的Telnet? SSH?
客户端上的:ssh user@server command
答案 3 :(得分:1)
使用xinetd。
安装xinetd,并在/etc/xinetd.d中放置一个服务文件。 (ubuntu / debian here) 例如:
service yourprogram
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/yourprogram/executable
}
然后,编辑/ etc / services并添加:
yourprogram 1339/tcp
如果人们连接到端口1339,他们会得到一个在服务器行定义的该程序的新实例。
但是,要小心,因为它以root身份运行!确保您拥有良好的防火墙或对用户进行身份验证的方式,因为如果您的程序存在错误,您将在计算机上授予每个人root权限。