如何将常规程序作为守护进程/服务运行

如何将常规程序作为守护进程/服务运行

可能的重复:
如何关闭终端而不终止其中运行的命令?

我的服务器使用 Debian。

我刚刚安装了 MediaCore,效果很好。

现在我想让它始终启动,并想问一下,如何将其作为服务或在后台启动。

我知道如何启动,但是只要程序运行,shell 就毫无用处。

那么,当我运行服务/守护进程时,如何以静默方式运行它呢?

答案1

你有几个选择。

首先,您可以在屏幕中启动它screen,然后在启动后按 Ctrl-A 将其退出屏幕。您可以稍后使用 ; 重新连接到屏幕screen -RR {screen number}。您可以使用 找出屏幕编号screen -ls。 (如果您只有一个活动屏幕,则screen -RR只需重新连接即可)。

其次,您可以从 shell 启动它,并通过在&命令后附加 来将其置于后台。但是,您还希望将 stdout 和 stderr 重定向到适当的文件,以便 shell 不会将命令的输出散布在您的 shell 中。我认为像

$ command > command.stdout 2> command.stderr &

就是您正在寻找的。

我从未使用过 MediaCore,所以我不知道它输出什么。如果您只想将所有输出捕获到文件中,无论是来自 stdout 还是 stderr,这都可以

$ command &> command.output &

然而,从长远来看,由于您使用的是 Debian,正确的做法是为其添加一个初始化脚本(如 @user606723 提到的)。其中有一个skeleton脚本/etc/init.d将是一个很好的起点。

答案2

您可以使用“screen”运行程序或使用“hohup”与终端分离。

nohup my_app 2>/dev/null 2>&1 & 

或者

screen -d -m my_app 

相关内容