可能的重复:
如何关闭终端而不终止其中运行的命令?
我的服务器使用 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