繁体   English   中英

Nohup 在 OSX 中不起作用

[英]Nohup does not work in OSX

重击:

$nohup sleep 10 &

但是当我关闭终端时:

将退出警告

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

有趣的。 似乎是默认终端应用程序特有的问题。 因为就其价值而言, iTerm2不会表现出这种行为。 (所以换句话说, nohup在 OS X 上实际上并没有被破坏;这似乎是终端中的特殊行为,它在退出时寻找子进程。)

在很多方面,iTerm2 都比默认终端好。 你应该试一试!

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

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

我在 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 在launchd下产生了nohup进程,这表明他们可能已经在 10.8.x-10.10.x 之间修复了它。

screen会话中运行它应该可以正常工作。

使用 tmux

brew install tmux

tmux

使用“tee”命令将输出存储到txt

python hello.py | tee -a ~/Downloads/output.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM