2012-02-26 72 views
8

猛砸工作:NOHUP不OSX

$nohup sleep 10 & 

但是当我关闭终端:

will exit warning

任何想法?理想情况下,我想在后台运行Mongodb。

+0

适合我这里 - 检查您的终端偏好? – 2012-02-26 05:43:17

回答

5

有趣。看起来像特定于默认终端应用的问题。因为它的价值,iTerm2不会出现这种行为。 (换句话说,nohup在OS X上实际上并没有被破坏;这看起来像终端中的特殊行为,它在退出时寻找子进程。)

在许多方面,iTerm2比默认终端更好。你应该试试看!

+0

你是对的,这是一个古怪的显示错误,我猜想苹果没有注意到它。 iTerm很有趣,感谢您的链接! – 2012-02-27 17:59:15

1

我在Snow Leopard上试过这个,弹出对话框并抱怨说它会杀死睡眠,但是当我通过ps -eaf检查睡眠仍在运行。

bill$ ps -eaf | grep sleep 
    501 11806  1 0 0:00.00 ??   0:00.01 sleep 1000 
    501 11811 2628 0 0:00.00 ttys001 0:00.00 grep sleep 
2

screen会话中运行它应该工作得很好。

1

我在OSX 10.8.5,并可以确认:

nohup base64 /dev/urandom &

基于Terminal.app,应用程序(如TotalTerminal)产卵过程中的shell会话下,不根据launchd,这将是预期的/相当于linux的行为。

另一方面,iTerm2.app能够在launchd下运行相同的命令,并在shell会话关闭后保持活动状态。它虽然实现了一些特殊的技巧:

─┬◆ 00001 root /sbin/launchd 
├─┬◆ 00245 albanj01 /sbin/launchd 
│ └─┬◆ 21533 albanj01 /Applications/iTerm.app/Contents/MacOS/iTerm2 -psn_0_94628409 
│ └─┬◆ 04684 albanj01 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server /Applications/iTerm.app/Contents/MacOS/iTerm2 --launch_shell 
│  └─┬◆ 04685 albanj01 -zsh 
│  └──◆ 04759 albanj01 base64 /dev/urandom 

我在我身边的同事已经尝试同样的事情在OSX 10.10.x和Terminal.app催生launchdnohup过程,这表明可能他们之间10.8固定它。 x-10.10.x。