[英]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.