Ubuntu的 – “屏幕”命令的exception行为

我试图发送到背景“bitcoind”。

$ screen bitcoind -daemon & [1] 5289 

然后我查询这个过程的PID和PID已经改变了

 $ ps -ef | grep bitcoin someuser 4003 1 14 16:16 ? 00:00:39 bitcoind -daemon someuser 5384 3648 0 16:20 pts/0 00:00:00 grep --color=auto bitcoin 

那我呢:

 $ screen -r There is no screen to be resumed. 

我试图让这个“bitcoind”程序的背景,但由于某种原因的PID cahnges,我认为这是导致屏幕无法正常工作。 有人能给我一些关于如何让这个过程到后台的线索,所以当我退出SSH会话时,bitcoind会继续运行吗?

我使用Ubuntu 12.04

最好的祝福,

我认为你的意思是这个bitcoind

让我们看看你在做什么:

  • 你正在启动一个通常会启动下面的程序的screen
  • 作为一个程序,你传递了bitcoind -daemon 。 这将在后台开始bitcoind (通常使用fork(2) )。
  • 你通过&screen发送到你的shell的背景。 您看到的PID是您的shell启动的PID,即screen的一个。

当您将-daemon bitcoind传递给bitcoind ,它已经转入后台。 由于screen没有可见的前景过程,因此已自行终止。 因此你根本看不到5289 PID,你的bitcoind过程有一个你没有想到的PID。

TL; DR:只需调用bitcoind -daemon ,它应该在后台进行。