【发布时间】:2014-07-16 21:49:45
【问题描述】:
我有一个 bash 脚本,它可以在 Linux 和 Mac OS X 中运行。脚本的一个特定行在 Linux 中可以正常工作,但在 OS X 中却不行。
nohup <utility> <arg> > output.txt 2> error.txt </dev/null &
当 bash 脚本在 Linux 中运行时,它就像一个魅力。但是,在 OS X 中运行 bash 脚本,我得到了错误
nohup: can't detach from console: Inappropriate ioctl for device
我进行了大量搜索,但没有找到合适的答案来解释为什么会这样。
执行脚本在<utility> 之前很久就退出了,这就是为什么(据我所知)我需要使用nohup。但是,我已经进行了一些测试,从 bash 脚本的行中删除 nohup 似乎可以解决问题,因为两个系统上的实用程序都会启动,并且即使在脚本退出后也会继续运行。
【问题讨论】:
-
你是在普通终端运行脚本吗?
-
您是在
tmux或screen会话中运行它吗?这些与nohup交互时存在一个已知错误。补丁可用于修复错误。 -
@KristerAndersson 该脚本由STAF自动化执行。
-
@MarkPlotnick 没有 tmux 或屏幕会话
-
如果
STAF automation,如tmux和screen,调用daemon()从终端分离,运行nohup时可能会遇到同样的问题。 github.com/ChrisJohnsen/tmux-MacOSX-pasteboard 中描述了一种解决方法;编译reattach-to-user-namespace程序然后运行reattach-to-user-namespace nohup ...