我使用SSH连接到某台Mac机器,并运行类似于以下命令的命令:
nohup /var/root/install.sh param1 param2 </dev/null >/var/root/vvv.out 2>&1 & echo '' ; echo ERROR_CODE:$?
它似乎工作正常,但如果我在安装过程中closures会话,会话卡住,并使用ps命令可见。
同样的技巧似乎在Linux机器上成功运行。
有任何想法吗?
编辑 :环境细节7.9.0达尔文内核版本7.9.0:3月30日星期三20:11:17 PST 2005; root:xnu / xnu-517.12.7.obj〜1 / RELEASE_PPC Power Macintosh powerpc
难道这个版本太老了吗? 根据维基百科, powerpcs一直支持到2006年8月。
我想这是因为这个过程仍然是由控制terminal所拥有的,当它消失的时候,它会变得混乱。 如果你在远端使用bash ,你可以尝试添加一个叫做disown的调用来重置它。
我认为“shell builtin”nohup和程序nohup是有区别的。 希望你可以用ssh -n来代替简单的ssh。
我的MacBook已经有一段时间了,这就是为什么我只是猜测。 🙂
你是对的,它不能肯定会起作用。 我认为这可能与OS 10基于Unix的事实有关,而且它们不使用nohup的相同版本。 我不确定,但是我在SunOS 5.10上尝试了一下,并没有像在Linux上那样工作。
这引起了我的注意到一个可爱的程序称为屏幕。 我记得,在UNIX / Linux系统上,屏幕默认是可用的。
使用[CTRL] – A,然后按D跳出屏幕。 使用屏幕-r恢复会话。 如果您正在运行多个屏幕实例,则会自动查看每个屏幕实例的进程ID,您将不得不通过键入screen -r#process-id来指定进程。
提示:您可以通过调用screen -x同时在多个login名上运行相同的屏幕实例。这对于同一台计算机上的ssh或不同的terminal很有用。 如果您通过串行控制台插入了笔记本电脑,并且无法将笔记本计算机带到您的笔记本计算机上,则非常有用。 屏幕可以与串行设备交互..只要尝试屏幕/ dev / ttyS0或任何设备的名称是!
HF
在命令行末尾有一个回显,但是如果closures了terminal,回显应该在哪里? 回声在Linux上到底在哪里? 我会好奇的是,如果你在最后取消了回声,并将其作为testing运行,会发生什么。
您可以编写脚本,将输出redirect到电子邮件或文件。